我正在根据一个值有条件地设置一个列表框行源:
如果MyValue =“”,则
Me.MyList.RowSource =“选择...
从...
正确加入...
通过...分组...
订购...
其他
Me.MyList.RowSource =“选择...
从...
正确加入...
通过...分组...
HAVING MyValue
订购...
万一
其中MyValue是HAVING部分的一些标准。
只要MyValue不是“”(空白),此方法就可以正常工作。但是,在编译过程中,我收到一个Microsoft Access错误:“HAVING子句语法错误”。在运行期间,不会发生带有HAVING的“else”,因此在那里没有错误。如何避免或捕获“HAVING子句的语法错误”。在编译期间?通常的“On error ...”在编译期间不会被捕获。
谢谢。
最佳答案
编译器无法将代码插入列表框字段并检查结果。但是,一些好的做法将帮助您解决这一问题。
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。
关于vba - 编译期间的陷阱语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35444379/