记录集的边界

Recordset 支持使用 BOF 和 EOF 属性来分别描绘数据集的开始和结束。 可以将 BOF 和 EOF 视为位于 Recordset 开头和结尾的“虚拟”记录。 算上 BOF 和 EOF,我们的示例 Recordset 现在如下所示:

ProductID ProductName 单价
BOF
7 Uncle Bob's Organic Dried Pears 30.0000
14 Tofu 23.2500
28 Rssle Sauerkraut 45.6000
51 Manjimup Dried Apples 53.0000
74 Longlife Tofu 10.0000
EOF

游标移过最后一条记录后,EOF 将设置为 True;否则,其值为 False。 同样,游标移动到第一条记录之前后,BOF 将设置为 True;否则,其值为 False。 这些属性通常用于枚举数据集中的记录,如下面的 JScript 代码片段所示。

while (objRecordset.EOF != true)   
{  
   // Work on the current record.  
   ...  
   // Advance the cursor forward to the next record.  
   objRecordset.MoveNext();  
}  
or  
while (objRecordset.BOF != true)   
{  
   // Work on the current record.  
   ...  
   // Move the cursor to the previous record.  
   objRecordset.MovePrevious();  
}  

如果 BOF 和 EOF 均为 True,则 Recordset 对象为空。 对于新打开的非空 Recordset 对象,这两个属性都将为 False。 你可以同时使用 BOF 和 EOF 属性来确定 Recordset 对象是否为空,如以下 JScript 代码片段所示。

if (objRecordset.EOF == true && objRecordset.BOF == true)  
{  
   WScript.Echo("we got an empty dataset.");  
}  
else  
{  
   WScript.Echo("we got a full dataset.");  
}  

此方案适用于所有类型的游标,并且独立于基础提供程序。 如果尝试通过检查 RecordCount 属性值是否为零 (0) 来确定 Recordset 对象的空性,则必须采取预防措施以使用适当的游标和提供程序,支持返回结果中的记录数。

如果删除 Recordset 对象中的最后一条剩余记录,则游标将处于不确定状态。 BOF 和 EOF 属性可能会保持为 False,直到你尝试重新定位当前记录,具体取决于提供程序。 有关详细信息,请参阅使用 Delete 方法删除记录