【发布时间】:2021-02-12 01:41:35
【问题描述】:
大家早上好!我被困住了,如果我能得到任何帮助,我将不胜感激。
我的子程序的一部分从记录集中获取一个值。如果记录集所基于的查询没有返回值,那么我会收到错误消息:
'3021' 没有当前记录
我正在尝试检查空记录并将我的 vba 代码重定向到其他地方以避免此错误,但我无法这样做。到目前为止我看到的所有参考都说要做同样的事情,这是我尝试过的
IsNull(rst.FIelds("field").Value)
仍然无法正常工作。我不知道从哪里开始。
代码如下。
目前,出于调试目的,我已硬编码值 27 和 Schematic,但请注意,在实际子例程中,这些将是变量。
非常感谢您的所有帮助!祝你有美好的一天:)
Dim dbs As DAO.Database
Dim rst_Trim As DAO.Recordset
Set dbs = CurrentDb
qrystring = "SELECT tblDocuments.Trim FROM tblDocuments WHERE (tblDocuments.ID = 27 AND tblDocuments.type = 'Schematic')"
Set rst_Trim = dbs.OpenRecordset(qrystring, dbOpenSnapshot)
If IsNull(rst_Trim.Fields("trim").Value) Then
'do stuff
MsgBox "null"
Else
trimNumber = rst_Trim.Fields("trim").Value
'do stuff
MsgBox trimNumber
End If
【问题讨论】:
-
测试记录集是否为空:
If Not rst_Trim.EOF Then。可以简化字段引用:rst_Trim("trim")或rst_Trim!trim。 -
但是,我只是在记录集为空时测试了 IsNull() 并且它可以工作。啊,它适用于我的简化字段参考,但不适用于您的。