我有一个DLookup公式,从MyTable中获取[Model]。一切正常,直到fieldname [Model]的值为空。
我得到一个关于它如何不理解空信息的运行时错误94。
我尝试过使用Nz()函数。当我有这么多双引号和单引号时,使用这些函数会让人感到困惑。
这就是我所拥有的。
Dim other as String
other = DLookup("[Model]", "[Part Number & Part Name]", "[Part Number]='" & Forms![Press 2]![Containment - Press 2 subform].Form![Part Number] & "'")
If other <> "" Then
Me.[Model].Value = other
Else
Me.Model.Value = "NA"
End If
使用Nz并减少代码:
Dim other as String
other = Nz(DLookup("[Model]", "[Part Number & Part Name]", "[Part Number]='" & Forms![Press 2]![Containment - Press 2 subform].Form![Part Number] & "'"), "NA")
Me![Model].Value = other
代码中的空值有两个棘手的地方:
Forms![Press 2]![Containment - Press 2 subform].Form![Part Number]
为null,则DLookUp
将被错误处理,因为您将其包含为字符串。
修复:使用表单值作为参数,这也避免了SQL注入错误:
other = DLookup("[Model]", "[Part Number & Part Name]", "[Part Number]= Forms![Press 2]![Containment - Press 2 subform].Form![Part Number]")
DLookUp
结果存储在一个字符串中。你可以在这里使用Nz
返回一个不同的字符串,或者将一个零长度字符串与DLookUp
结果连接起来,将Null值作为零长度字符串处理:
other = VbNullString & DLookup("[Model]", "[Part Number & Part Name]", "[Part Number]= Forms![Press 2]![Containment - Press 2 subform].Form![Part Number]")
这应该涵盖空值可能会干扰这部分代码的所有地方。