我有一个表单“Form1”,当单击Form1中的按钮“Command1”时,它会打开另一个表单“Form2”。如下面的代码所示,控件传递给Form2,一旦用户使用Form2执行某些操作,Form2就会隐藏或关闭自身,然后将控件返回到Form1。无论Form2是隐藏还是关闭,Form1都会执行一些操作并关闭Form2。
Private Sub Command1_Click()
DoCmd.OpenForm "Form2", , , , , acDialog
If CurrentProject.AllForms("Form2").IsLoaded Then
'Do stuff
End If
DoCmd.Close acDialog, "Form2"
End Sub
这似乎第一次打开Form1时工作正常。但是,当我关闭并重新打开Form1然后重复上述步骤时,Form2不会出现,控件直接传递给上面子例程中的If语句。怎么了?一个线索是CurrentProject.AllForms(“Form2”)。在Form2第一次打开后,IsLoaded似乎永久设置为True。
发生了什么事?我怎样才能解决这个问题?谢谢你的帮助。
答案 0 :(得分:1)
你试过吗?:
DoCmd.Close acForm, "Form2"
常量acDialog解析为3,而acForm解析为2.代码实际上是告诉Access关闭名为Form2的报告。可能,表格永远不会被正确卸载,因为错误的常数正在经历。