Delphi - либо BOF, либо EOF имеет значение True, либо текущая запись была удалена - PullRequest
2 голосов
/ 04 августа 2010

Эта ошибка показала, когда я пытался выбрать пустую таблицу в MS SQL Server 2005: «BOF или EOF - True, или текущая запись была удалена». Я использовал TADOConnection и TADODataSet в Delphi 5 для подключения и извлечения данных из базы данных.

  Conn := TADOConnection.Create(nil);
  DataSet := TADODataSet.Create(nil);

  Conn.ConnectionString := 'Provider=SQLOLEDB.1;Password=sa;' +
                           'Persist Security Info=True;' +
                           'User ID=user;Initial Catalog=mydb;' +
                           'Data Source=MYPC\SQLEXPRESS;' +
                           'Use Procedure for Prepare=1;' +
                           'Auto Translate=True;Packet Size=4096;' +
                           'Workstation ID=MYPC;' +
                           'Use Encryption for Data=False;' +
                           'Tag with column collation when possible=False';
  Conn.LoginPrompt := False;
  Conn.Open;

  DataSet.Connection := Conn;
  DataSet.CommandText := 'SELECT * FROM MYTABLE';
  DataSet.Open;

  DataSet.Free;
  Conn.Free;

Есть ли способ проверить, является ли таблица базы данных пустой, без возникновения такой ошибки?

Ответы [ 4 ]

7 голосов
/ 04 августа 2010

Эта ошибка первоначально произошла при обновлении MDAC_TYP (до 2.6 из памяти).Согласно старым рекомендациям Borland"Это ошибка в поставщике SQL Server. Установите CursorLocation = clUseClient для устранения ошибки."

Существовал патч ADOExpress, доступный из Borland, но ссылка не работает.Embarcadero теперь размещает его здесь: ftp: //ftpd.embarcadero.com/pub/delphi/devsupport/updates/adoexpress/d5adoupdate2.exe (Спасибо за официальную ссылку Jeroen!)

Я бы порекомендовал загрузить и установить все исправления, перечисленные на сайте Embarcadero, при условии, что вы сможете их найти.

6 голосов
/ 04 августа 2010

Загрузите обновление ADO для Delphi 5 здесь: ftp: //ftpd.embarcadero.com/pub/delphi/devsupport/updates/adoexpress/d5adoupdate2.exe

Убедитесь, что у вас также установлено регулярное обновление:

Существует больше обновлений (Corba, оригинальная установка ADO) и языков (французский, немецкий), но они должны помочь вам.

Раньше также был http://info.borland.com/devsupport/delphi/download_files/zlibupdate.zip,, но его нет на серверах ftpd.

- Йерун

2 голосов
/ 04 августа 2010

Это было долгое время, но я вспоминаю, что эта проблема в Delphi 5 решается обновлением Delphi. Ранняя версия имеет серьезные проблемы с компонентами ADO

P.S. Также я вижу, что ваш код использует не типичное создание компонентов во время выполнения и не использует некоторый контейнер, такой как модуль данных или форма (обычно не очень хорошо) для визуальной работы с компонентами. Также иногда полезно запускать простые запросы через adoConnection.execute. Если вы не используете визуальные компоненты, обработка объекта Recordset ADO во многом аналогична AdoDataset Delphi.

1 голос
/ 29 мая 2013

Так как я потратил на это целый день, вот краткое изложение того, что я сделал в конце.

Установка Delphi 5 Pro с ADO Express

  1. Удаление Delphi 5, также удалил каталог установки
  2. Установите Delphi 5 Pro (у меня есть только немецкая версия Delphi Pro)
  3. Установите обновление Delphi 5 Pro (я использовал немецкое обновление)
  4. Установите Delphi 5 ADO Express
  5. Установите Delphi 5 ADO Express Update Pack 1
  6. Установите Delphi 5 ADO Express Update Pack 2

И ссылки для загрузки (большое спасибо еще разJeroen Wiert Pluimers):

Обновления Delphi 5 Pro:

ftp: //ftpd.embarcadero.com/pub/delphi/devsupport/updates/delphi5/D5ProUpdate.exe ftp: //ftpd.embarcadero.com/pub/delphi/devsupport/updates/delphi5/german/d5proupdate.exe

Пакеты обновлений ADOExpress 1 и 2:

ftp: //ftpd.embarcadero.com/pub/delphi/devsupport/updates/adoexpress/D5ADOUpgrade.exe ftp: //ftpd.embarcadero.com/pub/delphi/devsupport/updates/adoexpress/d5adoupdate2.exe

И для дальнейшего использования некоторые снимки экрана для создания ссылок для загрузки (с учетом регистра):

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

...