我想在VBA中创建一个If / Then语句,如果记录集中有多条记录,则会填充一条消息,如果只有记录,则会填充另一条消息。
现在我正在使用
If rst.EOF = False Then...
Else ...
End If
这只会返回第一个条件,无论记录集中有多少条记录。
我还缺少其他东西吗?
答案 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
,则记录集中必须只有一条记录;否则,会有更多记录。
由于您只需要为案例分支,因此只有一条记录,此方法意味着您正在访问最少数量的记录以确定此条件。