4

NevronaDesignsのRaveReports は、 Embarcaderoの DelphiIDEで使用するためのレポートエンジンです。

これは私がRaveEndlessLoopバグと呼んでいるものです。Delphi2006にバンドルされているRaveReportsバージョン6.5.0(VCL10)には、多くのRaveレポート開発者を悩ませている悪意のあるバグがあります。空でないデータセットがあり、このデータセットのデータ行がページに正確に収まる場合(つまり、未亡人の行がゼロの場合)、PrintPreview時に、Raveはページを生成する無限ループでスタックします。

この問題は、このニュースグループの次の見出しで以前に報告されています。

  1. "エラー:無限ページの生成"; ヒューゴヒラム2006年9月20日20:44
  2. "レイブループのバグ。助けてください"; トーマス・ラザール2006年11月7日19:35
  3. "データの全ページをループしますか?"; TonyChistiansen2004年12月23日15:41
  4. 別の申立人による(3)への返信。オリバーピシェ
  5. "エンドレスロッププリントバグ"; Richso2004年9月11日16:44

これらの投稿のそれぞれで、Nevronaからの応答はなく、解決策は報告されていません。

おそらく、この問題は関連ニュースグループ(nevrona.public.rave.reports.general)でも報告されており、次のようになっています。Jobard 20/11/2005(6)がRave Endlessループのバグなのか、それとも別の問題なのかはわかりませんが。この投稿はNevronaから返信がありましたが、未亡人がいないという問題よりも、複数の地域(「ページ分割を超える複数の地域を使用すると問題が発生します」)に関連していました。

4

4 に答える 4

2

これは、真の解決策というよりも回避策です。私は最初にこの回避策をNevronaニュースグループに投稿しました(Group = nevrona.public.rave.developer.delphi.rave; Subject = "Rave Endless Loopバグに苦しんでいますか?:回避策が発表されました。";日付= 13 2006年11月7:06PM)

これが私の解決策です。これは、優れた長期的な解決策というよりも回避策であり、Nevronaが近い将来この問題に深刻な注意を払うことを願っています。

  1. 特定のレポートレイアウトを前提として、ページあたりの最大行数を数えます。これは40だとしましょう。
  2. (レポート全体の行ではなく)ページ内の行をカウントするカウンターを設定します。これは、イベントスクリプトまたはCalcTotalコンポーネントのいずれかによって実行できます。
  3. メインデータバンドのOnBeforePrintスクリプトイベントハンドラーを定義します。
  4. このイベントハンドラーでは、ページあたりの行数が最大値より1または2少ない場合、メインデータバンドのFinishNewPageプロパティをTrueに設定します(この例では、これは38になります)。それ以外の場合はすべてFalseに設定します。これの効果は、すべてのページにゼロ以外の数の未亡人(この場合は1..38)を与えることであり、したがって、レイブエンドレスループの問題を引き起こす条件を回避します。
于 2008-09-16T02:37:26.023 に答える
1

このショーンに感謝します-残念ながらこれは私にはうまくいきませんでしたが、別の解決策を思いつきました...リージョンの上部にメモがあり、ユーザーが持っているメモの数に応じて拡大または縮小する可能性がありますデータベースに残しました。これは、1 ページに収まる行数が異なることを意味します。でも。別の解決策があります - データバンドの MaxHeightLeft プロパティを使用します。データバンドの高さを測定し、2 倍して MaxHeightLeft プロパティに入れるだけです。これにより、1 つまたは 2 つのレコードがいっぱいになると、次のページに強制的に移動されます。

于 2009-01-23T23:47:29.283 に答える
0

どうもありがとう、このスレッドは、Nevrona Rave での無限の印刷ループに関する私の問題から私を助けてくれます....、私は MinHeightLeft を 0,500 に設定しました。クエリ レポート。

于 2009-07-12T16:36:18.733 に答える
0

マスター、解決策は MinHeightLeft から 0,500 です。プロパティ Wastefit area を true で使用し、2 番目の印刷でループを生成しましたが、プロパティ MinHeightLeft を 0,500 に変更すると、エラーが消えます。

ありがとう !

アテ・ファビオラ・エレーラ。Fabi_ucv@hotmail.com

于 2010-06-22T12:48:48.693 に答える