The main form has textbox & a Listbox with which I filtered a datasheet inside a sub form. Everything worked fine only the listbox [Discipline] is not working !! it cuase Run-time error: 3831“ The multi-valued field "[Category]" cannot be used in a WHERE or HAVING clause.
So how do I filter a multivalued Listbox field [Discipline] ?
Private Sub cmdSearch_Click()
'On erorr GoTo errr
Me.tblFLM_subform1.Form.RecordSource = "SELECT * FROM tblFLM " & BuildFilter
Me.tblFLM_subform1.Requery
Exit Sub
errr:
MsgBox Err.Description
End Sub
Private Function BuildFilter() As Variant
Dim varWhere As Variant
Dim tmp As String
tmp = """"
Const conJetDate = "\#mm\/dd\/yyyy\#"
varWhere = Null
If Me.txtlocation > "" Then
varWhere = varWhere & "[Location] like " & tmp & Me.txtlocation & tmp & " AND "
End If
If Me.txtDateFrom > "" Then
varWhere = varWhere & "([Date] >= " & Format(Me.txtDateFrom, conJetDate) & ") AND "
End If
If Me.txtDateTo > "" Then
varWhere = varWhere & "([Date] <= " & Format(Me.txtDateTo, conJetDate) & ") AND "
End If
If Me.txtTagNumber > "" Then
varWhere = varWhere & "[Tag Number] like " & tmp & Me.txtTagNumber & tmp & " AND "
End If
If Me.txtJSA1 > "" Then
varWhere = varWhere & "[JSA / Procedure] like " & tmp & Me.txtJSA1 & tmp & " AND "
End If
If Me.txtComments > "" Then
varWhere = varWhere & "[Comments] like " & tmp & Me.txtComments & tmp & " AND "
End If
If Me.txtCreatedby > "" Then
varWhere = varWhere & "[Created by] like " & tmp & Me.txtCreatedby & tmp & " AND "
End If
If Me.cboDiscipline > "" Then
varWhere = varWhere & "[Discipline] like " & tmp & Me.cboDiscipline & tmp & " AND "
End If
If IsNull(varWhere) Then
varWhere = ""
Else
varWhere = "WHERE " & varWhere
If Right(varWhere, 5) = " AND " Then
varWhere = Left(varWhere, Len(varWhere) - 5)
End If
End If
BuildFilter = varWhere
End Function
So how do I filter a multivalued Listbox field [Discipline] ?
Private Sub cmdSearch_Click()
'On erorr GoTo errr
Me.tblFLM_subform1.Form.RecordSource = "SELECT * FROM tblFLM " & BuildFilter
Me.tblFLM_subform1.Requery
Exit Sub
errr:
MsgBox Err.Description
End Sub
Private Function BuildFilter() As Variant
Dim varWhere As Variant
Dim tmp As String
tmp = """"
Const conJetDate = "\#mm\/dd\/yyyy\#"
varWhere = Null
If Me.txtlocation > "" Then
varWhere = varWhere & "[Location] like " & tmp & Me.txtlocation & tmp & " AND "
End If
If Me.txtDateFrom > "" Then
varWhere = varWhere & "([Date] >= " & Format(Me.txtDateFrom, conJetDate) & ") AND "
End If
If Me.txtDateTo > "" Then
varWhere = varWhere & "([Date] <= " & Format(Me.txtDateTo, conJetDate) & ") AND "
End If
If Me.txtTagNumber > "" Then
varWhere = varWhere & "[Tag Number] like " & tmp & Me.txtTagNumber & tmp & " AND "
End If
If Me.txtJSA1 > "" Then
varWhere = varWhere & "[JSA / Procedure] like " & tmp & Me.txtJSA1 & tmp & " AND "
End If
If Me.txtComments > "" Then
varWhere = varWhere & "[Comments] like " & tmp & Me.txtComments & tmp & " AND "
End If
If Me.txtCreatedby > "" Then
varWhere = varWhere & "[Created by] like " & tmp & Me.txtCreatedby & tmp & " AND "
End If
If Me.cboDiscipline > "" Then
varWhere = varWhere & "[Discipline] like " & tmp & Me.cboDiscipline & tmp & " AND "
End If
If IsNull(varWhere) Then
varWhere = ""
Else
varWhere = "WHERE " & varWhere
If Right(varWhere, 5) = " AND " Then
varWhere = Left(varWhere, Len(varWhere) - 5)
End If
End If
BuildFilter = varWhere
End Function