We’re concluding development of a Delphi 1.0 to 2.0 app and have found during user testing that after an app except, when the app terminates, all data entered has been lost.
The app consists of a main form with a number of db comps on, and each form’s tables are linked to these db comps.
When a table is opened, is the data kept in memory until closing, despite posts? Where are posts written to? If they are written to the inmem table, can we periodically ‘commit’ data to the ‘real’ db? Is there anything else thatcould cause this problem?
Little known is the fact that buffering is going on in the BDE when a table is being edited. So yeah, you’ll lose data if the records haven’tbeen committed. To ensure minimal data loss (i.e. only the record currentlybeing worked on), you should follow each post with the following BDE call:
DBISaveChanges(Table1.Handle); //or whatever your table is named.This will force the BDE to write the data in memory to disk.