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
事件,并且在 Close
或 Unload
事件中它会在转到此子之前保存,因此我无法取消它以稍后在代码中关闭。
隐藏代码:
'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 不起作用的主要内容,如果未能解决你的问题,请参考以下文章