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