nAutoRefreshConn=SQLSTRINGCONNECT("DRIVER=SQL Server;SERVER=(local);Trusted_Connection=Yes;DataBase=TestDB") IF nAutoRefreshConn > 0 oCA=CREATEOBJECT("CA_SCOPE_IDENTITY") oCA.DataSource = nAutoRefreshConn IF oCA.CursorFill(.t.) BROWSE NORMAL IF TABLEUPDATE(1, .t.) BROWSE NORMAL ELSE AERROR(aaa) MessageBox(aaa[2]) ENDIF ELSE AERROR(aaa) MessageBox(aaa[2]) ENDIF ENDIF DEFINE CLASS CA_SCOPE_IDENTITY AS CursorAdapter DataSourceType = [ODBC] Alias = "cTest" BufferModeOverride = 5 SelectCmd = "select * from TestTable" CursorSchema="Id I, name Varchar(20)" UseCursorSchema= .T. Tables = "TestTable" UpdatableFieldList="name" UpdateNameList="Id TestTable.Id, name TestTable.Name" KeyFieldList="Id" AutoUpdate = "Id" 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) ENDIF ? ? PROGRAM() ? "cInsertCmd=",cInsertCmd ENDPROC ENDDEFINEIn SQL Server:
CREATE DATABASE TestDB GO USE TestDB GO CREATE TABLE TestTable (Id int IDENTITY(1,1), Name varchar(20)) GO create procedure Get_ValHelper ( @in Int, @out int OUTPUT ) AS BEGIN SET NOCOUNT ON SET @out = @in END GO