3

我用于访问存储过程数据集(MS SQL Server,只进,只读)的大部分代码是多年前我的 Clipper 编码的回退

在今天的代码审查中,我注意到在类似的代码块中引用了 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

In this particular case, directly after opening a new dataset it is equivalent to Eof (because you know Bof also holds), but in general it is not.

于 2012-06-27T05:29:25.417 回答