グループ化してデータを出力

テスト用データセットの作成

まず、データセットの中身を次のようにする。
for (int i = 1; i <= 10; i++) 
{
	for (int j = 1; j <= 10; j++) 
	{
		// Table1の新しい行を生成
		HiraDataSet.Table1Row tr = (HiraDataSet.Table1Row)ds.Table1.NewRow();

		tr.BeginEdit();
		tr.key1 = i;
		tr.key2 = j;
		tr.str = "ひらてすと";
		tr.val1 = 100;
		tr.val2 = 200;
		tr.EndEdit();

		// 最後にデータセットに追加する
		ds.Table1.Rows.Add(tr);
	}
}
よくあるデータでは、key1が部門コード、key2が社員コード、みたいな感じだ。

レポートの設定

縦にデータを出した例もグループ化しているといえばしている。 その単位は、ページだ。 ページが変わると、新たに、ページヘッダを出力し、詳細のデータを出力し、そして、ページフッタを出力する。 そして、また、新しいページへと続く。

グループ化してデータを扱うためにはをグループを利用する。 「グループ名フィールド」を右クリックして、

グループの挿入を選択すると、

こんな画面になる。
ちなみに、データベースフィールドを設定しておかないと、このメニューは出ない。 とりあえず、一番上の「key1」というあたりがポイントだ。 これを元にしてグループ化する。 今回はこのまま、昇順に並び替えた「key1」をキーにして、グループ化する。 これは、
key1key2????
11A
12B
13C
21D
22E
31F

となっている場合に、ABC, DE, F という単位で固めるということだ。
決定すると、

という感じになる。 詳細を挟むような形で、グループヘッダー、グループフッターが出来ている。 グループヘッダーにある「グループ名 #1」はTable1.key1を指す別名だ。 気に入らなかったら、消してTable1.key1を貼り付けても同じことだし、必要なければなくてもよい。 大事に取ってはおきたいが、内容を編集したい場合は、右クリックして、「選択エキスパート」を選択する。

今回はこんな風にしてみた。

出力


こんな感じ。
しかし、なんとなく気に入らない。
グループヘッダのkey1と「ひらてすと」のあるデータの行が空いている。
なんというか、
1


1ひらてすと

2ひらてすと

ではなく、
11ひらてすと

2ひらてすと

としたいわけだ。
これは、やり方はいろいろあるが、とりあえず、簡単なところで、「セクションの書式」の「グループヘッダ」のところで設定できる。

ここの、「続くセクションをアンダーレイ」にチェックを入れると、次のセクション、つまり、次の行が重なって表示される。

いかかだろう。 少しはよくなっただろうか。
[home] [クリスタルレポートトップ]
ひらちゃんのページ