D
Darhl Thomason
Thanks to Rob P, I got my filter working. I added more filter criteria and
want to know if there is any way to make it more streamlined. There are
basically 3 criteria, and 2 of the three criteria have multiple options. I
had to add some flags so it would "know" to add some ( and ) as appropriate.
The code works fine, I just want to know if there is a better way to do it
than the way I did.
Thanks!
Darhl
Private Sub Apply_Filter()
strFilter = Null
SetParen = False
SetParen2 = False
setOwner = False
setStatus = False
setType = False
Me.tglNonTraditional.Enabled = False 'for report selection - only active if
a certain filter item is selected
Me.tglUpcomingStores.Enabled = False 'for report selection - only active if
a certain filter item is selected
Me.ogReports = 1
If Me.cboOwner <> "" Or Not IsNull(Me.cboOwner) Then
strFilter = "tblStoreData.OwnerID = " & Me.cboOwner
setOwner = True
End If
'Select Store Status Filter
If Me.chkCompleted = True Then
If setOwner = True Then
strFilter = strFilter & " And ("
SetParen = True
End If
strFilter = strFilter & "tblStoreData.StatusID = 1"
setStatus = True
End If
If Me.chkScheduled = True Then
Me.tglUpcomingStores.Enabled = True
If setOwner = True And setStatus = False Then
strFilter = strFilter & " And ("
SetParen = True
Else
If setStatus = True Then strFilter = strFilter & " Or "
End If
strFilter = strFilter & "tblStoreData.StatusID = 2"
setStatus = True
End If
If Me.chkPending = True Then
If setOwner = True And setStatus = False Then
strFilter = strFilter & " And ("
SetParen = True
Else
If setStatus = True Then strFilter = strFilter & " Or "
End If
strFilter = strFilter & "tblStoreData.StatusID = 3"
setStatus = True
End If
If SetParen = True Then strFilter = strFilter & ")"
'End Select Store Status Filter
'Select Store Type Filter
If Me.chkTraditional = True Then
If setOwner = True Or setStatus = True Then
strFilter = strFilter & " And ("
SetParen2 = True
End If
strFilter = strFilter & "tblStoreData.TypeID = 1"
setType = True
End If
If Me.chkNonTraditional = True Then
If setType = True Then
strFilter = strFilter & " Or "
Else
If setOwner = True Or setStatus = True Then
strFilter = strFilter & " And ("
SetParen2 = True
End If
End If
Me.tglNonTraditional.Enabled = True
strFilter = strFilter & "tblStoreData.TypeID <> 1"
setType = True
End If
If SetParen2 = True Then strFilter = strFilter & ")"
'End Select Store Type Filter
If IsNull(strFilter) Then
Me.FilterOn = False
Else
Me.Filter = strFilter
Me.FilterOn = True
End If
If IsNull(Me.cboOwner) Then
Me.cmdClear.Enabled = False
Else
Me.cmdClear.Enabled = (Me.cboOwner <> "")
End If
End Sub
want to know if there is any way to make it more streamlined. There are
basically 3 criteria, and 2 of the three criteria have multiple options. I
had to add some flags so it would "know" to add some ( and ) as appropriate.
The code works fine, I just want to know if there is a better way to do it
than the way I did.
Thanks!
Darhl
Private Sub Apply_Filter()
strFilter = Null
SetParen = False
SetParen2 = False
setOwner = False
setStatus = False
setType = False
Me.tglNonTraditional.Enabled = False 'for report selection - only active if
a certain filter item is selected
Me.tglUpcomingStores.Enabled = False 'for report selection - only active if
a certain filter item is selected
Me.ogReports = 1
If Me.cboOwner <> "" Or Not IsNull(Me.cboOwner) Then
strFilter = "tblStoreData.OwnerID = " & Me.cboOwner
setOwner = True
End If
'Select Store Status Filter
If Me.chkCompleted = True Then
If setOwner = True Then
strFilter = strFilter & " And ("
SetParen = True
End If
strFilter = strFilter & "tblStoreData.StatusID = 1"
setStatus = True
End If
If Me.chkScheduled = True Then
Me.tglUpcomingStores.Enabled = True
If setOwner = True And setStatus = False Then
strFilter = strFilter & " And ("
SetParen = True
Else
If setStatus = True Then strFilter = strFilter & " Or "
End If
strFilter = strFilter & "tblStoreData.StatusID = 2"
setStatus = True
End If
If Me.chkPending = True Then
If setOwner = True And setStatus = False Then
strFilter = strFilter & " And ("
SetParen = True
Else
If setStatus = True Then strFilter = strFilter & " Or "
End If
strFilter = strFilter & "tblStoreData.StatusID = 3"
setStatus = True
End If
If SetParen = True Then strFilter = strFilter & ")"
'End Select Store Status Filter
'Select Store Type Filter
If Me.chkTraditional = True Then
If setOwner = True Or setStatus = True Then
strFilter = strFilter & " And ("
SetParen2 = True
End If
strFilter = strFilter & "tblStoreData.TypeID = 1"
setType = True
End If
If Me.chkNonTraditional = True Then
If setType = True Then
strFilter = strFilter & " Or "
Else
If setOwner = True Or setStatus = True Then
strFilter = strFilter & " And ("
SetParen2 = True
End If
End If
Me.tglNonTraditional.Enabled = True
strFilter = strFilter & "tblStoreData.TypeID <> 1"
setType = True
End If
If SetParen2 = True Then strFilter = strFilter & ")"
'End Select Store Type Filter
If IsNull(strFilter) Then
Me.FilterOn = False
Else
Me.Filter = strFilter
Me.FilterOn = True
End If
If IsNull(Me.cboOwner) Then
Me.cmdClear.Enabled = False
Else
Me.cmdClear.Enabled = (Me.cboOwner <> "")
End If
End Sub