Those links were really helpful. I am able to get the listbox, when selecting multiple or single items, to work and show the appropriate data in my subform. However, click my Clear button, it comes back with an error with this line - strCriteria = Right(strCriteria, Len(strCriteria) - 1). Also, after I run the search from the listbox and then want to search, say, the LastName, it does not work I have determined that it is because the listbox puts in the query a criteria to search for the Company(ies) selected. I don't know how to clear that out...any suggestions? Here is my code.
Code:
Option Compare Database
Private Sub Clear_Click()
Dim intIndex As Integer
'clear all search items
Me.LastName = ""
Me.FirstName = ""
Me.AccountNumber = ""
Me.Company = ""
Me.SocialSecurityNumber = ""
Me.EntityName = ""
Me.EIN = ""
Me.Company1 = ""
End Sub
Private Sub Form_Load()
'clear the search form
Clear_Click
End Sub
Private Sub Search_Click()
'Update the record source
Me.SearchSubform.Form.RecordSource = "Select * From Search " & BuildFilter
'Requery the subform
Me.Form!SearchSubform.Form.Requery
End Sub
Private Function BuildFilter() As Variant
Dim varWhere As Variant
varWhere = Null 'Main Filter
'Check for LIKE Last Name
If Me.LastName > "" Then
varWhere = varWhere & "[Last Name] Like '*" & Me.LastName & "*' And "
End If
'Check for LIKE First Name
If Me.FirstName > "" Then
varWhere = varWhere & "[First Name] LIKE '*" & Me.FirstName & "*' And "
End If
'Check for LIKE Company
If Me.Company > "" Then
varWhere = varWhere & "[Company Name] LIKE '*" & Me.Company & "*' And "
End If
'Check for LIKE Account Number
If Me.AccountNumber > "" Then
varWhere = varWhere & "[Account Number] LIKE '*" & Me.AccountNumber & "*' And "
End If
'Check for LIKE Social Security Number
If Me.SocialSecurityNumber > "" Then
varWhere = varWhere & "[Social Security Number] LIKE '*" & Me.SocialSecurityNumber & "*' And "
End If
'Check for LIKE Entity Name
If Me.EntityName > "" Then
varWhere = varWhere & "[EntityName] LIKE '*" & Me.EntityName & "*' And "
End If
'Check for LIKE EIN
If Me.EIN > "" Then
varWhere = varWhere & "[EIN] LIKE '*" & Me.EIN & "*' And "
End If
'Check if there is a filter to return...
If IsNull(varWhere) Then
varWhere = ""
Else
varWhere = "WHERE" & varWhere
' strip off last "AND" in the filter
If Right(varWhere, 5) = " AND " Then
varWhere = Left(varWhere, Len(varWhere) - 5)
End If
End If
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim varItem As Variant
Dim strCriteria As String
Dim strSQL As String
Set db = CurrentDb()
Set qdf = db.QueryDefs("Search")
For Each varItem In Me!Company1.ItemsSelected
strCriteria = strCriteria & ",'" & Me!Company1.ItemData(varItem) & "'"
Next varItem
strCriteria = Right(strCriteria, Len(strCriteria) - 1)
strSQL = "SELECT * FROM [Account List] " & _
"WHERE [Account List].[Company Name] IN(" & strCriteria & ");"
qdf.SQL = strSQL
Set db = Nothing
Set qdf = Nothing
BuildFilter = varWhere
End Function