Access 中的组合过滤无法正常工作
Posted
技术标签:
【中文标题】Access 中的组合过滤无法正常工作【英文标题】:Filtering with combo in Access not working properly 【发布时间】:2019-02-06 08:27:47 【问题描述】:我一直在尝试使用组合框过滤 SQL 查询的结果。我需要使用 AfterUpdate() 来完成它,因为我需要它来显示所有结果(未过滤),然后,如果需要,可以根据组合框的内容进行过滤。
这里“Cuadro_combinado30”是组合框的名称,“Dossier”是我要过滤的字段的名称。
Private Sub Cuadro_combinado30_AfterUpdate()
Dim strFilter As String
With Me.Cuadro_combinado30
If IsNull(.Value) Or .Value = "**ALL**" Then
' If the combo box is cleared or ALL selected, clear the form filter.
Me.Filter = vbNullString
Me.FilterOn = False
Else
' item other than ALL is selected, filter for an exact match.
strFilter = "[Dossier] = '" & _
Replace(.Value, "'", "''") & "'"
Debug.Print strFilter ' check this in Immediate window in case of
' trouble you can use Ctrl+g to go to the Immediate window
Me.Filter = strFilter
Me.FilterOn = True
End If
End With
End Sub
到目前为止,结果是当我输入表单时,所有结果都显示出来了,但是当我选择组合框的一个选项以过滤结果时,查询似乎没有找到任何结果结果显示出来了。
为什么这段代码不起作用,我应该修改什么才能让它起作用?
谢谢。
更新:我尝试使用文本框而不是组合框,并且它有效,当我在文本框中键入内容时,结果会根据我刚刚写的内容进行过滤。我想这与组合框的创建方式有关,似乎即使组合框显示内容,过滤器也会在其上找到 NULL。
【问题讨论】:
组合是否有几列? 不,在向导上创建时,它只显示一列数据,这是应该的,我认为这可能与向导的最后阶段有关,当它询问要做什么时处理该值,要么记住该值,要么将其存储在其他地方。 试试Replace(.Column(1), "'", "''")
非常感谢你们两位,替换第 1 列效果很好。问题已解决,但我想知道无论如何,在尝试@Santosh solotuion 之前,我尝试在属性上将列数设置为 1,但随后表单上的组合变为空,这是为什么呢?跨度>
@ALawliet 欢迎你 :)
【参考方案1】:
原来组合框有 2 列而不是 1 列,@Santosh 解决方案完美运行:
Replace(.Column(1), "'", "''")
【讨论】:
【参考方案2】:将组合属性更改为一列应该可以解决问题
【讨论】:
以上是关于Access 中的组合过滤无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
VBA for Access 中的 Code 128 条码无法正常工作