在Access中使用组合过滤无法正常工作

时间:2019-02-06 08:27:48

标签: ms-access combobox access-vba

我一直在尝试通过使用组合框来过滤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。

2 个答案:

答案 0 :(得分:1)

原来,组合框有2列而不是1列,@ Santosh解决方案运行得很好:

 Replace(.Column(1), "'", "''")

答案 1 :(得分:0)

将组合属性更改为一列即可解决问题