Subject FB, Delphi 7, IB components and transactions
Author Diego Barros
Hi all,

I am a newbie when it comes to transactions, so please excuse my ignorance when it comes to transactions.

I am using FB 1.5.2, with Delphi 7 and the IB components. My question is, why when I insert a record into a table don't I see it in another running program?

I have a small test application with a query which selects a count of records from a table. On a form I show this number when I click the Refresh button. I have another button which inserts a new record into the table. So my form has the following components:

IBQuery1 - which does a SELECT COUNT(*) on the table
IBQuery2 - which inserts a record
IBDatabase - used by both queries
IBTransaction - used by the IBQuery1, IBQuery2 and IBDatabase components

When I click the Refresh button I execute the following code:


When I click the Insert button I execute the following code:


I then run two copies of this test program. I insert a record in one instance of the program, click refresh and I see the record count increase. I click Refresh on the other instance of the application and the count does not change.

Can this behavior be changed? I changed the transaction component to be read-commited, but that did not change the behavior. Maybe this is all about a different mindset and how one works with IB/FB? Are there any articles which talk about this? Maybe I need to try other components which work differently from a programming point of view?

Any help or tips would be greatly appreciated by the FB newbie.