3

ストアド プロシージャ データセット (MS SQL Server、転送専用、読み取り専用) にアクセスするための私のコードの大部分は、何年も前のクリッパー コーディングへのフォールバックです。

今日のコード レビューで、同様のコード ブロックの代わりに IsEmpty への参照があることに気付きました。これは単なる好みですか、それともシナリオ例に実際の違いはありますか?

MyStoredProc.Open;
if not MyStoredProc.IsEmpty then
begin
  DoSomething;
end;

普段使っているところ

MyStoredProc.Open;
if not MyStoredProc.Eof then
begin
  DoSomething;
end;

主な理由は、複数のレコードがある場合に while ループで使用する方法を反映しているためです。

MyStoredProc.Open;
while not MyStoredProc.Eof then
begin
  DoSomething;
  MyStoredProc.Next;
end;
4

2 に答える 2

5

IsEmptyプロパティは、データセットにレコードがあるかどうかを確認するためのものであり、Eof、現在のレコードが最後であるかどうかを確認するためのものです。あなたの場合、データセットを反復処理する必要がある場合は、eofを使用して最後のレコードに到達したかどうかを判断します。

于 2012-06-26T21:54:58.610 に答える
3

IsEmptyは と同等ですがBof and Eof、 とは同等ではありませんEof

この特定のケースでは、新しいデータセットを開いた直後は(も成り立つEofことがわかっているため) と同等ですが、一般的にはそうではありません。Bof

于 2012-06-27T05:29:25.417 に答える