我正在尝试在VBA代码中执行SQL查询。该查询在MS Access中有效,并要求用户输入Customer_Name和Part_Number
的值我所做的是在Outlook中编写VBA代码,以便我们可以运行宏来从Outlook执行查询。我目前的代码工作,直到DoCmd.RunSQL部分的最底线。我想我的语法不正确。我需要告诉它运行上面列出的SQL字符串:
Public Sub AppendAllTables()
Part_Number = InputBox("Enter Part Number")
Customer_Name = InputBox("Enter Customer Name")
Dim strsqlQuery As String
Dim Y As String
Y = "YES, Exact Match"
Dim P As String
P = "Possible Match - Base 6"
Dim X As String
X = "*"
strsqlQuery = "SELECT Append_All_Tables.Customer,
Append_All_Tables.CustomerCode, Append_All_Tables.PartNumber,
Append_All_Tables.Description, Append_All_Tables.Vehicle, SWITCH" &
Customer_Name & " = Append_All_Tables.PartNumber, " & Y & ", LEFT(" &
Part_Number & ",12) = LEFT(Append_All_Tables.PartNumber,12)," & Y & ",
LEFT(" & Part_Number & ",6) = LEFT(Append_All_Tables.PartNumber,6)," & P
& ") AS Interchangeability FROM Append_All_Tables WHERE" & Customer_Name
& "Like " & X & Customer_Name & X & "AND
LEFT(Append_All_Tables.PartNumber,6) = LEFT(" & Part_Number & ",6);"
Set appAccess = CreateObject("Access.Application")
appAccess.OpenCurrentDatabase "path.accdb"
appAccess.DoCmd.RunSQL "strsqlQuery"
End Sub
请注意,路径已更改以保护隐私。 SQL代码已在Access中运行。我只需要评估最后一行。
答案 0 :(得分:2)
如果您想要一个数据表表单视图显示这些记录,您可以使用
DoCmd.OpenForm
首先使用您想要查看的数据创建一个查询,然后使用Record Source
属性将其绑定到您的表单,然后当您调用DoCmd.OpenForm
传递所需的过滤器时。
我没跟踪您在查询中尝试使用SWITCH
的内容(那应该是switch()
函数吗?它没有括号)。但是你需要调整它来加入以使用Where
语句。
答案 1 :(得分:2)
我同意上述几篇文章。
我个人的偏好是像你一样定义SQL,然后使用该SQL创建实际查询(创建查询def),然后调用该查询,因为它现在将是数据库中的实际对象。 QUERY可以显示为没有任何表单要求的数据表,但纯SQL语句不能。
迈克尔
答案 2 :(得分:1)
删除引号。
appAccess.DoCmd.RunSQL "strsqlQuery"
至appAccess.DoCmd.RunSQL strsqlQuery