- PR -

AvtiveRports for .NET で改ページ時の出力データがずれる

投稿者投稿内容
Bear
会議室デビュー日: 2005/09/14
投稿数: 10
投稿日時: 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

無月 重造
ベテラン
会議室デビュー日: 2003/12/18
投稿数: 67
投稿日時: 2005-09-14 17:46
レイアウトエディタのDetailセクションで
KeepTogetherをTrueにすれば回避できたはずです。

しばらくいじってないのでちょっと確認は取れませんが。
_________________
人の振り見て我が振りなおせ。
Bear
会議室デビュー日: 2005/09/14
投稿数: 10
投稿日時: 2005-09-14 18:24
引用:

無月 重造さんの書き込み (2005-09-14 17:46) より:
レイアウトエディタのDetailセクションで
KeepTogetherをTrueにすれば回避できたはずです。



ご返答ありがとうございます。
さきほど KeepTogether = True を試して見ましたが、ダメでした。
他のプロパティ CanShrink 、CanGrow も試してみましたが、これらもダメでした。。
もしやと思い PageHeader の CanShrink 、CanGrow も試してみましたが、回避ならずでした。

[ メッセージ編集済み 編集者: Bear 編集日時 2005-09-15 09:45 ]
aacute
常連さん
会議室デビュー日: 2005/08/25
投稿数: 30
投稿日時: 2005-09-14 22:14
引用:
Bearさんの書き込み (2005-09-14 16:44) より:
ページの縦幅を越え、自然に改ページされたときに、
改ページ前の最終データが、改ページ後の先頭に表示されてしまいます。


表示データが縦幅をこえたら次ページに表示されるのは当然のような気がしますが。
どのような結果を求めているのですか?
Bear
会議室デビュー日: 2005/09/14
投稿数: 10
投稿日時: 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 になっています。

長くなり申し訳ないです。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-09-15 09:05
確認なんですが...

PageNumber の参照をやめると、この現象は起きないんですね?


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Bear
会議室デビュー日: 2005/09/14
投稿数: 10
投稿日時: 2005-09-15 09:33
引用:

じゃんぬねっとさんの書き込み (2005-09-15 09:05) より:
PageNumber の参照をやめると、この現象は起きないんですね?


NOです。PageNumber の参照をやめても現象はおきます。
PageNumber を参照するから起こる現象ということではないんです。
あくまで、ページをまたぐデータがずれていることを確認するためだけに、PageNumber を参照しています。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-09-15 09:55
こんにちは、じゃんぬ です。

引用:

Bearさんの書き込み (2005-09-15 09:33) より:

NOです。PageNumber の参照をやめても現象はおきます。
PageNumber を参照するから起こる現象ということではないんです。
あくまで、ページをまたぐデータがずれていることを確認するためだけに、PageNumber を参照しています。


あちゃー、以下の意味を取り違えてました。

> 次のようにDetailセクションで行番号を表示させてやると現象を確認できます。
> (lblNo という ラベル をDetailセクションに配置しています)

ということは、非表示にしているのが原因と考えられますね。
どういうロジックで、前のデータとの比較をしているのでしょう?

私だったら、これらをグループ セクションで括り、
「まとめて表示」させるような仕様にしますね。
(まとめて表示できなければ、その時点で改ページする)


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

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