2016-10-31 4 views
0

Birtリスト要素を使用してデータを左から右に表示しています。 (参考としてthis questionを参照)。例えば。グリッドが詳細で、グリッドがインラインに設定されている要素をリストします。BIRT:リスト要素の行を整列する

私が直面している問題は、グリッド内の異なる行が左から右に揃っていないことです(おそらく、一部のフィールドで空の値を持つ行があるためです)。 BIRTを正しく配置するにはどうすればいいですか?

EDIT:

これは特に、またより1行に折り返さ長いテキストの問題です。折り返し/複数の行は、その "行の出力"のすべてのリスト要素によって反映されるべきです。

答えて

0

残念ながら、私はこの簡単一般的な場合を達成するためにあらゆる機会を見ていない - つまり、レコード数が事前に分かっていないので、あなたは、複数の行必要があるだろうとします。

student1 student2 student3 
student4 student5 

これらの行を「メインライン」としましょう。 1つのメインラインには最大3つのレコードを含めることができます。あなたのケースでは数字3が異なるかもしれませんが、(少なくともPDFレポートでは)用紙の幅が制限されているので、定数であると見なすことができます。 、あなたのデータセットでは

各行のための2つの列を追加します:

可能な解決策は、次のように仕事ができる意味が明らかであるMAIN_LINE_NUMと列番号を、。たとえば、これは分析関数(未テスト)を使用して、純粋なSQLで行うことができます。

select ..., 
     trunc((row_number() over (order by ...whatever...) - 1)/3) + 1 as MAIN_LINE_NUM, 
     mod(row_number() over (order by ...whatever...) - 1), 3) +1 as COLUMN_NUM 
from ... 
order by ...whatever... -- The order must be the same as above. 

各レコード行くべき場所今、あなたが知っています。

次のタスクは、(たとえば、あなたが3つのプロパティSTUDENT_ID、NAME、各学生のためのアドレスを持っていると思います)、各レコードは、次のようになりますフォームに結果セットを変換することです:

MAIN_LINE 
STUDENT_ID_1 
NAME_1 
ADDRESS_1 
STUDENT_ID_2 
NAME_2 
ADDRESS_2 
STUDENT_ID_3 
NAME_3 
ADDRESS_3 

あなたは写真を手に入れます...

これを達成するためのSQLのやり方は、知っておくべきことです。

私は、一例としてSTUDENT_ID_1、STUDENT_ID_2とNAME_1列のためにこれを紹介します:

with my_data as 
(... the query shown above including MAIN_LINE_NUM and COLUMN_NUM ... 
) 
select MAIN_LINE_NUM, 
     max(case when COLUMN_NUM=1 then STUDENT_ID else null end) as STUDENT_ID_1, 
     max(case when COLUMN_NUM=2 then STUDENT_ID else null end) as STUDENT_ID_2, 
     ... 
     max(case when COLUMN_NUM=1 then NAME else null end) as NAME_1, 
     ... 
from my_data 
group by MAIN_LINE_NUM 
order by MAIN_LINE_NUM 

見ての通り、あなたが別の列の多くを必要とする場合、これは非常に不器用です。

一方、出力が非常に簡単になります。

  • データセットのテーブル項目を3列(1、2、3)で作成します。データセットをレイアウトにドラッグしないことが最善です。代わりに、[要素の挿入]コンテキストメニューを使用します。

  • 各列(STUDENT_ID、NAME、ADDRESS)の詳細行が必要です。したがって、2つの詳細行を追加します(デフォルトは1つの詳細行です)。

  • ヘッダーラベルを手動で追加します。必要がない場合は、ヘッダ行を手動で追加するか、ヘッダー行を削除してください(これは私が前提としています)。

  • おそらく必要ないので、フッター行を削除します。

  • テーブルの対応する位置に列をドラッグします。

テーブルの項目は次のように(データ項目)になります。

+--------------+--------------+-------------+ 
+ STUDENT_ID_1 | STUDENT_ID_2 | STUDENT_ID3 | 
+--------------+--------------+-------------+ 
+ NAME_1  | NAME_2  | NAME_3  | 
+--------------+--------------+-------------+ 
+ ADDRESS_1 | ADDRESS_2 | ADDRESS_3 | 
+--------------+--------------+-------------+ 

それです!

これは、BIRTがIMHOを吸ういくつかの例の1つです。 Oracle Reports - 私のKlatchianをおめでとう。

+0

お返事ありがとうございます。私はそれを消化しなければならないでしょう。複数の結合とサブ選択のクエリが既に存在するので、これを適用する方法を確認する必要があります。 –

+0

これは問題ではありません。 – hvb

+0

これは、1列がイメージであるということです...このように、イメージとして表示されません。 (画像は、位置合わせが正しくなる問題ではなく、固定サイズです)。 –

関連する問題