1

Jasper Reports と iReport を使用して、アプリのレポートを生成しています。データベースのクエリに応じて、レポートに画像を表示する必要があります。画像は計画であり、内部には測定値などを表す他のフィールドがあります。

IE 2 つの画像: IMAGE1 と IMAGE2 が Field_ONE と Field_TWO にリンクされています。

  • Field_ONE が != null の場合、IMAGE1 とドキュメント内の画像内のフィールドを表示したいと思います。

  • Field_TWO が != null で Field_ONE が null に等しい場合、以前に IMAGE1 を表示した場所に IMAGE2 を表示したい

  • Field_TWO が != null で Field_ONE != null の場合、IMAGE1 と IMAGE2 を並べて表示します。

5 つまたは 6 つの画像を持つことができるので、タグのみを使用してそれらの間に空白を残さずにすべての可能性をカバーすることは非常に難しいことに注意してください。

要するに、フィールドに応じてプランを動的に追加し、プランを追加した順序で画像とそれに関連するフィールドを生成できる Android のレイアウトのようなものが必要です。

お役に立てれば幸いです、ありがとうございます!

注: レポートの結果によっては、同じ種類の画像が複数ある可能性があるため、レイヤーで覆うことはほとんど不可能です。

Field_Two のみ

フィールド 1 と 2

4

1 に答える 1

3

レイヤー (静的) ソリューション

  1. 問題をケースに分割します。たとえば、ケース 1 は画像 1 を表示し、ケース 2 は画像 2 と 3 を表示し、ケース 3 は画像 4 を表示します。
  2. i から n の場合 (n の場合)
    • ケース i のすべての要素を作成します。
    • 新しいレイヤー、レイヤー i を追加します。[レイヤー] ウィンドウが非表示の場合は、[ウィンドウ] > [レイヤー] に移動します。
    • 追加した要素を選択し、右クリックしてSend to layer. レイヤー i を選択します。
    • レイヤー ウィンドウでレイヤーを右クリックし、Print When 式を更新します。例えば、$F{Field_ONE} != null
    • 繰り返す。参考までに、([レイヤー] ウィンドウで) レイヤーの目をクリックして該当する要素を非表示にし、混乱を隠すことができます。
  3. 各ケースに対して作成した各デザインは、レイヤーの print when 式が true の場合にのみ表示されます。

サブレポート (動的) ソリューション

  1. レポートを作成します。これをサブレポートと呼びましょう。
    • ページの幅と高さを、特定のレコードの画像セクションの高さと幅に設定します。
    • すべてのページ余白を 0 に設定します
    • レポートの列を、1 行に表示する画像の数に変更します。
    • 印刷順序を「横」に変更
  2. 画像に関連付ける必要がある N フィールドに N パラメータを追加します。
  3. 詳細バンドを除く、ページ内のすべてのバンドを削除します。
  4. 指定されたフィールドが null かどうかに応じてイメージ名を返すダミー クエリを記述します。たとえば、select 'Ascent.jpg' as image from dual where $P{FIELD_1} is not null. union all各フィールドと選択ステートメントに対してこれを行う必要があります。
  5. 詳細セクションで、Image 要素を追加し、image上記のクエリのフィールドを使用して値を画像へのパスに設定します。たとえば、"C:/WINDOWS/Web/Wallpaper/"+$F{IMAGE}.
  6. 元のレポートに移動し、サブレポートを詳細セクションに追加します。
    • 元のレポートのフィールドを、サブレポートの #2 で作成したパラメーターにリンクします。

テストするまで、このソリューションを投稿したくありませんでした。行数が多いサンプルですが、不明な点があれば投稿できます。サブレポートが必要になる理由は、メイン レポートには 1 列があり、縦方向に塗りつぶされますが、画像は複数の列にわたって横方向に塗りつぶす必要があるためです。null ではないフィールドごとに、サブレポート クエリはステートメントの順序でレコードを返します。その後、レコードは列全体に入力されます。

WinXP の壁紙を画像として使用したサンプル生成レポート

于 2012-06-13T07:04:28.827 に答える