2010-08-04 98 views
2

當我試圖在MS SQL Server 2005中的空表上選擇時顯示此錯誤:「BOF或EOF爲True,或者當前記錄有已被刪除「。我在Delphi 5中使用了TADOConnection和TADODataSet來連接和檢索數據庫中的數據。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 2010-08-04 06:05:18

+0

編輯爲Embarcadero的ftp站點添加正式版本的鏈接 – 2010-08-04 12:52:15

2

這是很長時間的agom,但我記得在Delphi 5中的這個問題通過Delphi更新來解決。早期版本對ADO組件有嚴重問題

P.S.此外,我看到您的代碼不使用組件的典型運行時創建,也不使用某些容器(如數據模塊或窗體)(通常情況下效果不佳)用於組件的可視化工作。有時候還可以通過adoConnection.execute運行簡單的查詢。如果你不使用可視化組件,處理ADO的Recordset對象與Delphi的AdoDataset非常相似。

+1

如果您不將ADO的Recordset對象用於非可視代碼,請使用'AdoDataSet.DisableControls'來極大地提高性能。 – 2010-08-04 05:22:17

6

下載ADO更新德爾福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 2010-08-05 04:40:21

+1

我明白了,ftpc.borland.com現在被ftpd.embarcadero.com取代,但所有的文件和文件夾實際上都是相同的 – rajeemcariazo 2010-08-05 05:17:36

+0

,他們將ftpc和ftpd合併爲一個新的大ftp:// ftpd,並且我得到了一個http:// altd – 2010-08-05 09:38:27

1

因爲我花了一整天的時間在這,這裏是什麼,我到底做了一次總結。

德爾福5 Pro安裝與ADO快遞

  1. 卸載德爾福5,也刪除安裝目錄
  2. 安裝德爾福5專業版(我只是有一個可用的德國德爾福專業版)
  3. 安裝Delphi 5的臨更新(我使用德語更新)
  4. 安裝Delphi 5 ADO Express
  5. 安裝Delphi 5 ADO Express更新包1
  6. 安裝德爾福5個ADO快速更新包2

以及下載鏈接(再次感謝吉榮Wiert Pluimers):

德爾福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.exeftp://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

相關問題