RUBI runs reliably on server JLD1, with all default Firebird .conf settings, so, what I'm about to tell you has take that into account.
RUBI needs to display about 20 grids at the same time, all populated with different data from different tables, each with an attached "form" (DBEdits) that allow data to be edited and saved. The only way I found to do this in IBX is to have 20 different TIBQuery components "wired" to their own TIBTransaction component. So that means there are at least 20 open transactions at any given time. The user bounces between the grids, which are always refreshed by (committing changes, then) closing the related open transaction, starting it again, then run the associated query. Just due to the nature of the work, the transactions are all open, but they are updated (by user manually clicking) every 10 seconds to 10 minutes.
I have read that leaving "long running" transactions open, is considered "bad form". But I found that if I close the transaction, the grid is depopulated. I need the grids to have data at all times.
I have read that an entire app is supposed to have only one TIBTransaction. How? I need the user to be able to edit many different datasets (grid) at random, and each has to be able to save to it's own table.
Is there a way to:
1) Have data displayed to the user without leaving a transaction open? If I have to populate TBufferDataSets for every grid then close the transaction... I'll be programming for another 2 years (added on to the 2 years already spent on this)
2) Save data to different tables using the same transaction?
Does having 20 open transactions use "database locks"? Do I need to increase my lock count in database.conf for the RUBI database?
Please keep in mind, sentence one, of this post.