LOCAL oca AS CursorAdapter SET ASSERTS ON ******************** IF EMPTY(SYS(2000,"c:\test.dbf")) CREATE TABLE c:\test.dbf (testval C(10) NOCPTRANS) APPEND BLANK USE endif set multilocks on oca=createobject("cursoradapter") oca.alias="catest" oca.buffermodeoverride=5 oca.cursorschema="TESTVAL C(10)" oca.datasourcetype="ADO" *oca.mapbinary=.T. oca.selectcmd="Select * From test" oca.tables="test" oca.SendUpdates = .t. oca.updatablefieldlist="TESTVAL" oca.updatenamelist="TESTVAL test.TESTVAL" oca.keyfieldlist="TESTVAL" loConnDataSource = createobject('ADODB.Connection') loConnDataSource.ConnectionString = [Provider=VFPOLEDB.1;Data Source=c:\test.DBF;Password="";Collating Sequence=MACHINE;] loConnDataSource.Open() oca.DataSource = createobject('ADODB.RecordSet') oca.DataSource.CursorLocation = 3 && adUseClient oca.DataSource.LockType = 3 && adLockOptimistic oca.DataSource.ActiveConnection = loConnDataSource oca.cursorfill(.t.) SELECT catest **INSERT INTO CaTest VALUES ("Test") ***GO BOTTOM replace testval WITH TRANSFORM(RECNO()) IF TABLEUPDATE(1) ELSE ASSERT .f. =AERROR(amessage) =MESSAGEbox(amessage(2)) ENDIF USE IN cATestThis code always stops on ASSERT with "Microsoft Cursor Engine : Multiple-step operation generated errors. Check each status value."