>> oCA=CREATEOBJECT("CA_SCOPE_IDENTITY") >> BROWSE NORMAL >> IF TABLEUPDATE(1, .t.) >> BROWSE NORMAL >> ELSE >> AERROR(aaa) >> MessageBox(aaa[2]) >> ENDIF >> >> >>DEFINE CLASS CA_SCOPE_IDENTITY AS CursorAdapter >> DataSourceType = [ADO] >> Alias = "cTest" >> BufferModeOverride = 5 >> SelectCmd = "select * from TestTable" >>******* CursorSchema="Id I, name Varchar(20)" >>******* UseCursorSchema= .T. >> Tables = "Dostav" >> UpdatableFieldList="name, BulStat, Address" >> UpdateNameList="Id TestTable.Id, name TestTable.Name" >> KeyFieldList="Id" >> AutoUpdate = "Id" >> >> PROCEDURE Init >> LOCAL nAutoRefreshConn AS ADODB.Connection >> nAutoRefreshConn=CREATEOBJECT([ADODB.Connection]) >> nAutoRefreshConn.ConnectionString = [Provider=SQLNCLI;Server=(local);Database=TestDB;Trusted_Connection=yes;] >> nAutoRefreshConn.Open() >> >> nCommand =CREATEOBJECT([ADODB.Command]) >> nCommand.ActiveConnection = nAutoRefreshConn >> nRS =CREATEOBJECT([ADODB.RecordSet]) >> nRS.ActiveConnection = nAutoRefreshConn >> this.DataSource = nRS >> >> this.UpdateCmdDataSourceType = [ADO] >> this.InsertCmdDataSourceType = [ADO] >> this.DeleteCmdDataSourceType = [ADO] >> >> this.UpdateCmdDataSource = nCommand >> this.InsertCmdDataSource = nCommand >> this.DeleteCmdDataSource = nCommand >> >>******* IF NOT this.CursorFill(.t.,.f.,0, nCommand) >> IF NOT this.CursorFill(.f.,.f.,0, nCommand) >> AERROR(aaa) >> MessageBox(aaa[2]) >> ENDIF >> ENDPROC >> >> >> PROCEDURE BeforeInsert(cFldState, lForce, cInsertCmd) >> >> IF LEN(ALLTRIM(this.AutoUpdate))>0 >> cInsertCmd = cInsertCmd + ; >> "; DECLARE @id int; SELECT @id = SCOPE_IDENTITY()" + ; >> "; EXEC Get_ValHelper @id, ?@" + ; >> this.Alias + "." + ALLTRIM(this.AutoUpdate)+ " OUTPUT" && In ADO the OUTPUT here is mandatory. >> ENDIF >> ENDPROC >>ENDDEFINE >>>>But better work with CursorSchema