*-- There are two cursors (for the sake of demo) working in this procedure c_table1 and c_table2 *-- This one is for VFP database BEGIN TRANSACTION if lSqlServer *-- This one is for SQL Server database nRetVal = SQLSETPROP( oApp.conn_handle, "transactions", 2) endif lok = tableupdate( 0, .T., c_table1 ) if !lOk aerror( aErrorInfo ) *-- store error description is some properties endif if lok lok = tableupdate( 0, .T., c_table1 ) if !lOk aerror( aErrorInfo ) *-- store error description is some properties endif endif *-- Roll back changes if one of the tableupdates fails if !lOk *-- Roll back changes to the cursors ROLLBACK tablerevert(.T., c_table1 ) tablerevert(.T., c_table2 ) if lSqlServer *-- Roll back changes to the SQL tables SQLROLLBACK(oApp.conn_handle) endif else *-- Commit changes for VFP data END TRANSACTION if lSqlServer *-- Commit changes for SQL Server database SQLCOMMIT ( oApp.conn_handle ) endif endifDo you see any problem(s) with above code?