Sean Chamberlin
New Member
- Joined
- Dec 6, 2005
- Messages
- 9
I have a form that has several list boxes with multi-select enabled & several text boxes. The idea is to use a combination of entries across these list boxes & text boxes to filter a form. I then have 2 command buttons: 1 that clears all search criteria. The other executes the filter.
The code behind the button that clears the search criteria works perfectly. It is as follows:
Private Sub cmd_ClearSearch_Click()
Me.SearchServiceID = ""
Me.SearchServiceName = ""
Me![SearchProduct] = ""
Me![SearchServiceBillStatus] = ""
Me.Filter = ""
Me.FilterOn = False
Me.Requery
End Sub
The code behind the button that executes the filter is where I have the problem. I can't figure out how to get it to apply a filter based on selections in ALL the list boxes & text boxes. Here is the code:
Private Sub cmd_Search_Click()
Dim Criteria As String
Dim i As Variant
Criteria = ""
For Each i In Me![SearchProduct].ItemsSelected
If Criteria <> "" Then
Criteria = Criteria & " OR "
End If
Criteria = Criteria & "[Product Name]='" _
& Me![SearchProduct].ItemData(i) & "'"
Next i
Dim hasOne As Boolean
hasOne = False
If (Not (Me.SearchServiceID = "" Or IsNull(Me.SearchServiceID))) Then
If (hasOne) Then
Criteria = Criteria & " And " & "[Service ID] Like '*" & Me.SearchServiceID & "*'"
Else
Criteria = "[Service ID] Like '*" & Me.SearchServiceID & "*'"
hasOne = True
End If
End If
If (Not (Me.SearchServiceName = "" Or IsNull(Me.SearchServiceName))) Then
If (hasOne) Then
Criteria = Criteria & " And " & "[Service Name] Like '*" & Me.SearchServiceName & "*'"
Else
Criteria = "[Service Name] Like '*" & Me.SearchServiceName & "*'"
hasOne = True
End If
End If
Me.Filter = Criteria
Me.FilterOn = True
Me.Requery
I'd appreciate any advice or help. P.S. my searching across this site found examples of how to filter by a single multi-select list box, but not multiple. thanks.
The code behind the button that clears the search criteria works perfectly. It is as follows:
Private Sub cmd_ClearSearch_Click()
Me.SearchServiceID = ""
Me.SearchServiceName = ""
Me![SearchProduct] = ""
Me![SearchServiceBillStatus] = ""
Me.Filter = ""
Me.FilterOn = False
Me.Requery
End Sub
The code behind the button that executes the filter is where I have the problem. I can't figure out how to get it to apply a filter based on selections in ALL the list boxes & text boxes. Here is the code:
Private Sub cmd_Search_Click()
Dim Criteria As String
Dim i As Variant
Criteria = ""
For Each i In Me![SearchProduct].ItemsSelected
If Criteria <> "" Then
Criteria = Criteria & " OR "
End If
Criteria = Criteria & "[Product Name]='" _
& Me![SearchProduct].ItemData(i) & "'"
Next i
Dim hasOne As Boolean
hasOne = False
If (Not (Me.SearchServiceID = "" Or IsNull(Me.SearchServiceID))) Then
If (hasOne) Then
Criteria = Criteria & " And " & "[Service ID] Like '*" & Me.SearchServiceID & "*'"
Else
Criteria = "[Service ID] Like '*" & Me.SearchServiceID & "*'"
hasOne = True
End If
End If
If (Not (Me.SearchServiceName = "" Or IsNull(Me.SearchServiceName))) Then
If (hasOne) Then
Criteria = Criteria & " And " & "[Service Name] Like '*" & Me.SearchServiceName & "*'"
Else
Criteria = "[Service Name] Like '*" & Me.SearchServiceName & "*'"
hasOne = True
End If
End If
Me.Filter = Criteria
Me.FilterOn = True
Me.Requery
I'd appreciate any advice or help. P.S. my searching across this site found examples of how to filter by a single multi-select list box, but not multiple. thanks.