Dlookup 运行时错误“3075”:查询表达式中的语法错误(缺少运算符)

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

我得到:

我的代码:

Private Sub CustomerID()
    
    Dim ID As Long
    Dim frm As Access.Form
    Set frm = Forms!Frm_JobTicket

    'Look up Customer Name and insert corresponding ID from Qry_CustomerID
    ID = DLookup("Customer_ID", "Qry_CustomerID", "Customer_Name = " & frm("Customer_Name"))
    
    Syteline_Customer_ID = ID

End Sub

我试图将表单控件 [Syteline_Customer_ID] = 设置为 Dlookup,但它给了我同样的错误。

这是我尝试解决它的尝试。 [Syteline_Customer_ID] 是 Frm_JobTicket 上的一个文本框。
Qry_CustomerID 从 Tbl_MasterCustomerList 中提取 2 个字段。该表的结构如下:

Customer_ID - 数字(整数)
Customer_Name - 短文本
Billing_Address - 短文本
Contact_Person - 短文本
CP_Email - 短文本
CP_Phone - 短文本

我检查过 Qry_CustomerID 没有拼写错误,也没有缺少下划线,这只是我的命名约定。
我试着把它改成 Query1 来调用它。

vba ms-access ms-access-2016
1个回答
1
投票

文本字段需要用引号包围文字值。如果没有引号,Access 引擎会假定您通过该文字值引用另一个字段。在您的情况下,名称值中的空格引发了语法错误。因此,在连接表单控件值时,只需用单引号括起来:

"Customer_Name = '" & frm("Customer_Name") & "'"

实际上,您甚至不需要任何连接,因为

DLookUp
可以读取带有绝对引用的开放表单字段:

"Customer_Name = Forms!Frm_JobTicket!Customer_Name"
© www.soinside.com 2019 - 2024. All rights reserved.