是否有人知道什么可以防止这些命令实际保存表单?有一个我遗漏的设置可以使表格“只读”?我正在加载窗体上切换控制。一旦我关闭表格,我就无法看到它棒。

DoCmd.Close acForm, Me.Name, acSaveYes
DoCmd.Save acForm, Me.Name
.

编辑: 一些psiedo代码澄清。 此函数在表单负载上运行,以启用/禁用某些控件,按预期工作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属性。

有帮助吗?

解决方案

我无法找到任何文档,但它似乎无法保存在正常模式下进行的设计更改。我最终声明了一个全局集合类型变量。i在“form.name&control.name”的此集合变量中存储了串联字符串。如果表单从未打开过,则我运行了应启用哪些控件的长期检查,并在此集合全局中存储它们。如果表单至少打开一次,我将循环通过表单检查的控件,以查看它们是否在我的全球“授权”控件中的集合中。感觉真的很黑暗,但它的运作良好。

其他提示

您所拥有的代码(关闭,然后保存)在我的测试上失败,因为me.name在执行关闭后为空。虽然我不知道你可能拥有什么其他代码,但我能够在切换订单后让表单关闭。

我建议您将代码放在“打开”赛事中如下:

Private Sub Form_Open(Cancel As Integer)
    DoCmd.Save acForm, Me.Name
    DoCmd.Close acForm, Me.Name, acSaveYes
End Sub
.

您是否要在条件下更改已启用的属性?如果您只需要控制禁用,如果记录......那么,您将想要移动启用表单的当前事件,在每个记录导航时都会触发。负载和打开太早,不要在导航时重复。

Private Sub Form_Current()
  If Me!X = True Then
    Me.Controls("somecontrol").Enabled = False
  Else
    Me.Controls("somecontrol").Enabled = True
  End If
End Sub
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top