防止'保存设计更改'关闭Access

时间:2016-10-06 21:25:34

标签: vba ms-access access-vba ms-access-2010

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

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

除了一种关闭方法之外,我已经处理了所有关闭方法。为了避免它们使用默认关闭按钮关闭,我设置了边框样式=无。相反,我有一个使用DoCmd.CLOSE acForm, "Main_form", acSaveNo

的关闭表单按钮

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

我考虑过禁用应用程序的“关闭”按钮,但是使用Windows API却超出了我的技能(应该有办法在不采取极端措施的情况下完成此操作)。

3 个答案:

答案 0 :(得分:3)

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

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

  2. 设置表单格式属性' Save Splitter Bar Position' =否。表格现在将清除表格关闭时对酒吧位置的任何更改。然而,访问在这个设置上对我来说真的很奇怪。一旦我将选项设置为no,我就不能再使用设计视图或布局视图来设置新的默认条位置;它总是恢复到我第一次尝试此设置时的位置。即使将选项重置为是,保存设计更改并完全退出数据库也无法解决此问题。

  3. 因此,我在表单打开时添加了一个On Load事件来重置拆分表单大小:Me.SplitFormSize = 9000。所涉及的数字令人惊讶地高;在表单属性列表中,这是以英寸为单位。我的是6.5",显然翻译为9000。

  4. 通过这三个更改(以及我在问题中详述的步骤),即使用户完全关闭了Access应用程序,Access也不再提示在窗体关闭时保存设计更改。该表单还将拆分的表单栏扣回到应该加载的位置。

答案 1 :(得分:1)

由于API也超出了我的技能,这里有一个左侧的解决方法。

复制Main_Form并将其重命名为" Main_Form_Template"。创建Autoexec模块或编辑现有模块并添加:

DoCmd.DeleteObject acForm, "Main_Form"
DoCmd.CopyObject , "Main_Form", acForm, "Main_Form_Template"

即使用户在关闭Access时保存表单,也应该在每次打开数据库时为用户恢复标准模板。

答案 2 :(得分:0)

在表单上关闭关闭按钮。

在表单的属性表格式选项卡上,大约有2/3的向下。设置关闭按钮=否

这会强制用户通过您创建的按钮关闭它。