vba - 奇怪的问题 - 使用 WHERE 打开新表单时表单不会关闭
问题描述
我有两种形式(这里有问题)。 frmContactList
和frmContactDetails
。 frmContactList
是姓氏、名字和电子邮件地址的数据表列表。这个想法(到目前为止有效并且没有问题)是,当您双击姓氏或名字时,表单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
这是设计的几张图片。
简单的设计。
这里是打开的(个人信息被涂黑了)在后台显示没有关闭。
frmContactDetails
frmContactList
解决方案
当您使用 打开表单时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
比将名称指定为字符串常量更健壮。
推荐阅读
- multithreading - 套接字使用线程而不是 select()
- apache-kafka - 如果某些消息错过输入,是否可以将(接收器连接器)数据重新摄取到数据库中
- firebase - 颤振:电话身份验证失败-错误:无效令牌..稍后再试
- python - 如何为python定义盐状态下win包的名称?
- python - 在多个列和值上拆分数据框
- javascript - 如何用茉莉花测试 setTimeout 函数?
- python - 在 Django 中无法正确显示 PDF 格式的波斯语
- typescript - Ant Design Form field with array of objects
- haskell - Haskell 的简化函数
- javascript - 我如何为 iframe 创建一个音量 div,我可以在不单击 iframe 音量图标的情况下控制 iframe 音量?