> 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 > >One thing that I would like is NOT to have to populate the CursorSchema property. Is it possible? What would I need to change in your example to make it work without CursorSchema?