データセットの中身をクリスタルレポートに表示

まずは、何はともあれクリスタルレポート側の設定

「プロジェクト」 - 「新しい項目の追加」より

クリスタルレポートを追加。 名前は、「HiraCryRepo1.rpt」にした。 てきとーでいいが、これが後でClass名になる。


便利そうな自動機能があるが、人に勝手なことをされると嫌がる性格なので、 「空のリポートを作成」を選択。


こんな雰囲気の画面になる。

レポートヘッダーとかページヘッダーとか意味わからんが
レポートヘッダー 最初に一回だけ出る
ページヘッダー 各ページの最初に毎回登場
詳細 データ1行ごとに1回出る、感じ
レポートフッター 最後に一回だけ出る
ページフッターよりは上
ページフッター 各ページの最後に毎回登場
というような感じだ。

なんとなく具体的にイメージすると、
レポートヘッダー はしがきや目次
ページヘッダー 各ページの上にある章のタイトル等のヘッダー
詳細 本文
レポートフッター 作者あとがき
ページフッター 各ページの下に出ているページ番号とか
みたいな感じか。 これ以外に詳細を挟み込むようにグループがある。

データベースフィールドの設定

を右クリックしてメニューを出し、

「データベースの追加/削除」を選択
どのメニューにもいえることだが、一番上の「データベースフィールド」というのは選択しても何も起きない。 ただの、メニュータイトルのようだ・・・。


こんな画面になるので、


「その他のデータソース」 - 「ADO.NET (XML)」の横の「+」をクリック


こんな感じの画面が出るので、「Visual Studioデータクラスを使用」をチェックし、先ほど作ったオリジナルのデータセットを選択する。
ここで、あるはずなのに、表示されないことがよくあるが、謎である。 しばらく待っていると出てきたり、よくわからん。 どうも、うまく出ないときは、全部保存して、再起動するといけるようだ。
一度失敗してから再起動するのがいいという噂もある。 なんじゃそら。


完了を押すと、このように、さっき作った「Table1」が見えている。 いい感じだ。


後は、右側に持っていくと完成。


さっき作成したテーブルのカラムばっちり見えている。 いい感じ。

レポートに貼り付け

ドラッグすると貼り付けられる。 とりあえず、今回は「レポートヘッダー」に貼り付けることにした。


こんな感じ。


1度使ったカラムは、こんな感じにマークが付く。

プレビューしてみる

デザイン部分

Formに「CrystalReportViewer」を貼り付ける。 (さっきのままだと、DataGridがじゃまなので、DockのFillをやめるとか、それはてきとーに。)


こんな感じで並べてみた。 Anchorを設定しておくと、何かと幸せ。


コードの部分

コードはこんな感じで追加

HiraCryRepo1 cr = new HiraCryRepo1();
crystalReportViewer1.ReportSource = cr;
さっきのクリスタルレポートはHiraCryRepo1クラスになっているので、インスタンス化して、CrystalReportViewerの「ReportSource」に設定するだけ。

実行

さて、実行してみると、

あれれ。おかしなことを聞いてくるぞ。
そう、さっきクリスタルレポートで設定したデータセット「HiraDataSet」はあくまで、ガワだけで中身がないのだ。 データセットの中身(HiraDaraSetのインスタンス)をクリスタルレポートに渡してやらないといけない。 ま、わかりやすいわな。

C#からデータセットを渡す

こんな感じ。

cr.SetDataSource(ds);
CrystalReportViewerに渡す前に書いた方がいいみたい。 ま、簡単やね。


いい感じで出てます。


[home] [クリスタルレポートトップ]
ひらちゃんのページ