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 变量?