- - PR -
AvtiveRports for .NET で改ページ時の出力データがずれる
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-09-14 16:44
はじめて投稿させていただきます。
グループ化や意図的な改ページ等をしない、 Detailセクションだけのごくシンプルな帳票を出力するときの現象です。 ページの縦幅を越え、自然に改ページされたときに、 改ページ前の最終データが、改ページ後の先頭に表示されてしまいます。 次のようにDetailセクションで行番号を表示させてやると現象を確認できます。 (lblNo という ラベル をDetailセクションに配置しています) Private Sub Detail_Format(ByVal sender As Object, ....) Handles Detail.Format lblNo.Value = Me.PageNumber End Sub この現象が問題なのは、例えば、 重複データを非表示にするロジックを埋め込んだとき。 ページのはじめのデータは重複データだとしても表示しておく必要がありますが、 改ページ前の最終データが非表示にされた状態で、次ページの先頭に表示されます。 DataSauce に データテーブルをセットした場合や DataSauce には何もセットせず、デザイナ上にSQLを持たせた場合でも 同じ現象になりました。 いろいろ試行錯誤しましたが、原因、回避策が見つかりません。 また、ActiveReports のバグも疑ってみましたが、バグレポートでは 見つけることができませんでした。 同じような現象を経験された方、回避策をご存知の方、いらっしゃいましたら お力添えよろしくお願いします。 また、ActiveReports と親和性の高い .NET対応の帳票ツール も探しています。 ActiveReports は下記バージョンを使用しています。 ActiveReports for .NET SP3 (Standard) Version 3.3.1.2018 | ||||
|
投稿日時: 2005-09-14 17:46
レイアウトエディタのDetailセクションで
KeepTogetherをTrueにすれば回避できたはずです。 しばらくいじってないのでちょっと確認は取れませんが。 _________________ 人の振り見て我が振りなおせ。 | ||||
|
投稿日時: 2005-09-14 18:24
ご返答ありがとうございます。 さきほど KeepTogether = True を試して見ましたが、ダメでした。 他のプロパティ CanShrink 、CanGrow も試してみましたが、これらもダメでした。。 もしやと思い PageHeader の CanShrink 、CanGrow も試してみましたが、回避ならずでした。 [ メッセージ編集済み 編集者: Bear 編集日時 2005-09-15 09:45 ] | ||||
|
投稿日時: 2005-09-14 22:14
表示データが縦幅をこえたら次ページに表示されるのは当然のような気がしますが。 どのような結果を求めているのですか? | ||||
|
投稿日時: 2005-09-14 23:13
文章だけではなかなか現象が伝わりにくいのですが、 1ページ目で処理されたデータは 1ページ目に出力される。 という、当たり前のことをしたいのですが 1ページ目で処理されたデータが 2ページ目の先頭に出力されてしまう。 という状況になっています。 具体的には下図のような結果を求めています。 []内が出力される1フィールドのデータです。 [C]のように同じデータが連続している場合は、[ ]非表示にします。 ただしページの先頭では非表示にしない。 --<ページ1>-------------------------------------- [A] [1000] [XXXXXXXX] [B] [2000] [XXXXXXXX] [C] [3000] [XXXXXXXX] [ ] [3001] [XXXXXXXX] [ ] [3002] [XXXXXXXX] [ ] [3003] [XXXXXXXX] --<ページ2>-------------------------------------- [C] [3004] [XXXXXXXX] [ ] [3005] [XXXXXXXX] [ ] [3006] [XXXXXXXX] [D] [4000] [XXXXXXXX] [E] [5000] [XXXXXXXX] これを実際に出力すると下図のようにずれてしまいます。 --<ページ1>-------------------------------------- [A] [1000] [XXXXXXXX] [B] [2000] [XXXXXXXX] [C] [3000] [XXXXXXXX] [ ] [3001] [XXXXXXXX] [ ] [3002] [XXXXXXXX] --<ページ2>-------------------------------------- [ ] [3003] [XXXXXXXX] [C] [3004] [XXXXXXXX] [ ] [3005] [XXXXXXXX] [ ] [3006] [XXXXXXXX] [D] [4000] [XXXXXXXX] [E] [5000] [XXXXXXXX] [3003] のレコードを処理する Formatイベント の中で PageNumber を調べると 1 になっています。[3004] のときには 2 になっています。 長くなり申し訳ないです。 | ||||
|
投稿日時: 2005-09-15 09:05
確認なんですが...
PageNumber の参照をやめると、この現象は起きないんですね? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-09-15 09:33
NOです。PageNumber の参照をやめても現象はおきます。 PageNumber を参照するから起こる現象ということではないんです。 あくまで、ページをまたぐデータがずれていることを確認するためだけに、PageNumber を参照しています。 | ||||
|
投稿日時: 2005-09-15 09:55
こんにちは、じゃんぬ です。
あちゃー、以下の意味を取り違えてました。 > 次のようにDetailセクションで行番号を表示させてやると現象を確認できます。 > (lblNo という ラベル をDetailセクションに配置しています) ということは、非表示にしているのが原因と考えられますね。 どういうロジックで、前のデータとの比較をしているのでしょう? 私だったら、これらをグループ セクションで括り、 「まとめて表示」させるような仕様にしますね。 (まとめて表示できなければ、その時点で改ページする) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1|2|3
次のページへ»