VBA记录集-对象不';不支持此属性或方法
有人能解释一下这个代码的错误吗?出现运行时错误,指出对象不支持此属性或方法VBA记录集-对象不';不支持此属性或方法,vba,ms-access,Vba,Ms Access,有人能解释一下这个代码的错误吗?出现运行时错误,指出对象不支持此属性或方法 Set rst = DataFunctions.CheckCompanyID If IsNull(rst.Fields("ID")) Then 'Error occurs here ContactID = 0 Else ContactID = rst!ID End If CheckCompanyID方法的作用如下 CompanyValue = GetCurrentRecord CheckData
Set rst = DataFunctions.CheckCompanyID
If IsNull(rst.Fields("ID")) Then 'Error occurs here
ContactID = 0
Else
ContactID = rst!ID
End If
CheckCompanyID
方法的作用如下
CompanyValue = GetCurrentRecord
CheckData = "Select CompanyID, ID From Contacts Where Contacts.CompanyID = " & CompanyID & ";"
CheckCompanyID = CurrentDB.OpenRecordset(CheckData, dbOpenDynaset) 'Returns The Recordset
如果为空(rat.Fields(“*FieldName*”),则
已在其他地方使用并正常工作。我猜想这个错误是返回记录集对象的结果?如果rst得到返回结果的记录集,请检查rst。
试试这个:
IF nz(rst("ID"), "") = "" then
反而
If IsNull(rst.Fields("ID")) Then
在中,您的函数DataFunctions.CheckCompanyID
不返回记录集对象,而是Nothing
Nothing
是VB的null
如果函数中存在未处理的错误,并且“错误恢复下一步”中的生效,或者仅仅因为函数是以这种方式实现的,则可能发生这种情况
作为一般提示:在未检查对象引用是否有效(即notNothing
)的情况下,不应使用对象引用,以避免此类运行时错误
您可以轻松地检查无任何内容
:
Set rst=DataFunctions.CheckCompanyID
ContactID=0
如果不是,那就什么都不是了
如果为空(rst.Fields(“ID”)),则
联系人ID=rst!身份证件
如果结束
如果结束
注意:Classic VB不支持短路逻辑表达式,因此您不能使用其他语言允许的单线形式:
如果不是rst为Nothing且不是NULL(rst.Fields(“ID”)),则
'这将导致错误,因为始终计算rst.Fields(“ID”)!
如果结束
在方法CheckCompanyID
中是否使用一个错误继续下一个
最可能的情况是:数据函数。CheckCompanyID
返回无任何内容
,而您不进行检查。您在不使用设置的情况下分配CheckCompanyID
。将为null(rst.Fields(“ID”))
不检查记录集字段是否为null或空?如果不是,则rst为Nothing…