我一直在尝试通过使用组合框来过滤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。
答案 0 :(得分:1)
原来,组合框有2列而不是1列,@ Santosh解决方案运行得很好:
Replace(.Column(1), "'", "''")
答案 1 :(得分:0)
将组合属性更改为一列即可解决问题