【问题标题】:syntax error in string in query in VBA accessVBA访问中查询字符串中的语法错误
【发布时间】:2016-08-12 10:13:48
【问题描述】:

在 vba 访问中运行此行时出现 3075 错误:

Dim sqlMZG As String
sqlMZG = "SELECT MAZeitenGesamt.* Where MAZeitenGesamt.MA = 'JPA' FROM MAZeitenGesamt;"

其中 JPA 是一个常数值。我尝试了以下表格,但都没有奏效。

SELECT MAZeitenGesamt.* Where MAZeitenGesamt.[MA] = '" & "JPA" & "' FROM MAZeitenGesamt;

SELECT MAZeitenGesamt.* Where MAZeitenGesamt.MA = '" & "JPA" & "' FROM MAZeitenGesamt;

SELECT MAZeitenGesamt.* Where MAZeitenGesamt.MA = ""JPA"" FROM MAZeitenGesamt;

SELECT MAZeitenGesamt.* Where MAZeitenGesamt.MA = \"JPA\"  FROM MAZeitenGesamt;

SELECT MAZeitenGesamt.* Where MAZeitenGesamt.MA = \'JPA\' FROM MAZeitenGesamt;

有什么想法吗?

【问题讨论】:

  • 查询的正确格式是这样的:"SELECT * FROM tbl WHERE something = x" 所以在你的情况下:"SELECT MAZeitenGesamt.* FROM MAZeitenGesamt WHERE MAZeitenGesamt.MA = 'JPA'"
  • @gizlmeier -- 我建议您将其添加为答案,因为我认为您已经正确解决了 Mary 的问题
  • @gizlmeier 问题是你说的。你想把它作为答案发送吗?

标签: sql vba ms-access syntax


【解决方案1】:

我建议您使用参数而不是引用文字。也就是说,@gizlmeier 是对的,因为您的语法一开始就是错误的。

Dim sqlMZG As String
sqlMZG = "parameters [MAParam] text; " & _
  "SELECT MAZeitenGesamt.* FROM MAZeitenGesamt Where MAZeitenGesamt.MA = [MAParam];"

从那里,当您创建查询时,您可以设置参数的值:

Set qry = CurrentDb.CreateQueryDef("GetMaz", sqlMZG)
qry.Parameters("MAParam") = JPA

不用担心乱七八糟的引用等等。

【讨论】:

  • 即:qry.Parameters("MAParam") = "JPA"
  • 哦,是字面意思?我认为 JPA 是一个包含实际值的变量……我的错。如果是文字,那么参数就没有那么有用了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多