如何修复简单的Dlookup-无法正常工作

时间:2018-11-21 04:33:23

标签: ms-access

我正在尝试从一个表[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

1 个答案:

答案 0 :(得分:1)

如果要从表单值获取参数,则只需使用基于表单的参数即可。这样可以避免这些基于字符串连接的错误:

Me.UN = DLookup("[UN]", "tbl_ComputerNames", "[PCName] = Forms![frm_CurrentConnections]!PCName")