我的 SQL 语句中有一个保留字



我正在连接到Visual Basic中的数据库。连接时,我想运行以下查询并将结果输出到电子表格。当我在 Access 中运行查询时,该查询会为我提供预期的结果。但是我不知道如何将查询转换为 VB 语法。

谁能告诉我这个SQL语句有什么问题,或者为什么我收到我的SQL语句中有一个保留字的错误消息?

Dim SQL As String
Dim numrows As Integer
Range("B1").Value = CustFirstName & CustLastName
SQL = "SELECT Orders.OrderDate, Sum(QuotedPrice*QuantityOrdered) AS TotalCost" _
& "FROM Orders INNER JOIN LineItems ON Orders.OrderID = LineItems.OrderID" _
& "WHERE (((Orders.customerID) = [Customer].[customerID]))" _
& "GROUP BY Orders.OrderID, Orders.OrderDate" _
& "ORDER BY Orders.OrderDate"

你的 SQL 字符串是错误的。它缺少 FROM 子句,也缺少 WHERE、GROUP BY、ORDER BY 都写错了。这些关键字之前至少应该有一个空格,但您有如下内容:

SQL = "... TotalCost" & "FROM ..."

这使得它" ....总成本来自..."。与"何处"、"分组依据"、"排序依据"相同。尝试将其重写为:

SQL = "SELECT Orders.OrderDate, Sum(QuotedPrice*QuantityOrdered) AS TotalCost" _
& " FROM Orders INNER JOIN LineItems ON Orders.OrderID = LineItems.OrderID" _
& " GROUP BY Orders.OrderID, Orders.OrderDate" _
& " ORDER BY Orders.OrderDate"

我还删除了 WHERE 部分,因为它包含 [客户]。[客户 ID] 不存在。

并且要注意结果,您按OrderId分组,然后按OrderDate分组。结果可能在同一日期(不同的 ID(有多个条目。

除了每个延续行的开头或结尾缺少分隔符空格外,WHERE 子句也不正确。必须连接变量输入。对表单字段/控件的引用是可变输入。

SQL = "SELECT Orders.OrderDate, Sum(QuotedPrice*QuantityOrdered) AS TotalCost " _
& "FROM Orders INNER JOIN LineItems ON Orders.OrderID = LineItems.OrderID " _
& "WHERE Orders.customerID = " & Me.customerID & " " _
& "GROUP BY Orders.OrderID, Orders.OrderDate " _
& "ORDER BY Orders.OrderDate"

如果 SQL 注入是一个问题,请使用 PARAMETERS 而不是串联。来自"Bobby Tables"XKCD漫画的SQL注入是如何工作的?

相关内容

最新更新