首页 > 解决方案 > 从父表单上的文本框条目中过滤子表单数据

问题描述

我有一个相当简单的 Access 2013 db,由两个表组成,一个查询、表单和子表单。这些表是 tblDeliveries 和 tblCustomers。查询是 qryDeliveriesFull。表单是 frmCustomers 和 sbfmDeliveries。frmCustomers 是一种拆分形式,而 sbfrmDeliveries 是这种形式。所有客户信息、姓名、地址都在父表单上,所有交付信息都在子表单上。子表单只是一个带有信息文本框的表单。父表单的数据表部分只是我一次查看数据库中所有订单的一种方式。在主窗体的标题中是一个带有以下代码的搜索框:

Private Sub txtNameFilter_KeyUp(KeyCode As Integer, Shift As Integer)

On Error GoTo errHandler

Dim filterText As String

If Len(txtNameFilter.Text) > 0 Then
   filterText = txtNameFilter.Text
   Me.Form.Filter = "[tblDeliveries].[DeliveryID] LIKE '*" & filterText & "*' OR [tblCustomers].[FirstName] LIKE '*" & filterText & "*'"
   Me.FilterOn = True

   txtNameFilter.Text = filterText
   txtNameFilter.SelStart = Len(txtNameFilter.Text)

Else

   Me.Filter = ""
   Me.FilterOn = False
   txtNameFilter.SetFocus

End If

Exit Sub

errHandler:

MsgBox Err.Number & " - " & Err.Description, vbOKOnly, "Error ..."

End Sub

当用户在 txtNameFilter 中输入信息时,数据表会筛选出包含该信息的记录,并且父表单上的文本框会填充该人姓名下第一条记录中的信息。我想不通的是如何让子表单中的文本框也发生变化。示例:客户 john 有 20 个订单。寻找 1 个特定的订单号,因此我将该订单号输入到 txtname 过滤器中。从过滤器到该顺序的父数据表,但是子表单,尽管父表单正确选择了适当的名称并转到了 john 的记录,但它并没有一直过滤到适当的顺序。不确定这是因为 DeliveryID 在子表单上还是其他原因。我已经四处寻找,但无法弄清楚如何让它做我想做的事

标签: vbams-access

解决方案


您可以通过同样过滤子表单来效仿:

   Me.Form.Filter = "[tblDeliveries].[DeliveryID] LIKE '*" & filterText & "*' OR [tblCustomers].[FirstName] LIKE '*" & filterText & "*'"
   Me.FilterOn = True

   Me.[SubformName].Form.Filter = "What ever the subform filter would be here LIKE '*" & filterText & "*'"
   Me.[SubformName].FilterOn = True

...


推荐阅读