What I am trying to do is merge data from several tables into one query, based on user defined options through multiple listboxes. I've figured out the VBA for the union all for the different selections, my problem is I can't determine how to make it dynamic and skip over a select statement if the list value is null. My code looks something like this so far. Sorry for the sloppy.
Code:
Dim db As DAO.Database
Set db = CurrentDb
Dim qdf As DAO.QueryDef
Set qdf = db.QueryDefs("Flex2")
Dim SDay As String
Dim sFilter As String, sFilter1 As String, sFilter2 As String, sFilter3 As String, sFilter4 As String, sFilter5 As String
Dim sFilter6 As String, sFilter7 As String, sFilter8 As String, sForm As String
sFilter = Forms![Packets]!
[List6]
sFilter1 = Forms![Packets]!
[List10]
sFilter2 = Forms![Packets]!
[List12]
sFilter3 = Forms![Packets]!
[List27]
sForm = "[CALENDAR MONTH]"
"SELECT [4-5-4 WEEK 1-4].jobs, [4-5-4 WEEK 1-4].[sla/ola], [4-5-4 WEEK 1-4].[special instructions], [4-5-4 WEEK 1-4].times" & _
" FROM [4-5-4 WEEK 1-4]" & _
" WHERE ((([4-5-4 WEEK 1-4].ADOM)= " & sFilter & "))" & _
" UNION ALL" & _
" SELECT [4-5-4-QUARTER].jobs, [4-5-4-QUARTER].[sla/ola], [4-5-4-QUARTER].[special instructions], [4-5-4-QUARTER].TIMES" & _
" FROM [4-5-4-QUARTER] " & _
" WHERE ((([4-5-4-QUARTER].[DAY of Week]) = " & Chr(34) & sFilter1 & Chr(34) & ") And (([4-5-4-QUARTER].[MONTH OF QUARTER]) = " & sFilter2 & "))" & _
" UNION ALL" & _
" SELECT " & sForm & ".jobs, " & sForm & ".[sla/ola], " & sForm & ".[special instructions], " & sForm & ".TIMES" & _
" FROM " & sForm & _
" WHERE (" & sForm & ".[Day of Month])= " & Chr(34) & sFilter3 & Chr(34) & ";"
qdf.SQL = sState
'DoCmd.RunSQL sState
DoCmd.OpenQuery ("Flex2")
'DoCmd.OpenReport ("Flex3"), acViewPreview, , , acHidden
Set qdf = Nothing
Set db = Nothing
End Sub