奇怪的问题-使用WHERE打开新表单时,表单不会关闭

时间:2019-04-22 13:55:32

标签: vba ms-access

我有两种形式(这里有问题)。 frmContactListfrmContactDetailsfrmContactList是姓,名和电子邮件地址的数据表列表。想法(到目前为止有效,并且没有问题)是,当您双击姓氏或名字时,将frmContactDetails形式打开到{{1}上选择的特定记录}。所有这些都很好。我遇到麻烦的地方(烦人)是我希望它先打开frmContactList然后关闭frmContactList。 OPEN可以正常工作,但是直到我关闭frmContactDetails时才会关闭。
BELIEVE 错误是因为我从“ prefab ”访问模板开始,然后从那里开始对其进行编辑。我不是从头开始创建这个项目的。 不会再犯该错误。以为我可以节省时间。是的...

这是我用于姓氏的frmContactDetails编码(一旦找出 bug ,名字将是相同的:

注意:我注释掉了DblClick()和宏错误代码,因为它是杂乱的“ prefab ”访问内容的一部分。

Form.Dirty


这是设计的一些图片。

设计简单。
Just a quick image of the design of the data in question - proving there is an "ID" field.

此处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 被打开(个人信息被涂黑),显示背景中的frmContactDetails未被关​​闭。

Image of both forms

1 个答案:

答案 0 :(得分:4)

使用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获取其数据,最后使用{{1 }}。

使用DoCmd.Close acForm, "fdlgMyDialogForm"关闭当前表单比将名称指定为字符串常量更可靠。