- PR -

CrystalReportのレイアウトについて

1
投稿者投稿内容
Pizza
会議室デビュー日: 2005/11/30
投稿数: 10
投稿日時: 2006-04-01 13:43
OS:WinXP Pro
DB:Oracle10g
言語:VidualBasic.net 2003 + CrystalReport for .net

お世話になります。

CrystalReportで帳票を作成しているのですが、
単一のデータセット上に以下のような形で複数エレメントを作成し
(リレーションは無い)そこにVB上からデータを流しこみ
レポートを作成しています。

SmplDst(データセット)
◆TABLE_A
 col1 String
 col2 String

◆TABLE_B
 colA String
 colB String

(各エレメントに格納されるデータ)
TABLE_A
col1|col2|
----------
00| a|
11| b|
22| c|

TABLE_B
colA|colB|
----------
1000|abcd|

で、帳票では以下のように画面上にセットしています
詳細セクションa
[col1][col2]
詳細セクションb
[colA][colB]

印刷した結果として以下のように表示させたいのですが、
列1|列2| ←ヘッダ
---------- ←詳細
00| a|
11| b|
22| c|
1000|abcd|
----------

でも実際はこうなってしまいます。
列1|列2| ←ヘッダ
---------- ←詳細
00| a|
1000|abcd|
11| b|
1000|abcd|
22| c|
1000|abcd|
----------

どのようにレイアウトをすれば
列1|列2| ←ヘッダ
---------- ←詳細
00| a|
11| b|
22| c|
1000|abcd|
----------
このようなレイアウトが可能になるのでしょうか?
申し訳ございませんが皆様ご教授のほどよろしくお願いします。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-04-01 16:13
現状ですとマージしてもダメでしょうね。
順番が保証されるフィールドはありませんか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Pizza
会議室デビュー日: 2005/11/30
投稿数: 10
投稿日時: 2006-04-01 16:26
じゃんぬねっとさん返信ありがとうございます。
前回はありがとうございました。
…今回もよろしくお願いしますorz

引用:

じゃんぬねっとさんの書き込み (2006-04-01 16:13) より:
現状ですとマージしてもダメでしょうね。
順番が保証されるフィールドはありませんか?




順番が保証されるフィールドというのは
各データテーブル全てに共通するシーケンスのようなものを
つけると言う認識でよろしいのでしょうか?

現行処理としては
DBから各テーブル(TABLE_A,TABLE_B)のデータ取得

TABLE_Aで取得したデータ分ループ
データテーブル(TABLE_A)にNewRowしてデータ登録→Add(Row)

TABLE_Bで取得したデータ分ループ
データテーブル(TABLE_B)にNewRowしてデータ登録→Add(Row)

のような形で処理をしているのでデータテーブルのエレメントに
1行足してロジック側で擬似シーケンスを張ることは可能なのです。

これが出来た場合、どのような手法で先の記述のような
レイアウトが出来るのでしょうか?

申し訳ありませんが、ご教授願います。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-04-01 16:35
引用:

Pizzaさんの書き込み (2006-04-01 16:26) より:

これが出来た場合、どのような手法で先の記述のような
レイアウトが出来るのでしょうか?


OrderBy がかけられるようになるので可能でしょうね。
識別できるフィールドさえあれば、CrystalReports 側からでも順番の制御はかけられます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Pizza
会議室デビュー日: 2005/11/30
投稿数: 10
投稿日時: 2006-04-01 17:12
度々の返信ありがとうございます。

引用:

じゃんぬねっとさんの書き込み (2006-04-01 16:35) より:
OrderBy がかけられるようになるので可能でしょうね。



CrystalreportでOrderbyをかけることが可能なのですか?

引用:

識別できるフィールドさえあれば、CrystalReports 側からでも順番の制御はかけられます。



順番の制御のイメージは書くデータテーブルのシーケンスを同じ
フィールドとみなしての並び替えを行うようなイメージでしょうか?

以下のような感じでデータセット内のデータテーブルにSortNumを追加しました。

SmplDst(データセット)
 ◆TABLE_A
  col1 String
  col2 String
  SortNum Long

 ◆TABLE_B
  colA String
  colB String
  SortNum Long

あとはセクションをひとつにまとめました。
詳細セクションa
[col1][col2]
[colA][colB]

で、データを一件追加するたびにSortNum用の値を
インクリメントしてデータに一意な値をセットしてます。

結果としては変わらずでした…
多分クリレポ側の設定が必要だと思うのですが、
何をどのように設定してよいのかわからずです…

もし、お分かりになるのであればご教授願えますでしょうか?
よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-04-01 17:35
引用:

Pizzaさんの書き込み (2006-04-01 17:12) より:

CrystalreportでOrderbyをかけることが可能なのですか?


CrystalReports 側となるとバウンド レポートの場合はクエリ式で、
今回のようなアンバウンド レポートの場合はグループ セクションで可能です。
もちろん DataSource 自体に Order をかけておくのも手ですが。

引用:

結果としては変わらずでした…
多分クリレポ側の設定が必要だと思うのですが、
何をどのように設定してよいのかわからずです…


グループ セクションを追加してください。
セクションのプロパティから、出力順の制御ができます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Pizza
会議室デビュー日: 2005/11/30
投稿数: 10
投稿日時: 2006-04-01 18:15
じゃんぬねっと様
度々ありがとうございますです。

引用:

じゃんぬねっとさんの書き込み (2006-04-01 17:35) より:

グループ セクションを追加してください。
セクションのプロパティから、出力順の制御ができます。



教えていただいた方法で並び順を整えることは出来ました。
ありがとうございます。

ただ、結局私の知識不足で本来のやりたかったことはできず、
仕方無しに以下のようにやりました。

SmplDst(データセット)
 ◆TABLE_A
  col1 String
  col2 String
  SortNum Long

 ◆TABLE_B
  colA String
  colB String
  SortNum Long

だったのを
SmplDst(データセット)
 ◆TABLE_A
  col1 String
  col2 String
  colA String
  colB String
  SortNum Long

に変更しセクションを

詳細a
[col1][col2]
詳細b
[colA][colB]

上記のような形にして

VB側で、
TABLE_Aで取得したらcol1とcol2に、
TABLE_Bで取得したらcolAとcolBに
それぞれデータをaddするような形でRowを作成し、
もともとのTABLE_A用の詳細セッションとTABLE_B用の詳細セッションを作成し、
セッションの設定でデータなしの場合に非表示にしてやることで一応思っていた形には出来そうです。

グループ化したせいか、重複したデータに非表示が出来なくなったので
こちらもVB側からの制御をかけてどうにかしようかと思います。

度々教えていただいて申し訳ございませんが、
時間もかなりぎりぎりなので今回はこれで行こうかと思います。
申し訳ありませんでした。
でも助かりました!
ありがとうございます。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-04-01 18:35
引用:

Pizzaさんの書き込み (2006-04-01 18:15) より:

グループ化したせいか、重複したデータに非表示が出来なくなったので
こちらもVB側からの制御をかけてどうにかしようかと思います。


あ、グループ セクションを追加すると詳細セクション内が別セクションになってしまうからですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)