select view1 locate for keyfield = key value if !found() append blank replace keyfield with key value, field1 with ..... if !tableupdate(0,.t.,"view1") tablerevert(.f.,"view1") return .f. endif endif *!* record was inserted and updated *** *!* same result in access with tableupdate(t,.t.,"view1") > ... process about 25 - 50 lines of code > *!* get the record just inserted from table1 m.keyfield = key value if used("view2") if view2.keyfield != key value =requery("view2") endif else select 0 use view2 alias view2 endif if reccount("view2") > 0 *!* Record just inserted into view1 was found - *!* Gets to here if VFP, SQL Server or Oracle *!* gets to here if access and inkey(.5) is inserted after tableupdate() .... further processing return .t. else *!* record not found in table1 even though tableupdate returned .t. *!* get this result if access unless I put inkey(.5) after table update above *!* Record just inserted into view1 was NOT found - return .f. endifThis appears to be caused by buffered update and the Access odbc driver. I have tried changing settings on the access ODBC connection, used tableupdate(1,.t.), tried flush, even tried closing the view2 and reopening it before requery. This only seems to work if the process of closing the second view causes a delay of .5 seconds. Closing the updated view or adding a .5 second delay after any change is the only way that I have been able to consistently get the second view to see the updated ACCESS records. Either case causes about a .5 second delay. I can conditionally add a wait state by checking if it is using an access driver but this really kills performance when using ACCESS database.