使用模态或弹出窗口打开表单

时间:2012-11-01 09:48:42

标签: vba ms-access

有点苦苦挣扎,我有一个数据表表格,其中列出了每条记录的ID和其他信息。到目前为止,我已经找到了一些VBA代码,它将每个ID作为超链接打开并将其传递给另一个表单。

我遇到的问题是我希望在弹出窗口或模态窗口中打开表单,到目前为止我的代码是:

Private Sub ID_Click()
    Dim varWhereClause As String
    varWhereClause = "ID = " & Me!ID
    DoCmd.OpenForm "Copy Of test", , , varWhereClause
End Sub

2 个答案:

答案 0 :(得分:7)

DoCmd.OpenForm "Copy Of test", , , varWhereClause, ,acDialog

虽然这会弹出和模态。

答案 1 :(得分:4)

acDialog.PopUp的一个小缺点是表单在访问主窗口外面作为窗口打开。这就是为什么我希望尽可能只使用.Modal

如果您只是想阻止其他打开的表单,您甚至可以在表单的公开活动中临时执行Me.Modal = True

.Modal的缺点是它不会等待。 DoCmd.OpenForm , , , , , acDialog在表单关闭之前不会返回。这种同步调用有时非常有用。

要在访问主窗口中执行 之内的acDialog/PopUp呼叫,您可以在表单中使用一些技巧:

Private bFormOpen As Boolean

Public Sub ShowModal()
    SetFocus ' Make the form visible

    On Error GoTo ForcedClose
    bFormOpen = True
    Do While bFormOpen ' Wait until the form is closed
        Sleep 50
        DoEvents
    Loop

ForcedClose:
    Exit Sub
End Sub

Private Sub Form_Unload(Cancel As Integer)

    bFormOpen = False

End Sub

您可以像这样实例化您的表单:

Dim f As New Form_Name

f.Modal = True
Call f.ShowModal

Set f = Nothing