我正在根据值有条件地设置列表框行源:
如果MyValue =“”那么
Me.MyList.RowSource =“SELECT ...
FROM ...
正确的加入...
GROUP BY ...
订购......
否则
Me.MyList.RowSource =“SELECT ...
FROM ...
正确的加入...
GROUP BY ...
拥有MyValue
订购......
如果
其中MyValue是HAVING部分的一些标准。 只要MyValue不是“”(空白),这就可以正常工作。但是在编译期间,我收到Microsoft Access错误:“HAVING子句上的语法错误。”在运行期间,没有发生带有HAVING的“else”,因此没有错误。如何避免或捕获“HAVING子句上的语法错误”。在编译期间?通常的“On error ...”在编译期间不会陷阱。
感谢。
答案 0 :(得分: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。
答案 1 :(得分:0)
感谢您的建议,但我发现了问题。
事实证明,我在属性表中为具有违规HAVING子句的列表框中有一个遗留查询定义。当我从属性表中删除定义时,表单打开时没有恼人的语法错误。我在原帖中包含的vba代码就好了。