組み込みのレポートビューアコントロールを使用して、カスタムレポートを生成しようとしています。Crystal Reportsは重く、すべてのクライアントコンピューターで機能するわけではないため、Microsoftレポートのビルドを試してみます。
このレポートの目的は、すべてのプログラムのリストを印刷することです。それらはデータベースから取得され、次のようにリストに保存されます。
Private Function ProgramDataset() As DataSet
Dim ds As DataSet = New DataSet("Programs")
Dim allPrograms As List(Of clsProgram) = clsProgram.GetAll()
'Build datatable
Dim table1 As DataTable = New DataTable("Programs")
table1.Columns.Add("ProgramName")
For Each program As clsProgram In allPrograms
table1.Rows.Add(program.Name)
Next
' Create a DataSet. Put the table in it
ds.Tables.Add(table1)
Return ds
End Function
したがって、私のデータセットは「Programs」と呼ばれ、「ProgramName」という名前の列を持つDataTableが含まれています。プログラムの名前を追加し、最後にここで使用するデータセットを返します。
Dim ds As DataSet = ProgramDataset()
Dim p As New ReportParameter("programName", "Test")
frmReportViewer.ReportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local
frmReportViewer.ReportViewer1.LocalReport.ReportPath = "..\..\Reports\rptReport.rdlc"
frmReportViewer.ReportViewer1.LocalReport.SetParameters(p)
frmReportViewer.ReportViewer1.LocalReport.DataSources.Clear()
frmReportViewer.ReportViewer1.LocalReport.DataSources.Add(New Microsoft.Reporting.WinForms.ReportDataSource("Programs", ds.Tables(0)))
frmReportViewer.ReportViewer1.DocumentMapCollapsed = True
frmReportViewer.ReportViewer1.RefreshReport()
frmReportViewer.Show()
「rptReport」という名前のレポートには、「programName」という名前のパラメータフィールドが含まれています。今、私は「テスト」で書きます、そしてそれは働きます。私の問題は、ループを介してすべてのプログラム名を出力したいのですが、それを実行する方法がよくわかりません...