有没有人知道什么可以阻止这些命令中的任何一个实际保存表单?是否有一个我错过的设置可以使表单“只读”?我在加载时切换表单上的control.enabled属性,但是一旦我关闭表单,我就看不到它了。
DoCmd.Close acForm, Me.Name, acSaveYes
DoCmd.Save acForm, Me.Name
编辑: 一些伪代码来澄清。 此函数在表单加载时运行以启用/禁用某些控件,并按预期工作100%。
Private Sub Form_Load()
If IsNull(TempVars.Item(Me.Name)) Then
TempVars.Add Me.Name,1
If somecondition = true then
Me.Controls.Item("somecontrol").enabled = True
Else
Me.Controls.Item("somecontrol").enabled = False
End If
End If
End Sub
此点击事件会关闭表单并打开另一个表单。问题是,我在表单加载上设置的control.enabled设置不保存。
Private Sub button_OnClick()
DoCmd.OpenForm "someotherform", acnormal
DoCmd.Close acForm, Me.Name, acSaveYes
End Sub
下次打开第一个表单时,将不会设置控件属性,我需要再次设置conrol.enabled属性。
答案 0 :(得分:2)
我无法找到任何文档,但似乎无法保存在普通模式下进行的设计更改。我最终声明了一个全局集合类型变量。我将连接的字符串存储在约定“Form.Name& Control.Name”的集合变量中。如果表单从未打开过,我会对应该启用哪些控件进行长时间检查,并将它们存储在此集合全局中。如果表单至少打开过一次,我会查看表单上的控件,查看它们是否在我的“授权”控件的全局集合中。感觉真的很乱,但效果还不错。
答案 1 :(得分:0)
您的代码(关闭,然后保存)在我的测试中失败,因为执行关闭后Me.Name为空。虽然我不知道你可能有什么其他代码,但是当我切换订单时,我能够关闭表单。
我建议您将代码放在'Open'事件中,如下所示:
Private Sub Form_Open(Cancel As Integer)
DoCmd.Save acForm, Me.Name
DoCmd.Close acForm, Me.Name, acSaveYes
End Sub
答案 2 :(得分:0)
是否要在某个条件下更改已启用的属性?如果您只是需要该控件被禁用,如果记录...那么您将要移动启用表单的当前事件,该事件在每个记录导航时触发。加载和打开太早,不会在导航时重复。
Private Sub Form_Current()
If Me!X = True Then
Me.Controls("somecontrol").Enabled = False
Else
Me.Controls("somecontrol").Enabled = True
End If
End Sub