Subject Re: [firebird-support] Deleting rows problem
Author Helen Borrie
At 05:13 PM 21/12/2009, you wrote:
>Hi,
>
>I am using VB6.
>
>cn.open DSN,UID,PWD
>cn.BeginTrans
>cn.Execute "DELETE FROM tTABLE_D"
>cn.Execute "DELETE FROM tMASTER_D"
>cn.CommitTrans
>cn.close
>
>After I execute this statement, I still able to see the data.
>But when I quit the software, re-Run and view Report, No data was
>found.
>
>Is there something wrong with my SQL statement? Why the DMLs were
>not affect my data UNTIL the software quit.
>I am using Firebird 2.1.

It's not true. Your current transaction can "see" the changes, even before you commit them. But your client-side record set is an image of the table *before* you executed the DML. The server doesn't send output unless the client asks for it. You will need to refresh the recordset (probably just a basic "close" and "open" with ODBC) to see what it looks like after posting and committing DML changes.

If you are watching the contents of the table in another transaction, e.g. in an SQL interface program like IBExpert, then you will need to commit the transaction that is showing you the old set and start a new one to look at the latest view of the set. Most tools that display output sets have a "commit" button and a "refresh" button.

./heLen