レポートに表組みデータを表示する方法
ここではマイクロソフトのサンプルデータベース Northwind データベースを利用し、 レポートに表組みデータを表示する方法を紹介します。
表示するのは Customers テーブルの内容をレポートに表示します。
尚、ここで紹介する方法は必ずしも最良、最善の MS 推奨の方法ではないかもしれませんが、 僕がレポートを利用するにあたって、こうすると作成・変更が楽、と思えた方法です。
厳密に同じにする必要は無いかと思いますが、気楽に実績のある方法なんだなぁ、とみてもらえればと思います。
まずはデータセットを作成します。
その中にデータテーブルを作成しますが、この場合、Visual Studio のサーバーエクスプローラでデータベースに接続し、テーブルをドラッグアンドドロップするとテーブルが作成されます。
次にプロジェクトにレポートを追加します。
そこに Table を配置します。このとき関連付けるデータを聞かれるので、次のように指定します。
Name は分かりやすいように適当に変えておくと良いです。
データテーブルと関連付けされると、テーブルのカラムにカーソルを置いたときに、カラムの選択リストが表示されるようになります。
これをレポートに表示したいように選んでいきます。ここでは仮に次のように5個のフィールドを割り当てます。
レポートを表示する側は ReportViewer ウィジェットを使います。これをフォームに配置して Dock プロパティを Fill にしておきます。
以上、データテーブル、レポート、レポートビューアを準備した上で、次のコードでレポートにデータを渡します。
using Microsoft.Reporting.WinForms;
using System;
using System.Data;
using System.Windows.Forms;
namespace report2 {
public partial class Form2 : Form {
public Form2() {
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e) {
// Load Data to dt
var dt = new DataSet1.CustomersDataTable();
var da = new DataSet1TableAdapters.CustomersTableAdapter();
da.Fill(dt);
// Set Report Properties
var rds = new ReportDataSource("CustomersTable", (DataTable) dt);
this.reportViewer1.LocalReport.DataSources.Add(rds);
this.reportViewer1.LocalReport.ReportPath
= @"C:\test\Report1.rdlc";
// Refresh
this.reportViewer1.RefreshReport();
}
}
}
尚、ここでは Strongly-Typed なデータセットを使っていますが、特にその必要はありません。 汎用の DataTable でデータを渡しても全く問題ありません。
これを実行すると、次のようにデータが表示されるのがわかります。