InterBase Data Access Components Frequently Asked Questions
Couldn't find the answer to your question?
Take a look at our
support forum.
Answers
Installation and Deployment
I am having a problem installing IBDAC or compiling
IBDAC-based projects...
You may be having a compatibility issue that shows up in one or more of the
following forms:
- Get a "Setup has detected already installed DAC packages which are
incompatible with
current version" message during IBDAC installation.
- Get a "Procedure entry point ... not found in ... " message when
starting IDE.
- Get a "Unit ... was compiled with a different version of ..." message
on compilation.
You can have such problems if you installed incompatible IBDAC, ODAC, SDAC,
MyDAC or UniDAC 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.
What software should be installed on a client
computer for IBDAC-based applications to work?
The minimal configuration of client installation
includes the following steps:
-
Copy the client file gds32.dll to the folder available
for executable unit of your program.
For example, to the folder with your executable file, or to the
Windows system folder.
For more information, see description of the LoadLibrary
function and the
environment variable PATH.
-
Add the "gds_db 3050/tcp" line to the services file in the
%WinDir%\system32\drivers\etc directory.
For Firebird version 1.0.0.338 and higher, both client and server
use port 3050 by default. So, you do not need to
modify the services file. You can also specify port number
for the Firebird client in connection string -
server/3050:c:\dir\data.gdb
-
Copy file InterBase.msg (or firebird.msg for Firebird)
to the folder
available for executable unit of your program. File must belong to
the same version as InterBase
or Firebird.
Core Lab renaming issue that conserns Delphi for .Net users
-
Please remove all CoreLab assamblies references from your project and add corresponding Devart ones
-
Please change all unit references in uses clauses from CoreLab to Devart (you can use standard renaming tool)
Licensing and Subscriptions
Am I entitled to distribute applications written
with IBDAC?
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.
Can I create components using IBDAC?
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.
What licensing changes can I expect with IBDAC
2.00?
The basic IBDAC license agreement will remain the same. With IBDAC
2.00, the IBDAC edition levels will be renamed
and a new IBDAC Subscription Program
will be introduced.
What do the IBDAC 2.00 Edition Levels correspond
to?
IBDAC 2.00 will come in two editions: Trial Edition and Professional
Edition. Professional Edition can be acquired with Source Code.
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 |
I have a registered version of IBDAC. Will
I need to pay to upgrade to future versions?
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.
What are the benefits of the IBDAC Subscription
program?
The IBDAC Subscription Program
is an annual maintenance and support service
for IBDAC users.
Users with a valid IBDAC Subscription get the following benefits:
- Access to new versions of IBDAC when they are released
- Access to all IBDAC updates and bug fixes
- Product support through the IBDAC Priority Support program
- Notification of new product versions
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.
Can I use my version of IBDAC after my
Subscription expires?
Yes, you can. IBDAC version licenses are perpetual.
I want a IBDAC Subscription! How can I
get one?
An annual IBDAC Subscription is included when ordering or upgrading
to any registered (non-Trial) edition of IBDAC 2.00 or higher.
You can renew your IBDAC Subscription on the
IBDAC Ordering Page.
For more information, please contact
sales@devart.com.
Does this mean that if I upgrade to IBDAC 2 from IBDAC 1,
I'll get an annual IBDAC Subscription for free?
Yes.
How do I upgrade to IBDAC 2.00?
To upgrade to IBDAC 2.00, you can get a Version Update from the
IBDAC Ordering Page.
For more information, please contact
sales@devart.com.
Performance
How productive is IBDAC?
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.
Why does the Locate function work so
slowly the first time I use it?
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.
How To
How can I enable syntax highlighting in IBDAC
component editors at design time?
To enable syntax highlighting for IBDAC, you should
download and install the freeware
SynEdit component set.
How can I determine which version of IBDAC
I am using?
You can determine your IBDAC version number
in several ways:
- During installation of IBDAC, consult the IBDAC
Installer screen.
- After installation, see the history.html file in your IBDAC
installation directiory.
- At design-time, select InterBase | About IBDAC from the main menu
of your IDE.
- At run-time, check the value of the IbdacVersion and DACVersion
constants.
How can I stop the cursor from changing to an hour
glass during query execution?
Just set the DBAccess.ChangeCursor variable to False
anywhere in your program.
The cursor will stop changing after this command is executed.
How can I execute a query saved in the SQLInsert,
SQLUpdate, SQLDelete,
or SQLRefresh properties of a IBDAC dataset?
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.
- Fill the SQLInsert property with the parametrized query template you
want to use.
- Call Insert.
- Initialize field values of the row to insert.
- Call Post.
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.
Some questions about the visual part of IBDAC
The following questions usually arise from the same problem:
- I set the Debug property to True but nothing happens!
- While executing a query, the screen cursor does not change to
an hour-glass.
- Even if I have LoginPromp set to True, the connect dialog does
not appear.
To fix this problem, you should add the IbDacVcl (for Windows) or
IbDacClx (for Linux)
unit to the uses clause of your project.
General Questions
I would like to develop an application that
works with InterBase Server.
Which should I use - IBDAC or dbExpress?
dbExpress technology serves for providing a more or less uniform way to
access different servers
(MS SQL, 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.
Why use IBDAC instead of standard InterBase
Express components?
There are many reasons why IBDAC is better than IBExpress.
Some of them are enumerated here.
For more information refer to IBDAC features list.
- Reliable user support - we help to solve common issues quickly
using e-mail or dedicated forum.
- IBDAC is being constantly improved and enhanced, so you can be
sure that the product is always
up-to-date with the latest InterBase data access technology
advances.
- Better support for BLOBs, Arrays and other advanced features
of the databases.
- Automatic generation of SQL UPDATE, INSERT, DELETE, LOCK statements,
so that you do not
need to care about routine tasks.
- Ability to lock records automatically, which helps you build
stable multiuser applications more easily.
- Unicode and national charsets support in all IBDAC components
- IBDAC shares the same troubleproof engine with the other famous DAC
products - ODAC, MyDAC, and SDAC.
So if you have worked with one of them, it will be easier for you to
switch to another one if you ever need to integrate support for another
database server in your application.
Are the IBDAC connection components thread-safe?
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.
Behaviour of my application has changed when
I upgraded IBDAC.
How can I restore the old behaviour with the new version?
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.
When editing a DataSet, I get an exception
with the message 'Update failed.
Found %d records.' or 'Refresh failed. Found %d records.'
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.
I cannot use INT64 fields as key fields in
master-detail relationship.
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.
Can IBDAC and BDE functions be used side-by-side
in a single application?
Yes, there is no problem with using both IBDAC and BDE functions in the
same application.