2

このエラーは、MS SQL Server 2005で空のテーブルを選択しようとしたときに表示されました:「BOFまたはEOFのいずれかがTrueであるか、現在のレコードが削除されています」。Delphi 5でTADOConnectionとTADODataSetを使用して、データベースに接続してデータを取得しました。

  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

4 に答える 4

7

このエラーは元々、MDAC_TYPの更新(メモリから2.6への更新)で発生しました。古いBorlandのアドバイザリによると、 「これはSQLServerプロバイダーのバグです。 CursorLocation = clUseClientエラーを排除するように設定してください。」

Borlandから入手可能なADOExpressパッチがありましたが、リンクが機能しません。Embarcaderoはここでホストします:ftp://ftpd.embarcadero.com/pub/delphi/devsupport/updates/adoexpress/d5adoupdate2.exe(公式リンクJeroenに感謝します!)

エンバカデロのサイトにリストされているすべてのパッチをダウンロードしてインストールすることをお勧めします。

于 2010-08-04T05:16:36.220 に答える
6

Delphi 5のADOアップデートをここからダウンロードします: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

于 2010-08-04T10:22:51.643 に答える
2

かなり苦労しましたが、Delphi5のこの問題はDelphiのアップデートで解決したことを思い出します。初期バージョンには、ADOコンポーネントに深刻な問題があります

PSまた、あなたのコードはコンポーネントの典型的なランタイム作成を使用しておらず、コンポーネントを視覚的に操作するためにデータモジュールやフォーム(通常は良くない)のようなコンテナを使用していないことがわかります。また、adoConnection.executeを介して単純なクエリを実行すると便利な場合もあります。ビジュアルコンポーネントを使用しない場合、ADOのRecordsetオブジェクトの処理はDelphiのAdoDatasetとほとんど同じです。

于 2010-08-04T05:13:14.963 に答える
1

私はこれに一日を費やしたので、これが私が最後にしたことのまとめです。

ADOExpressを使用したDelphi5Proのインストール

  1. Delphi 5をアンインストールし、インストールディレクトリも削除しました
  2. Delphi 5 Proをインストールします(ドイツ語のDelphi Proエディションしか利用できません)
  3. Delphi 5 Pro Updateをインストールします(私はドイツ語の更新を使用しました)
  4. Delphi 5ADOExpressをインストールします
  5. Delphi 5 ADO Express UpdatePack1をインストールします
  6. Delphi 5 ADO Express UpdatePack2をインストールします

そしてダウンロードリンク(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

また、将来の参照用に、ダウンロードリンク(大文字と小文字を区別)を作成するためのスクリーンショットをいくつか参照してください。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

ここに画像の説明を入力してください

于 2013-05-29T06:59:06.770 に答える