vba - 编译期间的陷阱语法错误

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

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

如果MyValue =“”,则
Me.MyList.RowSource =“选择...
从...
正确加入...
通过...分组...
订购...
其他
Me.MyList.RowSource =“选择...
从...
正确加入...
通过...分组...
HAVING MyValue
订购...
万一

其中MyValue是HAVING部分的一些标准。
只要MyValue不是“”(空白),此方法就可以正常工作。但是,在编译过程中,我收到一个Microsoft Access错误:“HAVING子句语法错误”。在运行期间,不会发生带有HAVING的“else”,因此在那里没有错误。如何避免或捕获“HA​​VING子句的语法错误”。在编译期间?通常的“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/

相关文章:

excel - 如何使用vba引用其他点选择特定范围?

vba - Excel Addin 自动化运行问题

vba - 如何在 VBA 中创建一个函数以返回与记录集中每条记录的特定条件匹配的列名?

vba - 如何找到MS Access数据库的当前路径(目录)?

Java:初始化错误的适当异常

excel - 所有空白值的平均值错误处理

sql - Recordset.Edit或Update sql vba语句更新最快的方法?

sql - 在 ms access 中显示空白(null/empty)值

php - 如何使PHP Artisan Tinker显示完整错误(消息)?

excel - 正则表达式从 Outlook 电子邮件正文中提取金额