使用组合框过滤子表单
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 列。以上是关于使用组合框过滤子表单的主要内容,如果未能解决你的问题,请参考以下文章