我有一个DLookup公式,该公式从MyTable中获取[Model]。一切正常,直到字段名称[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
答案 0 :(得分:0)
您的代码中有两个棘手的空值位置:
如果Forms![Press 2]![Containment - Press 2 subform].Form![Part Number]
为空,则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]")
这应该涵盖null可能干扰这部分代码的所有地方。
答案 1 :(得分:0)
使用 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