Frequently Asked Questions
This page contains a list of Frequently Asked Questions for InterBase Data Access Components.
If you have encounter a question with using IBDAC, please browse through this list first. If this page does not answer your question, refer to the Getting Support topic in IBDAC help
Installation and Deployment
You may be having a compatibility issue that shows up in one or more of the following forms:
You can have such problems if you installed incompatible IBDAC, SDAC, ODAC or MyDAC versions. All these products use common base packages. The easiest way to avoid the problem is to uninstall all installed DAC products and then download from our site and install the last builds.
The minimal configuration of client installation includes the following steps:
If you have purchased a full version of IBDAC, you are entitled to distribute pre-compiled programs created with its use. You are not entitled to propagate any components inherited from IBDAC or using IBDAC source code. For more information see the License.rtf file in your IBDAC installation directory.
You can create your own components that are inherited from IBDAC or that use the IBDAC source code. You are entitled to sell and distribute compiled application executables that use such components, but not their source code and not the components themselves.
IBDAC 2.00 will come in three editions: Trial, Professional, and Professional with Sources.
When you upgrade to the new version, your edition level will be automatically updated using the following Edition Correspondence Table.
Edition Correspondence Table for Upgrading to IBDAC 2.00
|Old Edition Level||New Edition Level|
|IBDAC Standard Edition||IBDAC Professional Edition|
|IBDAC Professional Edition||IBDAC Professional Edition with Sources|
|IBDAC Trial Edition||IBDAC Trial Edition|
The feature list for each edition can be found in the IBDAC documentation and on the IBDAC website.
After IBDAC 2.00, all upgrades to future versions are free to users with an active IBDAC Subscription.
Users that have a registration for versions of IBDAC prior to IBDAC 2.00 will have to first upgrade to IBDAC 2.00 to jump in on the Subscription program.
Users with a valid IBDAC Subscription get the following benefits:
Priority Support is an advanced product support program which offers you expedited individual assistance with IBDAC-related questions from the IBDAC developers themselves. Priority Support is carried out over email and has a two business day response policy.
The IBDAC Subscription Program is available for registered users of IBDAC 2.00 and higher.
Yes, you can. IBDAC version licenses are perpetual.
An annual IBDAC Subscription is included when ordering or upgrading to any registered (non-Trial) edition of IBDAC 2.00 or higher.
IBDAC uses low-level protocol to access the database server. This allows IBDAC to achieve high performance. From time to time we compare IBDAC with other products, and IBDAC always takes first place. For more information refer to online test results.
Locate is performed on the client. So if you had set FetchAll to False when opening your dataset, cached only some of the rows on the client, and then invoked Locate, IBDAC will have to fetch all the remaining rows from the server before performing the operation. On subsequent calls, Locate should work much faster.
If the Locate method keeps working slowly on subsequent calls or you are working with FetchAll=True, try the following. Perform local sorting by a field that is used in the Locate method. Just assign corresponding field name to the IndexFieldNames property.
To enable syntax highlighting for IBDAC, you should download and install the freeware SynEdit component set.
You can determine your IBDAC version number in several ways:
Just set the DBAccess.ChangeCursor variable to False anywhere in your program. The cursor will stop changing after this command is executed.
The values of these properties are templates for query statements, and they cannot be manually executed. Usually there is no need to fill these properties because the text of the query is generated automatically.
In special cases, you can set these properties to perform more complicated processing during a query. These properties are automatically processed by IBDAC during the execution of the Post, Delete, or RefreshRecord methods, and are used to construct the query to the server. Their values can contain parameters with names of fields in the underlying data source, which will be later replaced by appropriate data values.
For example, you can use the SQLInsert template to insert a row into a query instance as follows.
The value of the SQLInsert property will then be used by IBDAC to perform the last step.
Setting these properties is optional and allows you to automatically execute additional SQL statements, add calls to stored procedures and functions, check input parameters, and/or store comments during query execution. If these properties are not set, the IBDAC dataset object will generate the query itself using the appropriate insert, update, delete, or refresh record syntax.
The following questions usually arise from the same problem:
To fix this problem, you should add the IbDacVcl (for Windows) or IbDacClx (for Linux) unit to the uses clause of your project.
dbExpress technology serves for providing a more or less uniform way to access different servers (SQL Server, MySQL, Oracle and so on). It is based on drivers that include server-specific features. Like any universal tool, in many specialized cases dbExpress providers lose some functionality. For example, the dbExpress design-time is quite poor and cannot be expanded.
IBDAC is a specialized set of components to access InterBase server with advanced design-time and component interface similar to BDE.
We tried to implement maximal InterBase support in IBDAC. dbExpress technology puts severe restrictions. For example, Unicode fields cannot be passed from the driver to dbExpress.
In some cases dbExpress is slower because data undergoes additional conversion to correspond to dbExpress standards.
To summarise, if it is important for you to be able to quickly adapt your application to a database server other than InterBase, it is probably better to use dbExpress. In other cases, especially when migrating from BDE or ADO, you should use IBDAC.
There are many reasons why IBDAC is better than IBExpress. Some of them are enumerated here. For more information refer to IBDAC features list.
Yes, IBDAC is thread-safe but there is a restriction. The same TIBCConnection object cannot be used in several threads. So if you have a multithreaded application, you should have a TIBCConnection object for each thread that uses IBDAC.
We always try to keep IBDAC compatible with previous versions, but sometimes we have to change behaviour of IBDAC in order to enhance its functionality, or avoid bugs. If either of changes is undesirable for your application, and you want to save the old behaviour, please refer to the "Compatibility with previous versions" topic in IBDAC help. This topic describes such changes, and how to revert to the old IBDAC behaviour.
This error occurs when the database server is unable to determine which record to modify or delete. In other words, there are either more than one record or no records that suit the UPDATE criteria. Such situation can happen when you omit the unique field in a SELECT statement (TCustomDADataSet.SQL) or when another user modifies the table simultaneously. This exception can be suppressed. Refer to TCustomDADataSet.Options topic in IBDAC help for more information.
Fields of this type are represented in Delphi by TLargeIntField objects. In some versions of Delphi, you cannot access these fields through the Value property (see the protected method TLargeintField.SetVarValue in the DB unit for details). To avoid this problem, you can change the field type to INT, which is usually sufficient for key fields. Alternatively, you can avoid using Value.
Yes. There is no problem with using both IBDAC and BDE functions in the same application.