Access窗体不会关闭

Access窗体不会关闭

问题描述:

我有一个应该关闭其前身的访问形式 -Access窗体不会关闭

If CurrentProject.AllForms("fmFileCheck").IsLoaded Then 
    DoCmd.Close acForm, "fmFileCheck", acSaveNo 
    Else 
    End If 

IF语句工作正常(我注入了一个消息框,以测试),但形式只是不关。没有任何错误信息或任何东西,它只是坐在那里和我一样,像一只松鼠嘲笑一只猫。

编辑:

的形式在它的前身的“当前”事件和上面的代码打开执行导通“电流” - 但如果代码开放所述第二形式是通过在一个按钮时调用首先它工作正常 - 所以我猜这个问题是在那里的某个地方?

+0

什么是DoCmd.SetWarnings'的'设置?如果你不指定'acSaveNo',会发生什么? (我发现从未设置,因为它总是回来咬我) – Brad

+0

我选择的设置没有什么不同,并且SetWarnings没有被触及。 –

+0

您正在关闭您打开的同一个表单吗?或关闭一个不同的?你想做什么?也许这可能会给我们一个线索! –

一种可能性是您的表单实际上命名为frmFileCheck而不是fmFileCheck?仔细检查表单名称上的拼写。

您还可以调试程序以查看条件是否为True且命令正在执行。

我认为你不需要在close语句中嵌套close命令。只需执行该命令,并且如果它被加载,它将关闭它。我几乎肯定你不会通过关闭未加载的表单来发生错误。

+0

不 - 我已经调试过(使用msgbox)并且if语句正常工作,这意味着窗体的名称是正确命名的并且已加载。 –

当其中一个事件过程正在运行时,您无法关闭窗体。

其实你应该得到一个

运行时错误“2585”:此操作不能进行,而处理窗体或报表事件。

你的代码中有On Error Resume Next吗?这可能是危险的。


我通常的方式去耦合事件是使用定时器事件。

在你的第二个形式,在上面的代码将运行,做到:

Me.TimerInterval = 1 

,然后(也第二种形式)

Private Sub Form_Timer() 

    Me.TimerInterval = 0 

    If CurrentProject.AllForms("fmFileCheck").IsLoaded Then 
     DoCmd.Close acForm, "fmFileCheck", acSaveNo 
    End If 

End Sub 
+0

你有试过吗? @MattBowyer – Andre