繁体   English   中英

在 VBA 代码中执行 SQL 语句

[英]Execute a SQL statement inside VBA Code

我正在尝试在 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 中工作。 我只需要评估最后一行。

如果您想让数据表表单视图显示这些记录,您可以使用

DoCmd.OpenForm 

首先使用您想要查看的数据创建一个查询,然后使用Record Source属性将其绑定到您的表单,然后在您调用DoCmd.OpenForm传入您想要的过滤器。

我没有关注您在查询中尝试使用SWITCH的操作(这应该是switch()函数吗?它没有括号)。 但是您需要调整它以加入以使用Where语句。

我同意上面的几个帖子。

  1. 在你做任何事情之前,你需要对 strsqlQuery 变量做一个 Debug.Print ! 然后评估该语句。 看起来对吗? 正如马特所说,看起来你没有行延续,这会使你的 SQL 语句不完整(因此,计算机根本不认为它是一个查询)。

我个人的偏好是像您一样定义 SQL,然后使用该 SQL 创建实际查询(创建查询定义),然后调用该查询,因为它现在将成为数据库中的实际对象。 QUERY 可以显示为没有任何形式要求的数据表,但纯 SQL 语句不能。

迈克尔

删除引号。

appAccess.DoCmd.RunSQL "strsqlQuery"appAccess.DoCmd.RunSQL strsqlQuery

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM