vba - 从父表单上的文本框条目中过滤子表单数据
问题描述
我有一个相当简单的 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 在子表单上还是其他原因。我已经四处寻找,但无法弄清楚如何让它做我想做的事
解决方案
您可以通过同样过滤子表单来效仿:
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
...
推荐阅读
- java - 使用 Apache POI 将 Excel/Word 转换为 PDF
- javascript - 用于 android 的 React-native 阴影道具
- html - Font Awesome 5 - SVG/JS 伪类问题
- javascript - jQuery 不能在 Firefox 上运行,但可以在 Chrome 上运行
- java - JAX-RS 异常映射器:包装的异常和默认情况如何?
- java - random-beans 初始化 bean 集合大小与配置大小不匹配
- ruby-on-rails - 按钮不调用红宝石中的控制器
- sql - SQL 字符串中数字的总和
- python-3.x - 溢出错误:字符参数不在范围内(0x110000)在 python 3.5 中使用 getch
- android - 使库所需的相机权限为非必需