如何转到从列表框中选择并显示在导航表单上的特定记录?

时间:2019-06-27 17:25:49

标签: vba ms-access

我有一个导航表单,其中包含一个subform和一个recordsource tblA。 当前,subform在弹出窗口中显示特定记录。是否有可能在不弹出的情况下在导航表单中显示记录?

Private Sub Search_Change()
    Dim where As String

    Const SQLResults As String = "SELECT itemNumber, itemName FROM tblMain "
    <whereclause> ORDER BY ItemName;"

    If Me.Search.Text <> "" Then
        where = "WHERE itemName LIKE '*" & Me.Search.Text & "*' "
    End If

    Me.SearchResults.RowSource = Replace(SQLResults, "<whereclause>", where)

End Sub

下面的代码在弹出窗口中显示记录。

Private Sub SearchResults_Click()

    Dim searchCriteria As String

    searchCriteria = "[itemNumber]='" & Me![SearchResults].Value & "'"

    DoCmd.OpenForm "frmDisplay", acNormal, , searchCriteria
    DoCmd.Close acForm, "frmSearch"

End Sub

由于表单frmNavigation始终处于打开状态:

Private Sub SearchResults_Click()
    DoCmd.OpenForm, "frmDisplay", acNormal, , searchCritera
    DoCmd.Close acForm, "frmSearch"
End Sub

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我已经做到了!我希望此解决方案可以帮助某人。该代码允许用户在弹出表单上的列表框中选择项目,并将用户带到导航表单上的同一记录。它使表单操作更加简单,而不会弹出子表单。注意:不需要将属性表上的弹出功能设置为false。无论如何,它都会起作用。

Private Sub SearchResults_Click()
  Dim searchCriteria As String
  Dim rs As Recordset

  searchCriteria = "[itemNo]='" & Me![SearchResults].Value & "'"
  Set rs = Forms!frmNavigation!NavigationSubform.Form.RecordsetClone
  rs.FindFirst searchCriteria
  If Not rs.NoMatch Then Forms!frmNavigation!NavigationSubform.Form.Bookmark = rs.Bookmark
  Forms!frmNavigation!NavigationSubform.Form.Filter = "[itemNo]=" & Me.SearchResults.Value
  Me.FilterOn = True
  Set rs = Nothing

  DoCmd.Close acForm, "frmSearch"
 End Sub