检查ADODB记录集是否包含VBA中的值

时间:2019-07-10 15:56:02

标签: excel vba stream adodb recordset

我有一个Recordset,其中有1列/字段的数据/记录。

根据所选择的日期范围,它最多具有大约hundreads或数千个字符串值。

然后我将该数据克隆到Stream(如另一个问题的answer中所述)以保留数据并重用Recordset。如果需要,可以将该Stream转换回新的Recordset,或者(可能)将其转换为某种数组。

稍后在代码中,我需要检查该Stream / Recordset / Array / etc中是否有某些值。

除了将Stream转换回Recordset并使用带有Recordset.Move methodsexample)的常规循环来检查存储的数据中是否包含这些值之外,还有其他内容吗?有效的方法来检查它?

1 个答案:

答案 0 :(得分:2)

来自Microsofts documentation

  

使用 BOF EOF 属性来确定 Recordset 对象是否包含记录,或者您是否超出了的限制在记录之间移动时> Recordset 对象。

     

如果当前记录位置在第一条记录之前, BOF 属性将返回 True (-1),如果当前记录位置在第一条记录之前,则返回 False (0)。当前记录位置在第一条记录上或之后。

     

如果当前记录位置在最后一条记录之后, EOF 属性将返回 True ,如果当前记录位置在或之前在 False 最后一条记录。

     

如果 BOF EOF 属性为 True ,则没有当前记录。


因此,您可以检查这些属性中的任何一个是否为真,那么您将知道没有当前记录。

或者您可以做相反的事情,并检查是否都不正确。示例:

If Not Rs.BOF And Not Rs.EOF Then
    ' Do something with your recordset
End If