>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 cATest >>This code always stops on ASSERT with "Microsoft Cursor Engine : Multiple-step operation generated errors. Check each status value."
LOCAL oca AS CursorAdapter CLEAR SET ASSERTS ON CLOSE TABLES ALL ******************** CREATE TABLE c:\test.dbf FREE (testval C(10)) && N,I,V,... all fails APPEND BLANK replace testval WITH '1234' USE set multilocks on oca=createobject("cursoradapter") OCA.BreakOnError = .T. oca.datasourcetype="ADO" oca.alias="catest" * why the cursorSchema is necessary ????????? oca.cursorschema="TESTVAL C(10)" oca.selectcmd="Select * From C:\test.DBF" && FULL PATH change the error message 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 IF oca.cursorfill(.t.) SELECT catest * APPEND BLANK replace testval WITH '1' IF NOT TABLEUPDATE(1) =AERROR(amessage) ? "Error ",amessage(1) , " !!!!!!! On HELP The message is XML Parse Error " ? "Message ",amessage(2) ENDIF =TABLEREVERT(.T.) ELSE IF AERROR(amessage)>0 ? "Error ",amessage(1) ? "Message ",amessage(2) ENDIF ENDIF OCA.CursorDetach CLEAR ALLIt probably misses something.