Delphi: либо BOF, либо EOF имеют значение True, либо текущая запись была удалена

Эта ошибка проявилась, когда я попытался выбрать пустую таблицу в 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;

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


person rajeemcariazo    schedule 04.08.2010    source источник


Ответы (4)


Первоначально эта ошибка возникла при обновлении до 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, при условии, что вы сможете их найти.

person Gerry Coll    schedule 04.08.2010
comment
Отредактировано для добавления ссылок на официальную версию на ftp-сайте Embarcadero. - person Gerry Coll; 04.08.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.

--jeroen

person Jeroen Wiert Pluimers    schedule 04.08.2010
comment
Спасибо, интересно, как вы получили эти ссылки, мои навыки Google не очень хороши - person rajeemcariazo; 05.08.2010
comment
Я понял, ftpc.borland.com теперь заменен на ftpd.embarcadero.com, но все файлы и папки остались прежними - person rajeemcariazo; 05.08.2010
comment
Я получаю Это обновление требует, чтобы пакет обновления 1 ADOExpress уже был установлен. Я попытался изменить данную ссылку для загрузки на «d5adoupdate1.exe», но этот файл не найден на сервере. Где я могу получить это? - person Reto Höhener; 28.05.2013
comment
Никогда не было этой ошибки, и у меня больше нет виртуальной машины с Delphi 5. Поэтому я предполагаю, что это означает, что вам нужно сначала установить обычное обновление Enterprise/Professional/Standard, о котором я упоминал в своем ответе. - person Jeroen Wiert Pluimers; 28.05.2013
comment
Я установил это обычное обновление delphi pro. Теперь я переустановил delphi pro, затем обновил delphi pro, теперь delphi больше не запускается (ошибка выполнения). У меня есть немецкая версия delphi 5, поэтому, возможно, это профессиональное обновление не работает для немецкой версии (хотя в первый раз я смог запустить delphi после обновления). - person Reto Höhener; 28.05.2013
comment
Возможно, это так. Я никогда не следил за международными обновлениями. Они должны быть на ftpd-сервере, но поскольку он не позволяет просматривать каталоги, я бы начал с этого: ftplike.com/browser/obelix.tul.cz/pub/mirrors/ftp.borland.com/ - person Jeroen Wiert Pluimers; 28.05.2013
comment
Спасибо! Я нашел немецкое обновление, а также первое обновление ADO Express! Сервер чувствителен к регистру! Как только у меня будет время, я опубликую точные ссылки. Я удалил delphi 5. Снова установил. Потом обновление Delhpi Pro на немецком языке. Затем ADO Express, затем пакет обновлений ADO 1, затем пакет обновлений ADO 2. Это стоило мне целого дня, и я, вероятно, ввел лицензионный ключ около 30 раз. Еще раз спасибо! - person Reto Höhener; 28.05.2013
comment
Здорово! FTP обслуживается сервером unix. Они действительно чувствительны к регистру (: - person Jeroen Wiert Pluimers; 28.05.2013

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

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

person burnall    schedule 04.08.2010
comment
Если вы не используете объект Recordset ADO для невизуального кода, используйте AdoDataSet.DisableControls для значительного повышения производительности. - person Gerry Coll; 04.08.2010

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

Установка 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 с пакетом обновлений 1
  6. Установите Delphi 5 ADO Express с пакетом обновлений 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

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

введите здесь описание изображения

введите здесь описание изображения

введите здесь описание изображения

введите здесь описание изображения

введите здесь описание изображения

person Reto Höhener    schedule 29.05.2013