同时使用Screen.ActiveForm和DoCmd.Close引起的错误

时间:2017-07-11 20:09:17

标签: vba ms-access access-vba

Option Compare Database
Option Explicit
Public frmPrevious as Form

Private Sub Form_Load()
    Set frmPrevious = Screen.ActiveForm
End Sub

Private Sub SvExitBtn_Click()
    If frmPrevious.Name = "LocationFrm" Then
        .......
        DoCmd.Close acForm, "AddressEntry", acSaveYes
    Else
        .......
        DoCmd.Close acForm, "AddressEntry", acSaveYes

    End If

End Sub

所以我在Load事件上使用Screen.ActiveForm,这样我就可以将Access设置为变量frmPrevious。通过这种方式,我可以检测用户从导航的哪些表单,并运行特定的代码块来解释该问题。

基本上发生的事情是用户从预定义列表中搜索地址。如果他们无法从这些搜索结果中找到它,他们会打开一个新表单AddressEntry并键入新地址。完成后,点击应保存记录的SvExitBtn,然后只关闭 表单。

不幸的是,该按钮也关闭了设置为frmPrevious的表单。我假设这是因为DoCmd.Close关闭了活动窗口,但这就是我设置其他参数的原因。所以我不明白为什么这不起作用?

1 个答案:

答案 0 :(得分:0)

不要做任何这些。当用户打开表单AddressEntry时,将其以dialog模式打开。当它关闭时,您将返回到起始形式。完成。