This will require VBA that modifies query object referencing QueryDefs. Here is example code that just modifies query filter criteria:
Code:
Private Sub btnRun_Click()
If IsNull(Me.tbxFilter) Then
Me.tbxFilter = "SELECT * FROM ProjectRatesMainSub WHERE grading Like '*' " & GetMisc() & " ORDER BY projects.proj_num, grading;"
End If
Dim qdfUser As DAO.QueryDef
CurrentDb.QueryDefs.Delete ("UserQuery")
Set qdfUser = CurrentDb.CreateQueryDef("UserQuery", Me.tbxFilter)
DoCmd.OpenQuery "UserQuery"
Private Sub btnExcel_Click()
Dim qdfUser As DAO.QueryDef
CurrentDb.QueryDefs.Delete ("UserQuery")
Set qdfUser = CurrentDb.CreateQueryDef("UserQuery", Me.tbxFilter)
DoCmd.OpenQuery "UserQuery", , acReadOnly
DoCmd.RunCommand acCmdExportExcel
End Sub
Here is the code for the GetMisc() function that builds the filter criteria:
Code:
Public Function GetMisc() As String
GetMisc = GetMisc & IIf(Me.chkIssue, " major_issue=True AND", "")
GetMisc = GetMisc & IIf(Me.chkMaterial, " new_material=True AND", "")
GetMisc = GetMisc & IIf(Me.chkTechnique, " new_technique=True AND", "")
GetMisc = GetMisc & IIf(Me.chkSpec, " new_spec=True AND", "")
If GetMisc <> "" Then GetMisc = " AND " & Left(GetMisc, Len(GetMisc) - 4) & " "
End Function
You will need more code that dynamically builds the field string to replace the * as shown in my SQL statement.