View Full Version : sending dynamic query info to a report


datacontrol
10-07-2003, 07:22 AM
I have quite an awesome database set up. There is a form entitled "Form1" which uses a set of queries, combo boxes and sub forms to dynamically query.

I would like to some how add print buttons or report buttons to this form. I am not sure how to go about this, so this is why I am here.


Form 1 code:

Option Compare Database
Option Explicit
Dim SQLvital, Queryflag, stDocName, SQLbase, SQLtemp, SQLwhole
Dim dbs As Database, qdf As QueryDef, rst As Recordset, Weekdef

Private Sub CmdReset_Click()
Combo1.Value = ""
Combo2.Value = ""
Combo3.Value = ""
Combo4.Value = ""
SQLgen
Refresh
End Sub




Private Sub Command16_Click()
On Error GoTo Err_SQLgen

' SQL Generation routine
SQLQuerysubform.SourceObject = "Query1subform"
SQLbase = "SELECT query1.dst_user, query1.dst_task_id, query1.dst_date, query1.Back_Log FROM query1"

Dim iLp As Integer

SQLvital = ""



For iLp = 1 To 3
If Me.Controls("Combo" & iLp).Value <> "" Then
If SQLvital <> "" Then
SQLvital = SQLvital & " AND "
End If
Select Case iLp
Case 1: SQLvital = SQLvital & " [query1].[dst_user]='" & Me.Controls("Combo" & iLp) & "'"
Case 2: SQLvital = SQLvital & " [query1].[dst_task_id]='" & Me.Controls("Combo" & iLp) & "'"
Case 3
If IsDate(Me.Controls("COMBO4").Value) = True Then
SQLvital = SQLvital & " [query1].[dst_date] Between #" & Me.Controls("COMBO3").Value & "# AND #" & Me.Controls("COMBO4").Value & "#"
Else
SQLvital = SQLvital & " [query1].[dst_date]=#" & Me.Controls("COMBO3").Value & "#"
End If
End Select
End If 'Copy and Paste (Best Friend Worst Enemy)
Next iLp






' Construct SQL statement including parameters.
' the following is the master SQL, SQLvital contains essential SQL clause
' Depending on selection
If SQLvital <> "" Then
SQLvital = " Where " & SQLvital
End If
SQLvital = SQLvital & ";"

' Delete old Query
stDocName = "SQLQuery"
DoCmd.DeleteObject acQuery, stDocName

' Return reference to current database.
Set dbs = CurrentDb

' Create new query.
Set qdf = dbs.CreateQueryDef("SQLQuery")

qdf.SQL = SQLbase & SQLvital

SQLwhole = qdf.SQL
LabelSQL.Caption = SQLwhole
Set dbs = Nothing

SQLQuerysubform.SourceObject = "SQLQuerysubform"
Refresh

Exit_Err_SQLgen:
Exit Sub

Err_SQLgen:
LabelSQL.Caption = SQLbase & SQLvital
MsgBox "Error in SQL formula, try again !", vbCritical, "Error!!!"

End Sub

Private Sub Form_Load()
DoCmd.Maximize
Reset
End Sub

Sub Reset()
Combo1.Value = ""
Combo2.Value = ""

Combo3.Value = ""
Combo4.Value = ""
SQLgen
Refresh

End Sub

Sub SQLgen()
On Error GoTo Err_SQLgen

' SQL Generation routine
SQLQuerysubform.SourceObject = "Query1subform"
SQLbase = "SELECT query1.dst_user, query1.dst_task_id, query1.dst_date, query1.Back_Log FROM query1"

Dim iLp As Integer

SQLvital = ""



For iLp = 1 To 3
If Me.Controls("Combo" & iLp).Value <> "" Then
If SQLvital <> "" Then
SQLvital = SQLvital & " AND "
End If
Select Case iLp
Case 1: SQLvital = SQLvital & " [query1].[dst_user]='" & Me.Controls("Combo" & iLp) & "'"
Case 2: SQLvital = SQLvital & " [query1].[dst_task_id]='" & Me.Controls("Combo" & iLp) & "'"
Case 3
If IsDate(Me.Controls("COMBO4").Value) = True Then
SQLvital = SQLvital & " [query1].[dst_date] Between #" & Me.Controls("COMBO3").Value & "# AND #" & Me.Controls("COMBO4").Value & "#"
Else
SQLvital = SQLvital & " [query1].[dst_date]=#" & Me.Controls("COMBO3").Value & "#"
End If
End Select
End If 'Copy and Paste (Best Friend Worst Enemy)
Next iLp






' Construct SQL statement including parameters.
' the following is the master SQL, SQLvital contains essential SQL clause
' Depending on selection
If SQLvital <> "" Then
SQLvital = " Where " & SQLvital
End If
SQLvital = SQLvital & ";"

' Delete old Query
stDocName = "SQLQuery"
DoCmd.DeleteObject acQuery, stDocName

' Return reference to current database.
Set dbs = CurrentDb

' Create new query.
Set qdf = dbs.CreateQueryDef("SQLQuery")

qdf.SQL = SQLbase & SQLvital

SQLwhole = qdf.SQL
LabelSQL.Caption = SQLwhole
Set dbs = Nothing

SQLQuerysubform.SourceObject = "SQLQuerysubform"
Refresh

Exit_Err_SQLgen:
Exit Sub

Err_SQLgen:
LabelSQL.Caption = SQLbase & SQLvital
MsgBox "Error in SQL formula, try again !", vbCritical, "Error!!!"

End Sub




Private Sub Form_Resize()
SQLQuerysubform.Height = (Me.InsideHeight - SQLQuerysubform.Top) - 1000
SQLQuerysubform.Width = (Me.InsideWidth - 1000)
End Sub

Pat Hartman
10-07-2003, 06:33 PM
Add a button to the form and let the wizard do the work for you.