[blue]Public Sub GroupFilter()
Dim Ary(4) As String, preSQL As String, SQL As String, x As Integer
preSQL = "SELECT * from DetailQry"
If Not IsNull(Me!StatusFilter) Then
Ary(0) = Choose(Me!StatusFilter, _
"", _
"([Status] is not null and [status] <> 'Finished') ", _
"([Status] = 'Backloading')", _
"([Status] = 'Deleted')", _
"([Status] = 'Finished')", _
"([Status] = 'Loading')", _
"([Status] = 'Not_Started')", _
"([Status] = 'Paused')", _
"([Status] = 'Pulled_To_Yard')")
End If
If Not IsNull(Me!ShiftFilter) Then
Ary(1) = Choose(Me!ShiftFilter, _
"", _
"([LoadShift] = '1st')", _
"([LoadShift] = '2nd')", _
"([LoadShift] = '3rd')")
End If
If Not IsNull(Me!LoadFilter) Then
Ary(2) = Choose(Me!LoadFilter, _
"", _
"([LoadMethod] = 'Blk' OR [Loadmethod]= 'CMGL' OR [Loadmethod]= '?')", _
"([LoadMethod] = 'VND' OR [Loadmethod]= 'BLT1')")
End If
If Not IsNull(Me!SortOption) Then
Ary(3) = Choose(Me!SortOption, _
"([Doornum] Is Not Null)", _
"([TrailerID]> '')", _
"", _
"", _
"([Status] Is Not Null)")
End If
If Not IsNull(Me!SortOption) Then
Ary(4) = Choose(Me!SortOption, _
"Order By [Doornum]", _
"Order By [TrailerID]", _
"Order By [TripNumber]", _
"Order By [DispatchDateTime]", _
"Order By [Status]")
End If
[green]'Pack the final SQL[/green]
For x = LBound(Ary) To UBound(Ary)
If Ary(x) <> "" Then
If x <> UBound(Ary) Then [green]'Handle Criteria[/green]
If SQL <> "" Then
SQL = SQL & " AND " & Ary(x)
Else
SQL = "WHERE " & Ary(x)
End If
Else [green]'Handle Order By[/green]
If SQL <> "" Then
SQL = SQL & " " & Ary(x)
Else
SQL = Ary(x)
End If
End If
End If
Next
If SQL <> "" Then
SQL = preSQL & " " & SQL & ";"
Else
SQL = preSQL & ";"
End If
[green]'Debug.Print SQL[/green]
Me.RecordSource = SQL
End Sub[/blue]