2017-05-05 46 views
1

我想在Access中制作可搜索的表单。设置将是5-6个文本框,一对夫妇切换和一个按钮。您将任何信息输入到文本框中,单击该按钮,并且只显示符合所有条件的记录。访问2013通过按钮应用多个过滤器到表单

Current Form

我发现,似乎给我所有的互联网上的一些代码,我将需要:

http://www.allenbrowne.com/ser-62code.html

但是,当我把它,它都没有返回。到目前为止,我只能放入一个文本框,以便在浪费时间添加一堆AND之前确保正确无误。这是我目前所有代码:

Private Sub SearchAll_Click() 

If Not IsNull(Me.txtCityCounty) Then 
    strWhere = strWhere & "([City/County] Like "" * " & Me.txtCityCounty & " * "")" 

    Me.Filter = strWhere 
    Me.FilterOn = True 

    End If 

End Sub 

如果是有帮助的,“SearchAll”是我的按钮,“txtCityCounty”的文本框,“市/县”的字段名。

当我尝试在我的文本框中输入文本并单击我的按钮时,它不会返回任何内容,并且下面所有嵌入的文本框都消失,就好像它正在过滤一些没有出现的东西(我可以向你保证,不是这样,我正在进入“盐”)。

我错过了什么?这个项目有更简单的方法吗?

+0

下面是与该代码我发现对应的数据库:http://www.allenbrowne.com/ser-62.html –

回答

0

试试这个没有这些额外的报价

“([市/县]像 '* ”& Me.txtCityCounty &“ *')”

如果你愿意,你甚至可以摆脱IF语句只要使用:

strwhere = NZ( “([市/县]像 '* ”& Me.txtCityCounty &“ *')”, “”)

0

考虑建立一个过滤器串有条件以及使用该方法DoCmd.ApplyFilter

Dim filterString As String 

filterString = "1 = 1"      

If Not IsNull(Me.txtCityCounty) Then 
    filterString = filterString & "([City/County] Like '*" & Me.txtCityCounty & "*')" 
End if 
If Not IsNull(Me.txtAgePopulation) Then 
    filterString = filterString & "([Age/Population] Like '*" & Me.txtAgePopulation & "*')" 
End if 

If Not IsNull(Me.txtServiceType) Then 
    filterString = filterString & "([ServiceType] Like '*" & Me.txtServiceType & "*')" 
End if 

If Not IsNull(Me.txtInsurance) Then 
    filterString = filterString & "([Insurance] Like '*" & Me.txtInsurance & "*')" 
End if 

If Not IsNull(Me.txtProviders) Then 
    filterString = filterString & "([Providers] Like '*" & Me.txtProviders & "*')" 
End if 

DoCmd.ApplyFilter , filterString