【发布时间】:2018-07-06 14:28:56
【问题描述】:
我有一个 Access 2007 表单,其中包含一个带有以下行源的组合框:
SELECT qryProjectsIHaveAccessTo.projID, qryProjectsIHaveAccessTo.projName
FROM qryProjectsIHaveAccessTo
WHERE (((qryProjectsIHaveAccessTo.projSupportTracker)=False));
查询qryProjectsIHaveAccessTo 使用用户定义的函数作为其中一列的条件。此函数检测是否已运行 Startup 例程,如果没有运行它。
我遇到的问题是:如果我 SHIFT+open 数据库并以 DESIGN 模式打开表单,由于某种原因,用户定义的函数开始运行。这会导致错误,因为它调用的 Startup 例程试图打开一个表单(大概是 Access 在设计模式下打开另一个表单的过程中无法打开一个表单),有时我无法 CTRL+BREAK 退出。
当我在设计模式下保存表单时也会发生同样的事情。
如果我从组合框中删除 RowSource 字符串,则不再发生这种情况。但是为什么在设计模式下打开表单时会触发在控件 RowSource 中包含的查询中调用的函数?
有什么想法吗?感谢阅读!
【问题讨论】:
-
为什么不简单地将该函数的调用移到它所属的位置:表单的 OnLoad 事件?
-
确实这很奇怪,但需要更多信息来排除故障。让查询运行启动过程可能不是一个好主意。也许与其让您的查询以不受支持的方式运行代码,不如使用
AutoExecmacro 或默认表单的打开事件来检查和/或运行您的启动过程。 -
或者在OnLoad事件中分配控件的RowSource?仍然没有解决你正在做的事情的“原因”。
标签: vba ms-access ms-access-2007 startup designmode