I've taken a slightly different approach, so I don't know if this is the kind of thing that you're asking about, but it works for me. Now, I'm using VB2003, so if that makes a difference just ignore the rest.
What I did was to:
Create my reports and save them separate (not imbnedded) from the VB app.
Create a sub-form and called it frm(application)Report,
Added a CrystalReportViewer, a reportDocument and a OleDbConnection to the form.
Sized the Viewer to fill the whole form
Then I coded a Sub-routine with the following:
Private Sub ....vViewer.....
' create a virtual copy of the form
Dim vAppNameReport As New frmAppNameReport()
' Pass the vForm te CR.rpt path & name
vAppNameReport.CrystalReportViewer1.ReportSource = crReportDocument
' Check for Selection criteria in the report. If there is any, merge it with the Selection criteria from the VB App.
If Len(crReportDocument.RecordSelectionFormula) > 5 Then
If Len(Select_String) > 1 Then
vAppNameReport.CrystalReportViewer1.SelectionFormula = "(" & crReportDocument.RecordSelectionFormula & ") AND " & Select_String
Else
vAppNameReport.CrystalReportViewer1.SelectionFormula = "(" & crReportDocument.RecordSelectionFormula & ")"
End If
Else : vAppNameReport.CrystalReportViewer1.SelectionFormula = Select_String
End If
' Pass various properties to the form
vAppNameReport.Text = gReportName
vAppNameReport.CrystalReportViewer1.Dock = DockStyle.Fill
vAppNameReport.Visible = True
vAppNameReport.BringToFront()
vAppNameReport.CrystalReportViewer1.Visible = True
vAppNameReport.CrystalReportViewer1.BringToFront()
Then I created a button for each report and called the sub-routine from the buttons subroutine with the following:
gSelString = txtComplaintID.Text
gReportSource = gfilePath & "CRreportname.rpt"
gReportName = "Title"
' Called the vViewer sub-routine, passing it various parms wich were used to supply login criteria
' to other parts of the sub-routine.
Me.SendToBack()
vViewer(gID, gPWD, gServerName)
This setup gives me the ability to view several reports at a time, each one using a virtual viewer.