我有两种形式(这里有问题)。 frmContactList
和frmContactDetails
。 frmContactList
是姓,名和电子邮件地址的数据表列表。想法(到目前为止有效,并且没有问题)是,当您双击姓氏或名字时,将frmContactDetails
形式打开到{{1}上选择的特定记录}。所有这些都很好。我遇到麻烦的地方(烦人)是我希望它先打开frmContactList
然后关闭frmContactList。 OPEN可以正常工作,但是直到我关闭frmContactDetails
时才会关闭。
我 BELIEVE 错误是因为我从“ prefab ”访问模板开始,然后从那里开始对其进行编辑。我不是从头开始创建这个项目的。 不会再犯该错误。以为我可以节省时间。是的...
这是我用于姓氏的frmContactDetails
编码(一旦找出 bug ,名字将是相同的:
注意:我注释掉了DblClick()
和宏错误代码,因为它是杂乱的“ prefab ”访问内容的一部分。
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
被打开(个人信息被涂黑),显示背景中的frmContactDetails
未被关闭。
答案 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"
关闭当前表单比将名称指定为字符串常量更可靠。