VBA If / Then基于记录计数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA If / Then基于记录计数相关的知识,希望对你有一定的参考价值。

我想在VBA中创建一个If / Then语句,如果记录集中有多条记录,则会填充一条消息,如果只有记录,则会填充另一条消息。

现在我正在使用

If rst.EOF = False Then...

Else ...

End If

这只是返回第一个条件,无论记录集中有多少记录。

还有什么我想念的吗?

答案

您缺少计算记录:

If rst.EOF = False Then
    rst.MoveLast
    rst.MoveFirst
    If rst.RecordCount = 1 Then
        ' One record.
    Else
        ' More records.
    End If
Else
    ' No records.
End If
另一答案

根据记录集的大小,.MoveLast会对性能产生严重影响,因为.RecordCount不会产生记录总数,而是访问记录的数量,因此需要调用.MoveLast

要提供替代方案,请考虑以下事项:

If rst.EOF Then
    ' No records
Else
    rst.MoveFirst
    rst.MoveNext
    If rst.EOF Then
        ' 1 record
    Else
        ' More than 1 record
    End If
End If

首先测试记录集是否已经在.EOF,如果是,则记录集中没有记录。

如果我们有一些记录,它会将光标移动到第一个记录(.MoveFirst),然后移动到下一个记录(.MoveNext)(如果存在)。

如果我们现在已达到.EOF,则记录集中必须只有一条记录;否则,有更多的记录。

由于您只需要为案例分支,因此只有一条记录,此方法意味着您正在访问最少数量的记录以确定此条件。

以上是关于VBA If / Then基于记录计数的主要内容,如果未能解决你的问题,请参考以下文章

使用 Access VBA,如何计算选择查询中的输出记录数并将计数存储为 VBA 变量?

ORACLE If Then Else 语句与计数器和选择查询

访问 VBA 运行时错误 3052,超出文件共享锁定计数

VBA - 基于选择的不需要的列表计数表示更改

VBA编程06.控制语句

If...Then...Else 在 Then 之后有多个语句