2009-08-28 2 views
0

У меня есть старое приложение (написанное на Delphi 6), которое нужно портировать на Delphi 2006 (обновление 2). Приложение, используемое для подключения к базе данных Interbase 6.x с использованием DBExpress, но новая версия должна подключаться к Firebird 2.x Superserver.Delphi 6 -> Delphi 2006 dbexpress weirdness?

Портирование прошло нормально, никаких реальных проблем. Но теперь, когда я пытаюсь подключиться к новому Firebird серверу из перенесенного приложения, я получаю следующее сообщение об ошибке:

Ошибка базы данных Ошибка сервера базы данных: нет текущей записи для выборки операции

Запуск того же приложения скомпилированные с Delphi 6, разговор с одним и тем же сервером Firebird работает нормально. Изменения, необходимые для компиляции приложения в Delphi 2006, не были связаны с кодом базы данных - всей локальной библиотекой. Приложение использует TSQLDataset en datasetproviders и clientdatasets.

У кого-нибудь есть идеи, как и почему? Любые изменения в DBExpress, которые могут вызвать это поведение? Спасибо.

ответ

0

Я не думаю, что Delphi 2006 поддерживает Firebird изначально. Подумайте, что вам нужно установить FIBPlus

Heres список того, что поддерживается в 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 

Выдержки из Here

+0

James, Переключение на FIBPlus требует от меня заменить множество компонентов набора данных и переписать обширный список наших методов для выполнения стандартных действий над этими наборами данных. Прямо сейчас, это один из вариантов, который я хотел бы отложить, насколько это возможно. Надеясь, что существует (более простое) решение, использующее стандартные компоненты Delphi. Но я буду помнить FIBPlus. Спасибо за ваш ответ. ... Arjan ... –

0

Until Delphi 2010, встроенных драйверов DBEXPRESS официально не поддерживается FireBird.
На практике многие комбинации никогда не работали вообще.

Либо:

  • пойти на водителя DBEXPRESS официально поддерживающий FireBird (search google),
  • или перейти к другой базе данных среднего слоя (FIBPlus, что Джеймс предлагает действительно хорошо).

--jeroen

0

Прежде всего, повторите те же действия с новой, 1-формы приложения (поместить SQLConnection, SQLQuery и т.д. и т.д.), заполнить с SQL вы хотите и попробовать подключиться.

Я считаю, что есть некоторые параметры подключения, которые менялись между версиями, так как я использовал D2006 DBexpress для успешного доступа к Firebird 2.x. Но приложение не было перенесено, а новые проекты.

Смежные вопросы