Subject Re: [firebird-support] Re: Records updated still in memory after ClientDataSet.ApplyUpdate(0)
Author Helen Borrie
At 09:24 AM 10/11/2003 +0000, you wrote:
>Do I have to embrace the transaction with something like
>
>ADOconnection1.beginTrans and
>
>ADOConnection1.commitTrans?

this isn't a Delphi forum..but I'll just comment that I expect that the
Provider internally requests the transaction to be started if it is not
started.


>If you say that Firebird has TRANSACTION!

It does. Firebird does everything inside client-to-server transactions
that isolate one user's view of the database from another's. This isn't
MySQL, Paradox, etc., it's client/server computing, designed for multiple
concurrent users.

The ClientDataset separates the data from their transaction context for the
period that the user works with them. When you call ApplyUpdates, it puts
the cache back in touch with the transaction. ApplyUpdates means different
things in different RDBMS. In Firebird, it posts changes to the database
but it doesn't commit the changes. To do that, you need to call
CommitUpdates (to commit the work) or CancelUpdates (to roll it back).

Study the Delphi help on these methods. It does give a reasonable
explanation, in a generic sort of way, of what goes on beneath the user
interface in transactional RDBMS. It is off-topic here...

heLen