我有一个 Access 2007 表单,其中包含一个包含以下行源的组合框:
SELECT qryProjectsIHaveAccessTo.projID, qryProjectsIHaveAccessTo.projName
FROM qryProjectsIHaveAccessTo
WHERE (((qryProjectsIHaveAccessTo.projSupportTracker)=False));
查询qryProjectsIHaveAccessTo
使用用户定义的函数作为其中一列的条件。此函数检测是否已运行启动例程,如果未运行它。
我遇到的问题是:如果我SHIFT+打开数据库并在设计模式下打开表单,由于某种原因,用户定义的函数开始运行。然后,这会导致错误,因为它调用的启动例程尝试打开一个窗体(大概 Access 在设计模式下打开另一个窗体的过程中无法打开一个窗体(,有时我无法按 Ctrl+BREAK退出它。
当我在设计模式下保存表单时,也会发生同样的事情。
如果我从组合框中删除RowSource
字符串,则不再发生这种情况。但是,为什么在控件 RowSource 中包含的查询中调用的函数会在窗体以设计模式打开时触发?
有人有什么想法吗?感谢您的阅读!
在设计视图中打开窗体时,Access 将验证窗体记录源是否仍然存在,以及绑定到窗体控件的所有查询字段是否仍然存在。
如果其中一些检查失败,Access 会在有问题的绑定控件上显示绿色小三角形。
执行此检查时,它会在查询中运行 UDF。
正如评论中所说,调用启动函数在很大程度上不属于从查询调用的 UDF。将其放入由AutoExec
宏调用的函数中。