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) 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