VBA If / Then基于记录计数

问题描述 投票:0回答:2

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

现在我正在使用

If rst.EOF = False Then...

Else ...

End If

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

还有什么我想念的吗?

if-statement access-vba eof record-count
2个回答
0
投票

您缺少计算记录:

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

0
投票

根据记录集的大小,.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,则记录集中必须只有一条记录;否则,有更多的记录。

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

© www.soinside.com 2019 - 2024. All rights reserved.