Private Sub cmdRunQuery_Click()
If Me.lstFieldList.ItemsSelected.Count = 0 Then
MsgBox "Select some field names first."
Exit Sub
End If
Dim qDef As Object
Dim SQL As String
Dim sWhere As String
Dim vItem As Variant
' loop through selected field names
For Each vItem In Me.lstFieldList.ItemsSelected
SQL = SQL & ",[" & Me.lstFieldList.ItemData(vItem) & "]"
Next vItem
' build new SQL statement
SQL = "Select " & Mid(SQL, 2) & " from [Main Table]"
' build criteria for Supplier if a supplier has been entered
If Not IsNull(Me.txtSupplier) Then
sWhere = " and [Name] Like ""*" & Me.txtSupplier & "*"""
End If
' add criteria for HSE if a value has been selected.
If Not IsNull(Me.cboHSE) Then
sWhere = sWhere & " and [HSE]=""" & Me.cboHSE & """"
End If
' add criteria for Cost if a value has been selected.
If Not IsNull(Me.cboCost) Then
sWhere = sWhere & " and [Cost]=""" & Me.cboCost & """"
End If
' add criteria for Schedule if a value has been selected.
If Not IsNull(Me.cboSchedule) Then
sWhere = sWhere & " and [Schedule]=""" & Me.cboSchedule & """"
End If
' add criteria for Supplier Health if a value has been selected.
If Not IsNull(Me.cboHealth) Then
sWhere = sWhere & " and [Supplier Health]=""" & Me.cboHealth & """"
End If
' add criteria for Component if a component has been entered.
If Not IsNull(Me.txtComponent) Then
sWhere = sWhere & " and [Component] Like ""*" & Me.txtComponent & "*"""
End If
' add criteria for PO if a # has been entered.
If Not IsNull(Me.txtPO) Then
sWhere = sWhere & " and [PO] Like ""*" & Me.txtPO & "*"""
End If
' add criteria for Project if a project is selected
If Not IsNull(Me.cboProject) Then
sWhere = sWhere & " and [Project]=""" & Me.cboProject & """"
End If
' add criteria for Selected Supplier if a supplier is selected
If Not IsNull(Me.cboSelected) Then
sWhere = sWhere & " and [SelSupp]=""" & Me.cboSelected & """"
End If
' if length of criteria > 0, add criteria in SQL statement
If Len(sWhere) > 0 Then
SQL = SQL & " where " & Mid(sWhere, 5)
End If
' save query with new SQL statement
Set qDef = CurrentDb.QueryDefs("Query")
qDef.SQL = SQL
Set qDef = Nothing
' delete previous file that had been written
On Error Resume Next
Kill "c:\query_data.xls"
On Error GoTo 0
' run query
DoCmd.TransferSpreadsheet acExport, , "Query", "c:\query_data.xls", True
Application.FollowHyperlink "c:\query_data.xls"
End Sub