Database 数据类型不匹配帮助MS访问VBA

Database 数据类型不匹配帮助MS访问VBA,database,vba,ms-access,Database,Vba,Ms Access,在尝试运行查找时,我不断遇到数据类型不匹配的情况。我有一个表tWorkOrder和一个短文本列SalesOrder No Number列workOrderNo和短文本lineKey我正在查找中搜索lineKey值 Dim lineKeyOW, SoNo, WTSo As String SoNo = 0135487 WTSo = 2 lineKeyOW = Nz(DLookup("lineKey", "tWorkOrder", "salesOrderNo = '"

在尝试运行查找时,我不断遇到数据类型不匹配的情况。我有一个表tWorkOrder和一个短文本列SalesOrder No Number列workOrderNo和短文本lineKey我正在查找中搜索lineKey值

    Dim lineKeyOW, SoNo, WTSo As String
    SoNo = 0135487
    WTSo = 2
    lineKeyOW = Nz(DLookup("lineKey", "tWorkOrder", "salesOrderNo = '" & soNo & "' AND workOrderNo = '" & WTSo & "'"), "NA") 

这样会更好

Dim lineKeyOW As String
Dim SoNo as String
Dim WTSo As Long

SoNo = 0135487
WTSo = 2
lineKeyOW = Nz(DLookup("lineKey", "tWorkOrder", "salesOrderNo = '" & soNo & "' AND workOrderNo = " & WTSo ), "NA") 
首先,
workOrderNo
列是Number数据类型,您不应该用
包围它的值。

那么,永远不要这样做:

Dim lineKeyOW, SoNo, WTSo As String
因为它相当于这个

Dim lineKeyOW As Variant, SoNo As Variant, WTSo  As String
这显然是错误的,原因有几个

如果您确实想要一个内联
dim
声明,您应该这样做

Dim lineKeyOW As String, SoNo As String, WTSo  As String

这样会更好

Dim lineKeyOW As String
Dim SoNo as String
Dim WTSo As Long

SoNo = 0135487
WTSo = 2
lineKeyOW = Nz(DLookup("lineKey", "tWorkOrder", "salesOrderNo = '" & soNo & "' AND workOrderNo = " & WTSo ), "NA") 
首先,
workOrderNo
列是Number数据类型,您不应该用
包围它的值。

那么,永远不要这样做:

Dim lineKeyOW, SoNo, WTSo As String
因为它相当于这个

Dim lineKeyOW As Variant, SoNo As Variant, WTSo  As String
这显然是错误的,原因有几个

如果您确实想要一个内联
dim
声明,您应该这样做

Dim lineKeyOW As String, SoNo As String, WTSo  As String

非常感谢。我有一种感觉,它与“和‘我一直很难与他们相处’@凯文,这将伴随练习而来。也感谢你对声明变量的解释,这非常有用。谢谢!我有一种感觉,它与”还有“我一直都很难理解它们”。@Kevin这将伴随练习而来。也感谢您对声明变量的解释,这非常有帮助。