(loConn is a valid open Oracle connection) loCursorAdapter=CREATEOBJECT("CursorAdapter") lcSql="SELECT * FROM test ORDER BY testid" lcSqlUpdate="test_updateline4(?teststring)" WITH loCursorAdapter .Alias="adapter" .DataSourceType="ADO" .DataSource=CREATEOBJECT("ADODB.RecordSet") .UpdateCmdDataSourceType="ADO" .UpdateCmd=lcSqlUpdate .DataSource.ActiveConnection=loConn ENDWITH SET MULTILOCKS ON loCommand=CREATEOBJECT("ADODB.Command") WITH loCommand .CommandText=lcSql .CommandType=1 .ActiveConnection=loConn ENDWITH loUpdateCommand=CREATEOBJECT("ADODB.Command") WITH loUpdateCommand .CommandType=4 .ActiveConnection=loConn ENDWITH loCursorAdapter.UpdateCmdDataSource=loUpdateCommand loRecordSet=CREATEOBJECT("ADODB.RecordSet") WITH loRecordSet .CursorLocation=3 .CursorType=3 .LockType=4 .Source=loCommand .Open() ENDWITH THIS.oCursorAdapter.DataSource.ActiveConnection=THIS.oConnection loCursorAdapter.CursorFill(.F.,.F.,0,loRecordSet) SCAN message1=TYPE("testid") ? message1 message2=STR(testid) ? message2 ENDSCAN LOCATE FOR testid=3 REPLACE teststring WITH "test5" IF TABLEUPDATE(.T.) ? "TABLEUPDATE" ? _TALLY ? teststring ELSE result=TABLEREVERT(.T.) ? "TABLEREVERT" ? result SET PROCEDURE TO error.prg show_aerror() ENDIF USE loRecordSet.Close() loConn.Close()