关闭 Access 并引发“无法将焦点移至控件”错误时触发加载事件

Posted

技术标签:

【中文标题】关闭 Access 并引发“无法将焦点移至控件”错误时触发加载事件【英文标题】:On Load event firing when closing Access and throwing "can't move the focus to the control" error 【发布时间】:2017-11-21 19:10:43 【问题描述】:

我有一个 Access 数据库,其中我在主窗体的 On Load 事件上有代码,用于将焦点设置到文本框并加载“新”记录。代码是:

    Private Sub Form_Load()

    'Makes it so that when frmDiversion_Review loads, it defaults to a new record
           DoCmd.GoToRecord , , acNewRec
           Me!FromDate.SetFocus

    End Sub

FromDate 是一个未绑定的日期字段,用于表单标题的搜索/过滤部分。

我已经拆分了数据库,并且准备好了一个 .accde 文件,但是我注意到当我在 .accde 文件中关闭 Access 时,它给了我以下错误:

“您作为事件属性设置输入的加载时表达式产生了以下错误:

****NameOfDatabase**** 无法将焦点移到控件 FromDate。"

它没有给出错误编号。

代码已编译,我只使用 .accde 文件得到此错误。我不知道为什么在我关闭 Access 时甚至会触发 On Load 事件。有什么想法吗?

【问题讨论】:

这可能是您需要De-Compile您的应用程序的标志。在重新创建 .accde 之前,在主前端 .accdb 中执行此操作。有时,这种奇怪的信息可能会无缘无故地出现。 不幸的是,这不起作用。我反编译,再次进行调试/编译过程,保存,压缩和修复,然后创建一个新的 .accde 文件,我得到了同样的错误。 该表单后面还有其他代码吗?检查Form_Close() 有相当多的代码,但没有关于 Form_Close 事件的代码。 Form_Open 事件中的代码仅根据用户的访问级别锁定某些控件。 FromDate 控件不是该部分的一部分,无论用户的访问级别如何,都会发生错误。 我使用 Load 事件来设置焦点以控制没有问题。但是,我在引用控件时使用点而不是 bang (!):Me.FromDate.SetFocus。但是我从来没有用过acde。 【参考方案1】:

一些奇怪的情况可能会产生这种情况(例如,当您关闭时,与其他表单相关的某些内容...)引用了导致其打开的此表单。从这里很难说。

但是有一个简单的方法......只需在例程的开头添加这一行

出错后继续下一步

如果您知道例程中没有真正的错误,这是安全的,除了这个实际上没有任何意义的烦人的错误。如果可能发生真正的错误,那么添加这个 easy-out 后您将不再看到它们。

就个人而言,我更愿意找到原因并解决它,尤其是因为在您忙于关闭应用程序时,其他表单似乎正在尝试打开此表单,这是一个令人不安的想法。但是......当所有其他方法都失败时,这是一个解决方案。

【讨论】:

我也希望能弄明白。这似乎是一个很小的问题,但您的解决方案将是一个很好的临时备份计划,而我会尝试寻求一些帮助来解决它。

以上是关于关闭 Access 并引发“无法将焦点移至控件”错误时触发加载事件的主要内容,如果未能解决你的问题,请参考以下文章

Web API 2 启用 CORS 引发 Access-Control-Allow-Origin 错误

在 C# 中,我应该如何关闭正在运行的线程(Access DB)?

Mybatis的JDBC提交设置/关闭mysql自动提交------关于mysql自动提交引发的惨剧

Access DAO 为 Access 97 文件引发 COMException

MS Access 以编程方式引发表单事件

从 MS Access 中提取数据并输出图表 [关闭]