- - PR -
CrystalReportのレイアウトについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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| ---------- このようなレイアウトが可能になるのでしょうか? 申し訳ございませんが皆様ご教授のほどよろしくお願いします。 | ||||||||
|
投稿日時: 2006-04-01 16:13
現状ですとマージしてもダメでしょうね。
順番が保証されるフィールドはありませんか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-04-01 16:26
じゃんぬねっとさん返信ありがとうございます。
前回はありがとうございました。 …今回もよろしくお願いしますorz
順番が保証されるフィールドというのは 各データテーブル全てに共通するシーケンスのようなものを つけると言う認識でよろしいのでしょうか? 現行処理としては DBから各テーブル(TABLE_A,TABLE_B)のデータ取得 TABLE_Aで取得したデータ分ループ データテーブル(TABLE_A)にNewRowしてデータ登録→Add(Row) TABLE_Bで取得したデータ分ループ データテーブル(TABLE_B)にNewRowしてデータ登録→Add(Row) のような形で処理をしているのでデータテーブルのエレメントに 1行足してロジック側で擬似シーケンスを張ることは可能なのです。 これが出来た場合、どのような手法で先の記述のような レイアウトが出来るのでしょうか? 申し訳ありませんが、ご教授願います。 | ||||||||
|
投稿日時: 2006-04-01 16:35
OrderBy がかけられるようになるので可能でしょうね。 識別できるフィールドさえあれば、CrystalReports 側からでも順番の制御はかけられます。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-04-01 17:12
度々の返信ありがとうございます。
CrystalreportでOrderbyをかけることが可能なのですか?
順番の制御のイメージは書くデータテーブルのシーケンスを同じ フィールドとみなしての並び替えを行うようなイメージでしょうか? 以下のような感じでデータセット内のデータテーブルにSortNumを追加しました。 SmplDst(データセット) ◆TABLE_A col1 String col2 String SortNum Long ◆TABLE_B colA String colB String SortNum Long あとはセクションをひとつにまとめました。 詳細セクションa [col1][col2] [colA][colB] で、データを一件追加するたびにSortNum用の値を インクリメントしてデータに一意な値をセットしてます。 結果としては変わらずでした… 多分クリレポ側の設定が必要だと思うのですが、 何をどのように設定してよいのかわからずです… もし、お分かりになるのであればご教授願えますでしょうか? よろしくお願いします。 | ||||||||
|
投稿日時: 2006-04-01 17:35
CrystalReports 側となるとバウンド レポートの場合はクエリ式で、 今回のようなアンバウンド レポートの場合はグループ セクションで可能です。 もちろん DataSource 自体に Order をかけておくのも手ですが。
グループ セクションを追加してください。 セクションのプロパティから、出力順の制御ができます。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-04-01 18:15
じゃんぬねっと様
度々ありがとうございますです。
教えていただいた方法で並び順を整えることは出来ました。 ありがとうございます。 ただ、結局私の知識不足で本来のやりたかったことはできず、 仕方無しに以下のようにやりました。 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側からの制御をかけてどうにかしようかと思います。 度々教えていただいて申し訳ございませんが、 時間もかなりぎりぎりなので今回はこれで行こうかと思います。 申し訳ありませんでした。 でも助かりました! ありがとうございます。 | ||||||||
|
投稿日時: 2006-04-01 18:35
あ、グループ セクションを追加すると詳細セクション内が別セクションになってしまうからですね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1