views:

299

answers:

3

I have an older application (written in Delphi 6) that has to be ported to Delphi 2006 (update 2). The application used to connect to an Interbase 6.x database using DBExpress, but the new version needs to connect to a Firebird 2.x Superserver.

Porting went OK, no real problems. But now, when I try to connect to the new Firebird server from the ported app, I get the following error:

Database error Database Server Error: no current record for fetch operation

Running the same application compiled with Delphi 6, talking to the same Firebird server runs fine. The changes needed to compile the app in Delphi 2006 weren't related to the database code - all local library stuff. The application uses TSQLDataset en datasetproviders and clientdatasets.

Anybody has any idea how or why? Any changes to DBExpress that might cause this behaviour? Thanks.

A: 

Hi, I don't think Delphi 2006 supports Firebird natively. Think you need to install FIBPlus

Heres a list of what is supported in Delphi 2006:

Old driver      New driver      Database and Version

dbexpinf.dll    dbxinf30.dll    Interbase 7.5
dbexpora.dll    dbxora30.dll    Oracle 10g
dbexpdb2.dll    dbxdb230.dll    db2 UDB 8.x
dbexpmss.dll    dbxmss30.dll    MSSQL 2000
dbexpmys.dll    dbxmys30.dll    MySQL 4.0.24
dbexpasa.dll    dbxasa30.dll    Adaptive Sybase Anywhere 9
dbexpase.dll    dbxase30.dll    Sybase 12.5
dbexpinf.dll    dbxinf30.dll    Informix 9.x

Extracted from Here

James
James,switching to FIBPlus requires me to replace a lot of dataset components, and rewrite an extensive list of our methods to perform standard actions upon those datasets. Right now, that is one option I would like to push back as far as possible. Hoping there is a (simpler) solution using the standard Delphi components.But I'll keep FIBPlus in mind.Thanks for your answer....Arjan...
Arjan de Haan
A: 

Until Delphi 2010, the built in DBExpress drivers officially never supported FireBird.
In practice, a lot of combinations never worked at all.

Either:

  • go for a DBExpress driver officially supporting FireBird (search google),
  • or move to another database middle layer (FIBPlus that James suggests is really good).

--jeroen

Jeroen Pluimers
A: 

First of all, retry the same steps from a new, 1-form app (put SQLConnection, SQLQuery etc etc), fill with the SQL you want and try to connect.

I believe there's some connection parameter that changed between versions, since I've used D2006 DBexpress to access Firebird 2.x with success. But the application were not ported, but new projects.

Fabricio Araujo