我有一个Access 2007表单,其中包含一个带有以下Rowsource的组合框:
SELECT qryProjectsIHaveAccessTo.projID, qryProjectsIHaveAccessTo.projName
FROM qryProjectsIHaveAccessTo
WHERE (((qryProjectsIHaveAccessTo.projSupportTracker)=False));
查询qryProjectsIHaveAccessTo
使用用户定义的函数作为其中一列的条件。此功能检测启动例程是否已运行,如果没有运行。
我遇到的问题是:如果我 SHIFT +打开数据库并以 DESIGN 模式打开表单,由于某种原因,用户定义的函数开始运行。然后,这会导致错误,因为它调用的启动例程尝试打开表单(可能是Access在设计模式下打开另一个表单的过程中无法打开表单),有时我无法 CTRL + BREAK 。
当我在“设计”模式下保存表单时,也会发生同样的事情。
如果我从组合框中删除了RowSource
字符串,这种情况将不再发生。但是为什么在“设计模式”下打开表单时为什么会触发控件RowSource中包含的查询中调用的函数?
有任何想法吗?感谢您的阅读!
答案 0 :(得分:1)
在设计视图中打开表单时,Access会验证表单记录源仍然存在,并且绑定到表单控件的所有查询字段都仍然存在。
如果其中某些检查失败,Access将在出现问题的绑定控件上显示绿色小三角形。
进行此检查时,它会在查询中运行UDF。
正如评论中所说,调用启动函数并不完全属于从查询中调用的UDF。将其放到{{ index .Fields "value" }}
宏调用的函数中。