我在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
答案 0 :(得分:2)
一个简单的解决方案是在表单的属性表上设置Close Button = No
,然后为其On Click事件添加一个命令按钮 cmdCloseMe :
Private Sub cmdCloseMe_Click()
DoCmd.Close acForm, Me.Name, acSaveNo
End Sub
如果您需要在数据表视图中显示您的表单,则需要将其嵌入到另一个表单的子表单控件中,并将 cmdCloseMe 按钮添加到该表单。