************************************** CLOSE DATABASES all SQLDISCONNECT(0) CLEAR SET MULTILOCKS ON LOCAL nAutoRefreshConn as Integer * Change connection string to connect to any available SQL Server nAutoRefreshConn=SQLSTRINGCONNECT("DRIVER=SQL Server;SERVER=(local);Trusted_Connection=Yes;") IF (nAutoRefreshConn <1) ? "Failed to connect!" AERROR(aerrs) DISPLAY MEMORY LIKE aerrs return ENDIF TEXT TO cSQL NOSHOW CREATE TABLE #CAAutoRefreshDemo ( f_IDENTITY int NOT NULL IDENTITY PRIMARY KEY, f1 int NOT NULL UNIQUE, f_TIMESTAMP timestamp ) ENDTEXT IF SQLEXEC(nAutoRefreshConn ,cSQL)!=1 ? "Failed to create demo table!" AERROR(aerrs) DISPLAY MEMORY LIKE aerrs ENDIF LOCAL oCA as CursorAdapter oCA=CREATEOBJECT("CA_SCOPE_IDENTITY") oCA.Alias = "CATest" oCA.BufferModeOverride= 5 oCA.DataSource= nAutoRefreshConn oCA.DataSourceType="ODBC" oCA.SelectCmd="select * from #CAAutoRefreshDemo" oCA.CursorSchema="f_IDENTITY I, f1 I, f_TIMESTAMP Q(8)" oCA.UseCursorSchema= .T. oCA.Tables="#CAAutoRefreshDemo" oCA.UpdatableFieldList="f1" oCA.UpdateNameList="f1 #CAAutoRefreshDemo.f1, f_TIMESTAMP #CAAutoRefreshDemo.f_TIMESTAMP, f_IDENTITY #CAAutoRefreshDemo.f_IDENTITY" oCA.KeyFieldList="f_IDENTITY" oCA.CursorFill() oCA.IDENTITY_Field="f_IDENTITY" oCA.RefreshTimestamp= .F. && just for demo purposes will include f_TIMESTAMP into InsertCmdRefreshFieldList oCA.InsertCmdRefreshFieldList="f_TIMESTAMP " INSERT INTO CATest (f1) VALUES (100) INSERT INTO CATest (f1) VALUES (200) INSERT INTO CATest (f1) VALUES (300) INSERT INTO CATest (f1) VALUES (400) INSERT INTO CATest (f1) VALUES (500) INSERT INTO CATest (f1) VALUES (600) INSERT INTO CATest (f1) VALUES (700) INSERT INTO CATest (f1) VALUES (800) INSERT INTO CATest (f1) VALUES (900) IF !TABLEUPDATE(.T.) ? "TABLEUPDATE is failed!" AERROR(aerrs) DISPLAY MEMORY LIKE aerrs ELSE LIST ENDIF TABLEREVERT(.T.) SQLDISCONNECT(0) RETURN DEFINE CLASS CA_SCOPE_IDENTITY AS CursorAdapter IDENTITY_Field="" PROCEDURE DataSource_ASSIGN LPARAMETERS tAssign this.DataSource = tAssign TRY SQLEXEC(this.DataSource, ; "create procedure #Get_ValHelper @in Int, @out int OUTPUT " + ; "AS SET NOCOUNT ON " + ; "SELECT @out=@in") CATCH ENDTRY ENDPROC PROCEDURE BeforeInsert LPARAMETERS cFldState, lForce, cInsertCmd IF LEN(ALLTRIM(this.IDENTITY_Field))>0 cInsertCmd = cInsertCmd + ; "; DECLARE @id int; SELECT @id = SCOPE_IDENTITY()" + ; "; EXEC #Get_ValHelper @id, ?@" + ; this.Alias + "." + ALLTRIM(this.IDENTITY_Field) ENDIF ? ? PROGRAM() ? "cInsertCmd=",cInsertCmd ENDPROC ENDDEFINE ********************************Thanks,