local lnHandle lnHandle=SQLStringConnect('DRIVER=SQL Server;SERVER=??????;Trusted_connection=Yes') ? SQLSETPROP(lnHandle,"Transactions",2) ? SQLEXEC(lnHandle, "USE pubs") ? SQLEXEC(lnHandle, "CREATE TABLE Test (Tx VARCHAR(20))") ? SQLEXEC(lnHandle, "INSERT Test (Tx) VALUES ('scrittura')") * simulation of bug, MY PROGRAM EXIT QUIT ? SQLROLLBACK(lnHandle) ? SQLDISCONNECT(lnHandle)the sequence on MSSQL is:
> mssql commands > -- SQLSETPROP(lnHandle,"Transactions",2) > set implicit_transactions on > -- SQLEXEC(lnHandle, "USE pubs") * USE pubs > -- SQLEXEC(lnHandle, "CREATE TABLE Test (Tx VARCHAR(20))") * CREATE TABLE Test (Tx VARCHAR(20)) > -- SQLEXEC(lnHandle, "INSERT Test (Tx) VALUES ('scrittura')") * INSERT Test (Tx) VALUES ('scrittura') > -- event QUIT VFP * IF @@TRANCOUNT > 0 COMMIT TRAN -- you have a autocommit !!!!!open pubs, Test table exist with a record inserted !
IF @@TRANCOUNT > 0 ROLLBACKUntil VFP send IF @@TRANCOUNT > 0 COMMIT TRAN i need to use
SQLEXEC(lnHandle, "BEGIN TRAN")for increment @@TRANCOUNT .