【问题标题】:Check if ADODB Recordset contains value in VBA检查 ADODB 记录集是否包含 VBA 中的值
【发布时间】:2019-07-11 00:21:38
【问题描述】:

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

根据选择的日期范围,它最多有数百或数千个字符串值。

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

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

除了将 Stream 转回 Recordset 并使用带有Recordset.Move methods (example) 的正常循环来检查每个值是否在存储的数据中之外,还有其他更有效的方法来检查是吗?

【问题讨论】:

标签: excel vba stream adodb recordset


【解决方案1】:

来自Microsofts documentation

使用 BOFEOF 属性来确定 Recordset 对象是否包含记录,或者您是否超出了 的限制>Recordset 对象,当您从一个记录移动到另一个记录时。

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

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

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


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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 2014-01-26
    • 2023-03-23
    • 2017-06-04
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    相关资源
    最近更新 更多