Hmmm... thats weird, but it could be because that message is a Level 19 which is not fatal. Also could be that you sent TWO sql statements, one didn't fail. So, you may want to sent the Delete first, if that doesn't fail, send the insert, if that doesn't fail, do your commit.
Also, even if you had this set to auto transactions I believe both statements are considered a batch and WOULD be included in the same transaction anyway. (But, I could be wrong about this.)
BOb
>I am using SPT as follows:
>
>
>SQLSETPROP(nhandle,'TRANSACTIONS',2)
>SQLSETPROP(nHandle,'Asynchronous',.T.)
>
>lcCmd = "A delete followed by an insert to update a data record"
>
>lnSuccess = 0
>DO WHILE lnSuccess = 0
> lnSuccess = SQLEXEC(nHandle,lcCmd,'SQLResults')
>ENDDO
>
>IF lnSuccess < 1
> SQLROLLBACK(nHandle)
>ELSE
> SQLCOMMIT(nHandle)
>ENDIF
>
>SQLSETPROP(nhandle,'TRANSACTIONS',1)
>
>
>My problem is that even though an error is encountered by the SQL insert command, lnSuccess returns 1. The error is that one string that I am attempting to save is longer than the field. The Query Analyzer reports the error when I issue the SQL Commands there. Since lnSuccess is 1, I commit the transaction but the insert has failed.
>
>From Query Analyzer:
>
>Server: Msg 8152, Level 16, State 9, Line 1
>String or binary data would be truncated.
>The statement has been terminated.
>
>
>Does anyone understand why this is happening?