What You Must Do


Once the conversion is made to IBO based components and your application is compiling again there are some property settings that may need to be made to insure that your application will continue to function properly and perform its best. Once these properties are all set then your application should be functional as it was prior to the conversion.

TDatabase.TransIsolation
The TDatabase TransIsolation and BDE driver flags governed the transaction behavior and so it will be necessary for you to analise your application and determine what Isolation and transaction handling will be appropriate.

Taking complete and proper control of transactions will be perhaps the most involved task of the entire conversion. In the beginning IBO's TIBODatabase employs AutoCommit and READ COMMITTED behavior that should work for simple applications. It also has all datasets initially sharing the same transaction as is the case with the TDatabase component. At first just get it to match what the BDE was doing before other more major alterations are attmepted.

TIBODataset.KeyLinks property
In order for IBO datasets to be fully functional they require that some means of uniquely identifying each row be configured. The most significant setting that you can make is to set the KeyLinks property of each dataset. This is a new property in IBO that is very useful and required for some situations.

For simple datasets of a single table that has a primary key IBO can figure out the KeyLinks automatically. However, if you set it manually then you will save the system from having to execute a query to figure this out. Some queries may need to have the primary key columns included in the select list too because if you need them in the KeyLinks you need them in the SELECT as well.

In other more complex cases that IBO cannot figure out how to determine which columns constitute the key columns for the dataset it will use the InterBase DB_KEY or an arbitrary integer value if a DB_KEY cannot be obtained. In these cases IBO is limited to what it can do with the dataset and may be unable to perform certain functions automatically like delivering a live result set.

KeyLinks is simply a list of columns in the dataset that constitute what uniquely describes each record *potentially* selected into the dataset. If there is a single column in a primary key then simply put this column in the list. If there are two columns then place each column on its own line in the list. It's a good idea to get into the habit of prefacing column names with their table name and a period. I call this the full field reference.

Don't confuse the KeyLinks columns with the "Key" columns defined in the IndexFieldNames property. The purpose of KeyLinks columns is to uniquely identify each row so that special operations can be performed with them, not to determine which columns the dataset is ordered by.

TUpdateSQL Component
If you were using a TUpdateSQL component then it will be necessary to take the property values for it and plug them into the corresponding properties that are now built directly into the IBO datasets.

NOTE: I named the ModifySQL property EditSQL.