MS Access - 关闭表单而不保存设计更改,acSaveNo 不起作用

Posted

技术标签:

【中文标题】MS Access - 关闭表单而不保存设计更改,acSaveNo 不起作用【英文标题】:MS Access - Close form without save design changes, acSaveNo doesnt work 【发布时间】:2012-03-09 16:44:37 【问题描述】:

我在 MS Access 中有一个前端/后端应用程序,我在关闭表单时遇到了一些性能问题。

这些表单总是在关闭之前保存,因为在Form_Open 我隐藏了一些列并编辑了标题。然后,当我关闭表单时,它会保存隐藏的列,浪费很多时间!

我已经在 Access 中进行了很多设置修改,以优化 FE/BE。但是我仍然对关闭前保存的表单有问题。在保存事件时,它确实浪费了很多时间。使用隐藏/编辑列例程需要 20 秒才能保存。如果没有例程,它需要 1 秒或更短的时间,但我的数据没有保存。

如何隐藏/编辑这些列而无需事后保存表单?或者如何在不保存结构更改的情况下关闭表单?

不幸的是,Access 没有 BeforeClose 事件,并且在 CloseUnload 事件中它会在转到此子之前保存,因此我无法取消它以稍后在代码中关闭。

隐藏代码:

'show all columns
For i = 1 To 8
    Form_Y_SubF_LP.Controls("Item_00" & i).ColumnHidden = False
    Form_Y_SubF_LP.Controls("Quantity_00" & i).ColumnHidden = False
    Form_Y_SubF_LP.Controls("DistributionEQ_00" & i).ColumnHidden = False
Next
'Hide unnecessary columns
For i = 8 To ProtQuant + 1 Step -1
    Form_Y_SubF_LP.Controls("Item_00" & i).ColumnHidden = True
    Form_Y_SubF_LP.Controls("Quantity_00" & i).ColumnHidden = True
    Form_Y_SubF_LP.Controls("DistributionEQ_00" & i).ColumnHidden = True
Next

'Change the caption of columns to the real name of each prototype
prot = DLookup("[Prototype]", "Y_Configurações", "[Program]= '" & ProgramName & "'")
For i = 0 To UBound(Split(prot, ";"), 1)
    Form_Y_SubF_LP.Controls("Item_00" & i).Properties("Caption") = "Item_" & Split(prot, ";")(i)
    Form_Y_SubF_LP.Controls("Quantity_00" & i).Properties("Caption") = "Quantity_" & Split(prot, ";")(i)
    Form_Y_SubF_LP.Controls("DistributionEQ_00" & i).Properties("Caption") = "DistributionEQ_" & Split(prot, ";")(i)
Next

【问题讨论】:

【参考方案1】:

一个简单的解决方案是在表单的属性表上设置Close Button = No,然后添加一个命令按钮,cmdCloseMe,并将其用于其 On Click 事件:

Private Sub cmdCloseMe_Click()
    DoCmd.Close acForm, Me.Name, acSaveNo
End Sub

如果您需要在数据表视图中显示您的表单,您需要将其嵌入到另一个表单的子表单控件中,并将 cmdCloseMe 按钮添加到该表单。

【讨论】:

我的表格是数据表.. 但我会尽力按照您说的做.. 感谢您的帮助!

以上是关于MS Access - 关闭表单而不保存设计更改,acSaveNo 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

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

MS Access - 使用子表单过滤时禁止保存提示

MS Access 将报告导出为 pdf

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

MS Access 2016:CTRL+A 保存表单?

在 C# 中为表单创建保存按钮