VBA If / Then基于记录计数

时间:2018-03-05 21:23:56

标签: if-statement access-vba eof record-count

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

现在我正在使用

If rst.EOF = False Then...

Else ...

End If

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

我还缺少其他东西吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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,则记录集中必须只有一条记录;否则,会有更多记录。

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