当表中的字段为空时,DLookup和Nz()格式是什么?

问题描述 投票:1回答:2

我有一个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
vba ms-access access-vba ms-access-2010
2个回答
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

0
投票

代码中的空值有两个棘手的地方:

  1. 如果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]")
  2. 您将DLookUp结果存储在一个字符串中。你可以在这里使用Nz返回一个不同的字符串,或者将一个零长度字符串与DLookUp结果连接起来,将Null值作为零长度字符串处理: other = VbNullString & DLookup("[Model]", "[Part Number & Part Name]", "[Part Number]= Forms![Press 2]![Containment - Press 2 subform].Form![Part Number]")

这应该涵盖空值可能会干扰这部分代码的所有地方。

© www.soinside.com 2019 - 2024. All rights reserved.