在设计视图中打开窗体时,Access在控件的RowSource中运行功能

时间:2018-07-06 14:28:57

标签: vba access-vba ms-access-2007 startup designmode

我有一个Access 2007表单,其中包含一个带有以下Rowsource的组合框:

SELECT qryProjectsIHaveAccessTo.projID, qryProjectsIHaveAccessTo.projName 
FROM qryProjectsIHaveAccessTo 
WHERE (((qryProjectsIHaveAccessTo.projSupportTracker)=False));

查询qryProjectsIHaveAccessTo使用用户定义的函数作为其中一列的条件。此功能检测启动例程是否已运行,如果没有运行。

我遇到的问题是:如果我 SHIFT +打开数据库并以 DESIGN 模式打开表单,由于某种原因,用户定义的函数开始运行。然后,这会导致错误,因为它调用的启动例程尝试打开表单(可能是Access在设计模式下打开另一个表单的过程中无法打开表单),有时我无法 CTRL + BREAK

当我在“设计”模式下保存表单时,也会发生同样的事情。

如果我从组合框中删除了RowSource字符串,这种情况将不再发生。但是为什么在“设计模式”下​​打开表单时为什么会触发控件RowSource中包含的查询中调用的函数?

有任何想法吗?感谢您的阅读!

1 个答案:

答案 0 :(得分:1)

在设计视图中打开表单时,Access会验证表单记录源仍然存在,并且绑定到表单控件的所有查询字段都仍然存在。

如果其中某些检查失败,Access将在出现问题的绑定控件上显示绿色小三角形。

进行此检查时,它会在查询中运行UDF。

正如评论中所说,调用启动函数并不完全属于从查询中调用的UDF。将其放到{{ index .Fields "value" }} 宏调用的函数中。