В прошлом я делал что-то подобное, что вы можете использовать для своих целей. Обычно я использую раскрывающийся список или список, чтобы позволить пользователю выбрать файл, который он хочет просмотреть, а затем передать индекс предмета в intFileId.
Private Sub OpenCR(ByVal intfileId As Integer)
Dim aReport As ReportDocument
Select Case intfileId
Case 0 : aReport = New CountSheets
Case 1 : aReport = New CategoryVariance
Case 2 : aReport = New DollarVariance
Case 3 : aReport = New CategoryVarianceAdmin
Case 4 : aReport = New DollarVarianceAdmin
Case 5 : aReport = New PhysicalCount
Case 6 : aReport = New BookToPhysicalCount
Case 7 : aReport = New MissingItemCodes
End Select
aReport.Refresh()
aReport.SetParameterValue("isAmtsShown", isAmtsShown)
aReport.SetParameterValue("parStoreID", StoreID)
aReport.SetDatabaseLogon("username", "password", "server", "table")
crvReports.ReportSource = aReport
End Sub
Чтобы ответить на конкретный вопрос о передаче имени в качестве аргумента. Вы можете сделать это примерно так:
Private Sub RunReportbyName()
' The Crystal Report name in
' this project is MyReport.rpt
Dim aReport As ReportDocument = New MyReport
OpenCR(aReport)
End Sub
Private Sub OpenCR(ByVal RepDoc As ReportDocument)
'RepDoc.SetDatabaseLogon("","","","")
CrystalReportViewer1.ReportSource = RepDoc
CrystalReportViewer1.Visible = True
End Sub