【问题标题】:Syntax error in Microsoft Access SQL Select query in VBA procedureVBA 过程中 Microsoft Access SQL 选择查询中的语法错误
【发布时间】:2015-08-15 10:04:27
【问题描述】:

我的 VBA 代码出现了语法错误。有人可以帮我找出导致错误的原因吗?

Private Sub Command11_Click()
    Dim EndingDate As Date
    'Getting ending date from Label named endDate
    EndingDate = endDate
    StartingDateTxt = DateSerial(Year(EndingDate), Month(EndingDate) - 15, Day(EndingDate))

    Dim customerRecords As New ADODB.Recordset
    customerRecords.Open "SELECT COUNT(*) AS N FROM (SELECT   DISTINCT E.Date,"&_
                        "E.[Inv Num],   E.CusName, E.[Name Street1], E.[Name Street2], "&_
                        "E.[Name City], E.[Name State], E.[Name Zip], E.[Account #], E.Amount FROM TempFromExcel "&_
                        "AS E  INNER JOIN TempFromExcel AS X ON E.CusName = X.CusName "&_
                        "WHERE (((DateDiff("d",X.Date,E.Date))>=30))  AND E.Date >= '" & StartingDateTxt & "' and"&_
                        "E.Date <= '" & endDate & "') AS T ;", _
                 CodeProject.Connection , _
                 adOpenStatic, _
                 adLockOptimistic, _
                 adCmdText
    MsgBox customerRecords("N")

End Sub

我的查询正在获取两个日期并查找两个日期之间的结果。

我想我可能只缺少那部分。其余的似乎很好,因为我已经明确检查了查询并且它运行良好。那么这样对吗?

E.Date &gt;= '" &amp; StartingDateTxt &amp; "' and E.Date &lt;= '" &amp; endDate &amp; "'

这已在答案中得到纠正,但在 Select 语句的第一行中仍然出现语法错误。有什么遗漏吗?

【问题讨论】:

标签: sql ms-access vba subquery select-query


【解决方案1】:

在 Microsoft Access SQL 查询中,您必须将日期值封装到 ##,例如 #06/01/2015#。与您的情况相关,它应该如下所示:

E.Date >= #" & StartingDateTxt & "# AND E.Date <=#" & endDate & "#"

希望这会有所帮助。

【讨论】:

  • 那你能重写查询吗?
  • 也只是猜测,Select 查询的其他部分是否以正确的方式编写?
  • 我已根据您针对原始问题的请求扩展了答案。如果您满意,请标记为已接受。如果您有更多问题,请单独发布。谢谢和问候,
  • 现在错误在第一行,根据调试器 customerRecords.Open "SELECT COUNT(*) AS N FROM (SELECT DISTINCT E.Date,"&_
  • 正如我已经建议您的那样,请单独发布您的第二个问题,突出显示有问题的 SQL 部分(如果没有看到实际的表结构和示例数据,您的代码的远程调试是一项艰巨的任务)。最好的问候,
【解决方案2】:

尝试更改这些行:

"WHERE (DateDiff('d', X.Date, E.Date) >= 30 AND E.Date >= #" & Format(StartingDateTxt, "yyyy\/mm\/dd") & "# and " & _
"E.Date <= #" & Format(endDate, "yyyy\/mm\/dd") & "#) AS T ;", _

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 2014-02-25
    • 1970-01-01
    相关资源
    最近更新 更多