Delphi 6 -> Delphi 2006 dbexpress странности?

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

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

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

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

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

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

Извлечено отсюда

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

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

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

Или:

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

--jeroen

Другие вопросы по тегам