访问表单不会关闭

时间:2016-09-22 12:56:30

标签: vba ms-access

我有一个可以关闭其前身的Access表单 -

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

IF语句工作正常(我已经注入了一个消息框来测试),但表单根本没有关闭。没有错误信息或任何东西,它只是坐在那里诱惑我,像一只松鼠嘲笑猫。

编辑:

表格在其前任的“当前”事件上打开,上面的代码在“当前”上执行 - 但如果打开的代码通过第一个按钮调用第二个表单然后它运作正常 - 所以我猜这个问题就在那里?

3 个答案:

答案 0 :(得分:0)

有可能你的表单实际上是frmFileCheck而不是fmFileCheck吗?仔细检查表单名称的拼写。

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

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

答案 1 :(得分:0)

在其中一个活动程序正在运行时,您无法关闭该表单。

其实你应该得到一个

  

运行时错误' 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

答案 2 :(得分:0)

我有一个类似的问题,表格(连续表格,显示公司信息,地址,联系信息等)独立,虽然从另一个表单的按钮点击打开。该表单仅用于查看数据,无数据输入;所以我将Data Enabled设置为False。无论表单是如何打开的(从另一个表单或左侧的导航栏),表单都不会通过使用Button(单击事件驱动器docmd.close acform,me.name)来关闭。

我最近打开它决定将Data Enabled False切换为True并将Data Lock切换为True(来自false)。完成该按钮后,表单再次开始工作。不知道切换这两个设置是否与它有关;但我对表单做的唯一其他事情就是调整Tab键顺序(Close按钮位于列表的底部并保留在那里)。