【问题标题】:Trap Syntax Error During Compile编译期间陷阱语法错误
【发布时间】:2016-05-28 10:19:01
【问题描述】:

我正在根据值有条件地设置列表框行源:

如果 MyValue = "" 那么
Me.MyList.RowSource = "选择...
来自...
正确加入...
分组...
订购...
其他
Me.MyList.RowSource = "选择...
来自...
正确加入...
分组...
拥有 MyValue
订购...
结束如果

其中 MyValue 是 HAVING 部分的一些标准。 只要 MyValue 不是“”(空白),它就可以正常工作。但是在编译期间,我收到 Microsoft Access 错误:“HAVING 子句的语法错误”。在运行时,不会出现带有 HAVING 的“else”,因此那里没有错误。如何避免或捕获“HAVING 子句的语法错误”。在编译期间?通常的“On error...”不会在编译期间陷入陷阱。

谢谢。

【问题讨论】:

  • VBA 编译器不会在 SQL 字符串中显示语法错误。您应该向我们展示您的实际代码。

标签: vba ms-access error-handling compiler-errors


【解决方案1】:

编译器无法将代码插入列表框字段并检查结果。但是,一些好的做法将帮助您解决这个问题。

Dim strRowSourceSQL as String

strRowSourceSQL  = "SELECT ... FROM ... RIGHT JOIN ..."

If MyValue = "" then
    strRowSourceSQL = strRowSourceSQL & "MORE SQL HERE"
else
    strRowSourceSQL = strRowSourceSQL & "DIFFERENT SQL HERE"
end if

Me.MyList.RowSource = strRowSourceSQL

这种安排将让您检查strRowSourceSQL。设置断点并...

Debug.Print strRowSourceSQL

完成后,进入查询编辑器并修复问题所在。另外,关注these principles

【讨论】:

    【解决方案2】:

    感谢您的建议,但我发现了问题。

    事实证明,我在 属性表 中有一个剩余的查询定义,用于包含有问题的 HAVING 子句的列表框。当我从属性表中删除定义时,表单打开时没有烦人的语法错误。我在原始帖子中包含的 vba 代码很好。

    【讨论】:

      猜你喜欢
      • 2020-02-07
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 2013-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多