Hi, Bonnie-
You are using buffering by virtue of the pessimistic buffering, so you *have* to use either a tableupate or a tablerevert. Also, the buffering is a totally separate issue from transactions.
You might want to clear the transaction out of the mix at this point--especially if you are only updating one table or if updates in one table don't depend on another tables updates.
In any case, transaction code might look something like this:
BEGIN TRANSACTION
IF TABLEUPDATE(.T.,.T.,'cMyTable')
END TRANSACTION
ELSE
ROLLBACK
TABLEREVERT( .T., 'cMyTable' )
ENDIF
If your code in your cancel isn't too long, would it make sense to post the relevant part of it?
>1) Well, there is a grid on the form, but the table in question is not bound to it.
>
>2) Haven't tried saving instead of canceling (didn't want to put a lotta records on the tables). I'll check it out.
>
>3) I'm using transactions (and I already know I'm doing it wrong at this point, if I get a chance I'll change it) and so I'm doing a ROLLBACK. I didn't think to try that from the command window after the program suspends with the error. I'll check it out.
>
>4) I'm using default datasessions.