关闭 Access 时防止对打开的表单进行“保存设计更改”

Rom*_*nus 5 ms-access vba ms-access-2010

我有一个拆分表单作为 Access 2010 应用程序中的主界面。通常,用户可以调整数据表部分的大小、重新排列列等。

但是,我不希望他们在离开表单时保存此类更改。每次打开表单时,都应加载默认格式。

除了一种关闭方法,我已经解决了所有问题。为了避免它们使用默认关闭按钮关闭,我设置了 Border Style = None。相反,我有一个关闭表单按钮,使用DoCmd.CLOSE acForm, "Main_form", acSaveNo

但是,如果用户单击 Access 应用程序的关闭按钮,它会像往常一样弹出“是否要保存对表单设计的更改”对话框。

我考虑过禁用应用程序的关闭按钮,但是搞乱 Windows API 超出了我的技能(并且应该有一种方法可以在不采取极端措施的情况下完成此操作)。

Rom*_*nus 4

我找到了一种方法来做到这一点。数据库选项、表单格式选项和 vba 的组合可以做到这一点。

  1. 转到主 Access 选项中的“当前数据库”选项屏幕,然后取消选中“在数据表视图中启用设计更改”。这将阻止数据库中的所有数据表视图设计更改,因此您必须进入设计模式才能进行任何表更改。用户仍然可以对表单中的列进行重新排序和调整大小,但 Access 不再认为设计更改有效,并且无论您如何关闭表单都不会提示保存它

  2. 设置表单格式属性“保存分割栏位置”=否。现在,当表单关闭时,表单将清除对分割栏位置的任何更改。然而,Access 对这个设置感到非常奇怪。一旦我将该选项设置为“否”,我就无法再使用设计视图或布局视图来设置新的默认栏位置;它总是恢复到我第一次尝试此设置时的位置。即使将该选项重置为“是”、保存设计更改并完全退出数据库也无法解决此问题。

  3. 因此,我添加了一个加载事件来在表单打开时重置分割表单大小:Me.SplitFormSize = 9000。涉及的人数之多令人惊讶;在表单属性列表中,该值以英寸为单位设置。我的是 6.5 英寸,显然可以转换为 9000。

通过这三项更改(以及我在问题中详细介绍的步骤),即使用户完全关闭 Access 应用程序,Access 也不再提示在关闭表单时保存设计更改。该模板还将拆分模板杆弹回其应受负载的位置。