在导航表单中打开子表单

时间:2018-03-16 15:03:25

标签: access-vba

我是新手。我创建了一个包含3个选项卡的导航表单。当我单击一个选项卡时,它会打开一个弹出窗体,我从下拉列表中选择一个记录。当我点击命令按钮“打开文件”时,我希望表单在选项卡的“子窗体窗口”中打开。目前所做的只是在一个单独的窗口中打开 如何在导航子窗体窗口中打开表单,并在基于组合框的字段中显示正确的信息?

Private Sub Amend_record_Click()
On Error GoTo Err_Amend_record_Click

    Dim stDocName As String
    Dim stLinkCriteria As String

    vFormName = Screen.ActiveForm.Name
    stDocName = "invoice_amend"

    vtest = Me![Combo0]
    stLinkCriteria = "[InvoiceID]=" & Me![Combo0]


    DoCmd.OpenForm stDocName, acNormal, , , acFormEdit, , stLinkCriteria
    Forms![navigation_form]!NavigationButton18.SetFocus


    DoCmd.Close acForm, vFormName

Exit_Amend_record_Click:
    Exit Sub

Err_Amend_record_Click:
    MsgBox Err.Description
    Resume Exit_Amend_record_Click

End Sub

2 个答案:

答案 0 :(得分:0)

所以你有一个名为 navigation_form 的表格,其中包含一个导航控件。通过选择并查看属性来获取该控件的名称 - 假设名称为 NavigationSubform (我认为是默认名称)。

而不是您的代码行DoCmd.OpenForm stDocName...,您需要使用:

With Forms![navigation_form]![NavigationSubform]
    .SourceObject = stDocName
    .Form.Filter = stLinkCriteria
    .Form.FilterOn = True
End With

这将打开您需要的表单,过滤到您需要的记录,但不是在新窗口中显示它,而是显示为原始表单的子表单。

答案 1 :(得分:0)

这是一个更简单的解决方案(我认为):

DoCmd.OpenForm "navigation_form"
Forms("navigation_form").NavigationControl0.Tabs(1).SetFocus
SendKeys " ", True

NavigationControl0navigation_forms中包含按钮的块。 Tabs(1)是菜单中的第二个标签(可以更改)。最后一个命令SendKeys " ", True模拟点击以打开正确的表单。