3

[CrossTab ウィジェットで] 値セルを垂直方向ではなく水平方向に伸ばすにはどうすればよいですか? [オーバーフロー時にストレッチ] は、セルを水平方向ではなく垂直方向にストレッチします。

4

1 に答える 1

3

バックグラウンド

私の記憶が正しければ、JasperReports のセルは、水平方向に伸びるように設計も実装もされていませんでした。これは、主任開発者が意識的に下した決定です。

データの幅に応じてクロス集計セルを生成することで、セルを引き延ばすことができます (この文だけで、この問題に対する一般的な解決策を作成する範囲の感触が得られるはずです)。可能ですが、 JasperReports APIを使用して独自のクラスを作成する必要があります。

100,000 行のデータがあり、セルを最も長い文字列に自動調整したいとします。JasperReports は、次の 2 つのいずれかを実行する必要があります。

  1. 最終的な SQL ステートメントを実行する前に、開発者の SQL ステートメントを一般的に変更して、対応する各列の最長の文字列をクエリします。これにより、実質的にクエリが 2 回実行されます。クエリが揮発性の関数呼び出しを使用する場合、あらゆる種類の問題が発生する可能性があります。
  2. すべての行を照会してから、最長の文字列を特定します。10,000 レコード未満のクエリの場合、これは問題になりません。100,000 行までスケーリングすると、パフォーマンスが大幅に低下し、かなりの量の RAM が消費されます。

次に、空白に関する質問に答える必要があります: トリムするか、トリムしないか? レポート ソフトウェアがデータをトリミングすると、返されるデータはデータベース内の情報を正確に表したものではなくなります。データがトリミングされていない場合、さらに問題が発生します (「空」に見える予期せぬ超長列など)。または、開発者が行う必要があるもう 1 つの作業にすることもできます。

これは些細な問題ではありません。

代替案

DynamicJasperを試してください。

于 2011-04-06T03:09:54.987 に答える