我正在尝试从一个表[tbl_ComputerNames]中获取用户名数据到显示的表单控件中:Me.UN
据我所知,这两种方法都应该起作用...
Me.UN = DLookup("[UN]", "tbl_ComputerNames", "[PCName] = '" & Forms![frm_CurrentConnections]!PCName & "'")
或
Me.UN = DLookup("[UN]", "tbl_ComputerNames","[PCName] = '" & Me.PCName & "'")
我从两种格式中得到相同的错误
运行时3075-查询表达式中字符串的语法错误 '[PCNAME] ='HD0HD8F2'
我正确地认为,PCName数据是一串文本和数字,我将它们视为文本。
我尝试用已知数据替换标准,并且效果很好,这使我相信错误在于我如何引用标准...
我什至让PCName转到msgbox而不是表单标准,它似乎可以正常工作,甚至显示正确的PCName。但是,一旦我再次输入标准,就会回到相同的问题。
我觉得自己正在忽略或忘记一些简单的步骤或动作。我检查了一堆关于类似问题的页面,但似乎找不到任何明显的错误。
EDIT-根据请求从调试窗口粘贴以下确切的错误字符串(包括末尾的句号) 查询表达式'[PCName] ='H5CG7385KF7'中字符串的语法错误。
编辑: 我使用了一个函数从输入字符串中删除所有Null(如下所示),这似乎无法解决问题,并且如果使用串联代码,则错误仍然相同。 -在这一点上,除非有人想到可以尝试的其他方法,否则我将使用未连接的代码运行
Public Function StripNull(ByVal InString As String) As String
'Input: String containing null terminator (Chr(0))'Returns: all character before the null terminator
Dim iNull As Integer
If Len(InString) > 0 Then
iNull = InStr(InString, vbNullChar)
Select Case iNull
Case 0
StripNull = InString
Case 1
StripNull = ""
Case Else
StripNull = Left$(InString, iNull - 1)
End Select
End If
End Function
答案 0 :(得分:1)
如果要从表单值获取参数,则只需使用基于表单的参数即可。这样可以避免这些基于字符串连接的错误:
Me.UN = DLookup("[UN]", "tbl_ComputerNames", "[PCName] = Forms![frm_CurrentConnections]!PCName")