A recordset has a seldom-used property, Name, that gives you the table, query or SQL string that the recordset was opened with. And this is exactly what is needed to set a recordsource.
In the Open event of the report:
Private Sub Report_Open(Cancel As Integer)
Me.RecordSource = grst.Name
End Sub
In a standard module:
Public grst As Recordset
Public Sub testreport()
Set grst = CurrentDb.OpenRecordset( _
"Select * from tblTest1 where longfield=4")
DoCmd.OpenReport "rptTest1", acViewPreview
grst.Close
Set grst = Nothing
End Sub
|