Open the form, in the OnClick event procedure hide the form, i.e. Me.Visible = False.
Go to the report, in the OnOpen and OnClose event procedure enter the following:
______________
Private Sub Report_Open(Cancel As Integer)
DoCmd.OpenForm "Form Name", , , , , acDialog, ""
If Not IsLoaded("Form Name"

Then
Cancel = True
End If
End Sub
Private Sub Report_Close()
DoCmd.Close acForm, "Form Name"
End Sub
______________
Create a new module and enter the following:
______________
Function IsLoaded(ByVal strForm As String) As Integer
Const X = 0
Const Y = 0
If SysCmd(acSysCmdGetObjectState, acForm, strForm) <> X Then
If Forms(strForm).CurrentView <> Y Then
IsLoaded = True
End If
End If
End Function
___________________
Then in your query builder and text boxes reference the forms textbox like you would any other, [FORMS]![FORM_NAME]![TEXTBOX_NAME].
So really all you are doing is opening a form prior to a report for input, make sure Modal and Popup properties are set to "Yes". Then hiding the form while the report is being viewed, and eventually closed when the report is closed. The Function is there simply to verify that that the form is loaded for use in the report. Hope some this helped.