2010-08-04 1 views
2

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

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; 

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

ответ

7

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

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

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

+0

Я только что понял, что эти обновления мертвы – rajeemcariazo

+0

Отредактировано для добавления ссылок на официальную версию на ftp-сайте Embarcadero –

2

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

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

+1

Если вы не используете объект Recordset ADO для не визуального кода, используйте 'AdoDataSet.DisableControls', чтобы значительно повысить производительность. –

6

Загрузить обновление 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

+1

Спасибо, интересно, как вы получили эти ссылки, мои навыки Google не очень хорошие – rajeemcariazo

+1

Я получил его, ftpc.borland.com теперь заменяется ftpd.embarcadero.com, но все файлы и папки на самом деле равны – rajeemcariazo

+0

, они объединили ftpc и ftpd в новый большой ftp: // ftpd и http: // altd –

1

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

Delphi 5 Pro Установка с помощью ADO Экспресс

  1. Uninstall Delphi 5, а также удаленные директории установки
  2. Установка Delphi 5 Pro (я только немецкий Delphi Pro издание доступно)
  3. Установка Delphi 5 Pro обновление (я использовал немецкое обновление)
  4. Установка Delphi 5 ADO Экспресс
  5. Установка Delphi 5 ADO Экспресс пакет обновлений 1
  6. Установка Delphi 5 ADO скорых пакет обновлений 2

и ссылки для загрузки (много раз спасибо Йерун 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 Update Пакеты 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

Смежные вопросы

 Смежные вопросы