什么可以阻止 MS Access 2000 表单关闭?

Posted

技术标签:

【中文标题】什么可以阻止 MS Access 2000 表单关闭?【英文标题】:What can prevent an MS Access 2000 form from closing? 【发布时间】:2008-09-17 15:16:10 【问题描述】:

我的 Access 2000 DB 导致我出现问题 - 有时(尚未查明原因)“书”表单不会关闭。单击其关闭按钮什么也不做,文件->关闭什么也不做,即使关闭 Access 也不会导致任何操作。我没有此表单的 OnClose 处理程序。我能找到的唯一解决方法是打开 Vba 编辑器,更改该表单的代码(甚至添加一个空格,然后立即删除该空格),然后返回关闭“书”表单,将其关闭,然后说“不,我不想保存更改”。只有这样它才会关闭。有什么帮助吗?

【问题讨论】:

替代解决方法:在设计视图中编辑表单,然后再次拒绝保存。 【参考方案1】:

这是一个论坛帖子,我认为,描述了您面临的同样问题。以下摘录说明了一种解决方法。

我所做的是将代码放在重新分配源对象的关闭按钮上 将任何子表单转换为空白表单,例如:

me!subParts.sourceobject = "subBlank" 'subBlank 是我的表单 完全空白,没有代码和控件等。 docmd.close acForm, "fParts", acSaveNo

以上两行是我发现阻止访问提示的唯一方法 从弹出。

http://bytes.com/forum/thread681889.html

【讨论】:

【参考方案2】:

另一种选择是

(Me.Checkbox) 

或我喜欢的语法:

(Me!Checkbox)

在我看来,这个主题的帖子有很多混乱。原始发布者选择的答案引用了一篇文章,其中用户提示将设计更改保存到表单,但这里描述的问题似乎是表单关闭失败,而不是保存问题(保存问题仅出现在描述转到 VBE 并进行代码更改的解决方法中)。

我想知道原始用户是否设置了错误的 VBE 选项?如果您打开 VBE 并转到 TOOLS |选项,在常规选项卡上,您将看到有关错误处理的几个选项。应该选择 BREAK ON UNHANDLED ERRORS 或 BREAK IN CLASS MODULE,但重要的是要认识到,如果您使用前者,您可能不会看到某些类型的错误。

实际上并没有足够的细节来诊断更多问题,除了对复选框控件的引用似乎是导致问题的原因,但有许多 Access 编码最佳实践可以帮助您避免其中一些怪事。 Tony Toews's Best Practices page 中与代码相关的建议是一个很好的起点。

【讨论】:

【参考方案3】:

这确实很奇怪。您在表单上有任何计时器控件吗?如果这样做,请尝试在 OnClose 中禁用它。

【讨论】:

不,我在整个项目的任何地方都没有使用任何计时器控件。【参考方案4】:

询问您是否要保存更改的消息框可能会显示在表单后面。我相信此消息框是模态的,因此您必须单击是或否才能对表单执行任何操作,这就是您无法关闭它的原因。

【讨论】:

我不相信是这样,因为在尝试关闭表单后,我仍然可以与表单交互,转到下一条记录,进行更改等。【参考方案5】:

您的表单是否有卸载事件?可以取消,如果是,表单在表单视图中时不会关闭。它只会在设计视图中关闭,当您编辑 vba 代码时,表单在您编辑代码时在 Access 窗口中执行的操作。

【讨论】:

表单只有 OnCurrent、BeforeUpdate 和 OnOpen 事件。【参考方案6】:

您的表单是否有复​​选框、切换按钮或选项按钮? Access 2000 中存在一个错误,如果您在未明确使用 vba 代码中的 Value 属性的情况下测试值,则 Access 不会关闭,如下所示:

If Me.chkbox Then

对比:

If Me.chkbox.Value Then

【讨论】:

我的所有表单上都有一个复选框,代码完全相同。我不认为这会导致我原来的问题,但我会在所有地方解决这个问题,这样我就不会遇到这个错误。 现在您知道为什么表单无法关闭了。 在我进行此更改之前,表单关闭错误似乎已修复。 这似乎是固定的,因为您正在使用一种解决方法。你明白为什么解决方法有效吗?这是因为它正在进行设计更改,将其置于允许表单关闭的设计模式。删除解决方法并在使用按表单过滤的表单上使用 Me.chkbox.Value 语法 - 这是此错误的一个触发因素。

以上是关于什么可以阻止 MS Access 2000 表单关闭?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MS Access 2013 中创建只读表?

MS Access 2010:获取(Windows)阻止数据库的用户

如何解决Access操作或事件已被禁用模式阻止

MS Access DAO 连接在退出时放弃更改

MS Access ADP 自动编号

MS-Access - 从超链接数据单击打开表单