使用组合框过滤子表单

Posted

技术标签:

【中文标题】使用组合框过滤子表单【英文标题】:Filter subform by using combo box 【发布时间】:2019-12-29 18:24:14 【问题描述】:

我想要过滤子表单 (SubSearchMaster_frm) 的表单上有一个组合框。

我收到了:

运行时错误 3464:表达式中的数据类型不匹配。

代码如下:

Private Sub CboNIIN_AfterUpdate()
    Me.SubSearchMaster_frm.Form.Filter = "[NIIN] = " & Me.CboNIIN
    Me.SubSearchMaster_frm.Form.FilterOn = True
End Sub

子表单是一个查询。

我也试过了:

Private Sub CboNIIN_AfterUpdate()
    Dim sql As String
    sql = "Select * from SubSearchMaster_frm where ([NIIN] = " & Me.CboNIIN & ") From subsearchmaster_frm"
    Me.SubSearchMaster_frm.Form.RecordSource = sql
    Me.SubSearchMaster_frm.Form.Requery
End Sub

但我也遇到了错误。

【问题讨论】:

NIIN 字段的数据类型是什么?您的组合框的绑定列是否对应该字段? 数据类型是文本,但是数据是这样的00033422。所以组合框的数据类型是数字。 【参考方案1】:

由于您已声明 NIIN 字段是 Text 数据类型,因此您需要用单引号或双引号将过滤器值括起来,否则您将收到熟悉的数据类型不匹配错误消息。

例如:

Me.SubSearchMaster_frm.Form.Filter = "[NIIN] = '" & Me.CboNIIN & "'"

如果没有引号,则会提供一个数值,从而导致数据类型不匹配。

【讨论】:

我试过了,还有,Me.SubSearchMaster_frm.Form.Filter = "[NIIN] = '" & CStr(Me.CboNIIN) & " ' " 组合框的绑定列是否对应NIIN字段? (您可以通过使用 SQL select Forms![Your Form]!CboNIIN 创建一个新查询来对此进行测试,并查看它返回的值(将 Your Form 更改为您的表单名称)。 问题是绑定列 = 1(即 ID),它应该是第 2 列。

以上是关于使用组合框过滤子表单的主要内容,如果未能解决你的问题,请参考以下文章

使用组合框过滤子表单 - ACCESS 2013

使用组合框过滤子表单

组合框更改后子表单不重新查询

在 ms-Access 中使用组合框创建搜索表单

访问子表单选择取决于组合框

如何从位于访问中的另一个子窗体中的组合框中过滤子窗体?