Delphi 6 - ›Delphi 2006 dbexpression странности?

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

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

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

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

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


person Arjan de Haan    schedule 28.08.2009    source источник


Ответы (3)


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

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

Извлечено из Здесь

person James    schedule 28.08.2009
comment
Джеймс, переход на FIBPlus требует, чтобы я заменил множество компонентов набора данных и переписал обширный список наших методов для выполнения стандартных действий с этими наборами данных. Прямо сейчас это один из вариантов, от которого я хотел бы отказаться как можно дальше. Надеюсь, что есть (более простое) решение с использованием стандартных компонентов Delphi. Но я буду иметь в виду FIBPlus. Спасибо за Ваш ответ. ... Арьян ... - person Arjan de Haan; 28.08.2009

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

Либо:

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

- Джерун

person Jeroen Wiert Pluimers    schedule 12.02.2010

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

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

person Fabricio Araujo    schedule 12.02.2010