首页 > 解决方案 > 奇怪的问题 - 使用 WHERE 打开新表单时表单不会关闭

问题描述

我有两种形式(这里有问题)。 frmContactListfrmContactDetailsfrmContactList是姓氏、名字和电子邮件地址的数据表列表。这个想法(到目前为止有效并且没有问题)是,当您双击姓氏或名字时,表单frmContactDetails将打开到在 上选择的特定记录frmContactList。这一切都很好。我遇到麻烦的地方(烦人)是我希望它先打开frmContactDetails然后关闭 frmContactList。OPEN 工作正常,但是在我 close 之前不会发生 close frmContactDetails
相信错误在于我从“预制”访问模板开始并从那里编辑它。我没有从头开始创建这个项目。 韩元'. 以为我会节省时间。对对...

这是DblClick()我用于姓氏的编码(一旦我发现错误,名字将是相同的注意

我注释掉了Form.Dirty和宏错误代码,因为它是那个凌乱的“预制”访问内容的一部分。

Private Sub Last_Name_DblClick(Cancel As Integer)
On Error GoTo Last_Name_DblClick_Err

    On Error Resume Next
'    If (Form.Dirty) Then
'        DoCmd.RunCommand acCmdSaveRecord
'    End If
'    If (MacroError.Number <> 0) Then
'        Beep
'        MsgBox MacroError.Description, vbOKOnly, ""
'        Exit Sub
'    End If

    DoCmd.OpenForm "frmContactDetails", acNormal, "", "[ID]=" & ID, , acDialog
    DoCmd.Close acForm, "frmContactList"

Last_Name_DblClick_Exit:
    Exit Sub

Last_Name_DblClick_Err:
    MsgBox Error$
    Resume Last_Name_DblClick_Exit

End Sub


这是设计的几张图片。

简单的设计。 这里是打开的(个人信息被涂黑了)在后台显示没有关闭。
只是有关数据设计的快速图像 - 证明存在

frmContactDetailsfrmContactList

两种形式的图像

标签: vbams-access

解决方案


当您使用 打开表单时WindowMode:=acDialog,代码会在此代码行处停止,直到打开的表单不可见或关闭。只需删除此参数。

DoCmd.OpenForm "frmContactDetails", View:=acNormal, WhereCondition:="[ID]=" & ID
DoCmd.Close acForm, Me.Name

注意:WindowMode:=acDialog如果您需要在呼叫站点以对话框形式输入的数据,请使用。在这种情况下,不要使用 关闭对话框表单,Me.Close而是使用 隐藏它Me.Visible = False,然后通过 获取其数据Forms!fdlgMyDialogForm!TheData.Value,最后在调用站点使用 关闭它DoCmd.Close acForm, "fdlgMyDialogForm"

关闭当前表单Me.Name比将名称指定为字符串常量更健壮。


推荐阅读