Oracle® Fusion Middleware Oracle Reportsレポート作成のためのユーザーズ・ガイド 12c (12.2.1.1) E79319-01 |
|
![]() 前へ |
![]() 次へ |
この項のトピックは、第1.8項「レイアウト・オブジェクト」で説明した基本的な概念に基づいています。
レイアウト・オブジェクトの概念と適用されるプロパティには、重要なものがいくつかあります。
繰返し枠のインスタンスに対してOracle Reports Builderでデータをフェッチおよびフォーマットする方法は、「列モード」プロパティで指定します。
オブジェクトとそれがアンカーされているオブジェクトを同じ論理ページに保持するかどうかは、「アンカー・オブジェクトと連動」プロパティで指定します。
フォーマット・トリガーはオブジェクトがフォーマットされる前に実行されるPL/SQLファンクションで、オブジェクトのフォーマット属性を動的に変更できます。
レポート・レイアウトは、Oracle Reports Builderに適用されているデフォルトにより作成し、ペーパー・レイアウト・ビューで変更するか、最初から作成します。
関連項目
第4.10.2項「セクションのデフォルト・レイアウトの作成」
Oracle Reportsオンライン・ヘルプのプロパティに関する項
レポート・ウィザードでデフォルトのレイアウト・スタイルの1つを選択すると、レポートのデータ・モデルに基づいて、Oracle Reports Builderによって必要なレイアウト・オブジェクトが作成されます。たとえば、メール・ラベル・レポートを作成するには、適切なデータ・モデルが定義されていれば、単にメール・ラベルのデフォルト・スタイルを選択します。Oracle Reports Builderによって、レポートのレイアウト・オブジェクトが自動的に作成され、レイアウト・モデル・ビューに表示されます。作成したデフォルトのレイアウトは、必要に応じてカスタマイズできます。Oracle Reports Builderによって生成された各レイアウト・オブジェクトは、切取り、コピー、貼付け、移動、サイズ変更および編集を行うことができます。
レイアウトのデフォルトには、次のルールが適用されます。
レイアウト・オブジェクトをまだ含んでいないレイアウトとして作成する領域を定義しないかぎり、レポートのすでに定義済のレイアウト・オブジェクトはフォーマット・トリガーも含めてすべて上書きされます。
1つのレポートに、異なるフォーマットをいくつでも使用できます。たとえば、最初のページの上部に表形式フォーマットを持ち、同じページの下部にマトリックス・フォーマットを持つレポートを作成できます。そのためには、追加のレポート・レイアウトを作成します(第4.5.5項「追加のレポート・レイアウトの作成」を参照)。
レポート・レイアウトを作成した後は、データ・モデルを変更しても、それらはレイアウトに自動的に反映されません。たとえば、レポート・レイアウトを作成した後に、問合せを作成してレポートを実行しても、新しい問合せからのデータはレポート出力に表示されません。変更を取り込むには、レイアウトのデフォルトを再設定するか、レイアウトを変更する必要があります。
Oracle Reports Builderでは、次のルールに従って、レポート・レイアウトがデフォルト設定されます。
指定がない場合は、デフォルトの書式が置き換えられている場合を除き、「印刷方向」が「横」のグループは、デフォルトで「印刷方向」が「縦」のグループと同じになります。「横」のグループのデフォルトを迅速に設定するには、次の操作を行います。
半透明のペーパーにグループ用の縦レイアウトを描画します。
本のページのようにそのページをめくります。
ページを逆時計回りで90度回転させます。
フォーム・レター・レポートでは、すべてのデフォルトのフィールドは非表示で、「水平拡張度」プロパティの設定は「可変」で、「垂直拡張度」プロパティの設定は「固定」です。他のすべてのレポートでは、すべてのデフォルトのフィールドの「水平拡張度」および「垂直拡張度」プロパティの設定は「固定」です。
例外: 表、フォーム形式、グループ左/上およびマトリックス・レポートでは、CHARフィールド(デフォルトの幅を短くする場合)およびLONGフィールドのデフォルト値は、「水平拡張度」プロパティの設定が「固定」で、「垂直拡張度」プロパティの設定が「可変」です。その結果、データの語が次の行に折り返され、すべてのフィールド値が切り捨てられることなく表示されます。
注意: フォーム・レター・レポートおよびメール・ラベル・レポートでは、CHARフィールド(デフォルト幅を狭くした場合)およびLONGフィールドはデフォルトで、「水平拡張度」および「垂直拡張度」プロパティが「固定」に設定されています。その結果、データのサイズがフィールドのサイズを超える場合、フィールド値は切り捨てられます。 |
グループではなくレポートによって所有されるサマリーは、すべてのレポート・レイアウト・スタイルで許可されます。サマリーは、すべて次のようにフォーマットされます。
レイアウト・スタイルがフォーム形式、フォーム・レターまたはメール・ラベルの場合、サマリーはレポート列です。レポート列は、そのレポート・スタイルの他のデータベース列と同じようにフォーマットされます。
レイアウト・スタイルが表、グループ左/上またはマトリックスで、サマリーによってそのファンクションを実行する列を選択していない場合、サマリーはレポート列になります(前述のとおりにフォーマットされます。)それ以外の場合、サマリーはレポート・サマリーになります。これは、レポートの終わりで、フィールドの左にラベルを付けて(空間があれば)左揃えにフォーマットされます。
レイアウト・スタイルが表形式、グループ左、グループ上またはマトリックスで、サマリーを計算する対象の列が選択されていない場合、サマリーはデータベース列のようにデフォルト設定されます。それ以外の場合、サマリーは通常のサマリーのようにデフォルト設定されます(つまり、M_groupname_FTR枠内に表示されます)。
レイアウト・スタイルが表形式、グループ左、グループ上またはマトリックスの場合、Oracle Reports Builderによって、各行に1つのサマリー・タイプが次の順序で挿入されます。
合計
平均
最小値
最大値
カウント
最初
最後
割合(%)
標準偏差
分散
レイアウト・スタイルが表形式、グループ左、グループ上またはマトリックスの場合、サマリー・ラベルはグループ・フッター枠(M_groupname_FTR)の一番左に表示されます。ラベル全体を表示する場所がない場合、ラベルは切り捨てられます。
関連項目
ファイルからレポート・レイアウトにイメージをインポートします(ペーパーベースのレポートのみ)。第4.9.8.1.1項「イメージのインポート」を参照してください。
「ペーパー・レイアウト」でファイル・リンク・オブジェクトを作成します(ペーパーベースのレポートのみ)。次を参照してください。
第4.9.8.1.3項「イメージ・オブジェクトのURLへのリンク」(HTMLおよびHTMLCSS出力の場合)
問合せでデータベース列を選択します(ペーパーベースおよびJSPベースのWebレポート)。次を参照してください。
1つ目の方法(「イメージのインポート」ダイアログ・ボックスを使用)では、TIFF、JFIF、BMP、TGA、PCX、PICT、GIF、CALS、RAS、OIF、PCDのフォーマットのイメージを含めることができます。
その他の2つの方法(ファイル・リンク・オブジェクトを作成し、データベースで列を選択)では、Oracle Reportsでサポートされているその他のフォーマット(JPEG (Progressive JPEGやExif JPEGなどのすべてのタイプ)、PNG、BMP、TIFF、GIFおよびCGM)を含めることができます。
プレビューアのみでなく印刷レポートにもイメージが表示されるように、デフォルトでイメージはフィールドに表示されます。
REPORTS_OUTPUTIMAGEFORMAT環境変数およびOUTPUTIMAGEFORMATコマンドライン・キーワードにより、イメージングのサポートが強化されています。このイメージ・サポートの拡張により、複雑なグラフを持つレポートを高品質な出力で生成できます。UNIXの場合はさらに、イメージを表示する際のウィンドウ・システムへの依存性が排除されています。PostScriptプリンタ・ドライバscreenprinter.ppd
により、イメージの画面解像度が決定されます。
非キャッシュ参照を使用することで、ローカルのディスク領域を使い切ることなく、イメージ・オブジェクトを無制限に含めることができます。非キャッシュ参照では、オブジェクトがレポート処理に必要なときのみデータベースから読み込まれます。この機能を使用するには、ORACLE V7.1以上のデータベースに接続する必要があります。
イメージ対象のURLを参照する場合は、HTML出力用にレポートをフォーマットしたときに、そのイメージが表示されます。他の出力フォーマットでは、URLテキストがペーパー・デザイン・ビューに表示され、出力先(ファイルやPDFドキュメントなど)には表示されません。URLが存在するかどうかは、ユーザーが確認してください。Oracle Reports Builderでは、リソースの存在やプロトコルの構文は確認されません。URLを含むオブジェクトのサイズで、HTML出力イメージのサイズが決まります。オブジェクトに指定した拡張度プロパティは無視されます。
制限
入力イメージの色数が256色を超える場合、出力イメージのフォーマットがOUTPUTIMAGEFORMATコマンドライン・キーワードまたはREPORTS_OUTPUTIMAGEFORMAT環境変数によってGIFに設定されていると、Oracle ReportsではGIFを正しく生成するために、色数が256色に減らされます。
UNIXでは、HTML出力ではCGMフォーマットはサポートされていません。この制限はWindowsプラットフォームには適用されません。
アンカーは、オブジェクトの境界線の間を結び付けることで、オブジェクト間の相対的な位置を確定します。たとえば、可変サイズの繰返し枠の境界線にボイラープレート・テキストをアンカーすると、繰返し枠のサイズを変更しても、ボイラープレートと繰返し枠間の距離と位置関係は保持されます。
アンカーは、親オブジェクトに対する子オブジェクトの上下左右の相対的な位置関係を決定します。子オブジェクトは、親オブジェクトの内外どちらにも配置できます。
レポートの実行時(およびデータが実際にフェッチされるとき)にレイアウト・オブジェクトによってはサイズが変わることがあるので、アンカーを使用して、他のオブジェクトとの相対位置でオブジェクトの表示位置を定義する必要があります。アンカーは、アンカーされるオブジェクトに対するオブジェクトの相対位置を定義します。位置は、エディタ内でのサイズでなく、データがフェッチされた後のオブジェクトのサイズに基づきます。ペーパー・レイアウト・ビューでのオブジェクトの位置は、レポート出力での最終的な位置に影響することに注意してください。レイアウトの物理的オフセットはすべて、「アンカー」プロパティで指定された割合位置に取り込まれます。
アンカーには2種類あります。
暗黙的アンカー。実行時に、明示的アンカーが作成されていないレイアウト・オブジェクトに対して、暗黙的アンカーが生成されます。レイアウト・オブジェクトごとに、上書き可能なオブジェクトを探し、見つかった場合にはそのレイアウト・オブジェクトから、最も近い位置にある上書き可能なオブジェクトまでアンカーを作成します。これにより、オブジェクト間の上書きが避けられます。暗黙的アンカーの機能により、オブジェクトごとに位置を定義する手間を省くことができます。暗黙的アンカーはペーパー・レイアウト・ビューには表示されません。ただし、「オブジェクト・ナビゲータ・オブション」ダイアログ・ボックスで、オブジェクト・ナビゲータでアンカー情報を表示するように指定できます。デフォルトでは、オブジェクトはそれを囲むオブジェクトの左上角にアンカーされています。このオブジェクト・ナビゲータ表示にオブジェクトのアンカー情報が表示されない場合は、オブジェクトがそれを囲むオブジェクト(枠または本体)にアンカーされていることを示します。
明示的なアンカー。明示的なアンカーは、レイアウト・エディタで「アンカー」ツールを使用して、子側の境界線から親側の境界線にドラッグすることで作成できます。オブジェクトに作成したアンカーは、暗黙的なアンカーより優先されます。明示的なアンカーは、「レイアウト・オプション」ダイアログ・ボックスで非表示を指定しないかぎり、常にペーパー・レイアウト・ビューに表示されます。
アンカーによる相対的な位置指定
子オブジェクトを親オブジェクトにアンカーするときは、アンカーの連結点になるX座標とY座標が重要です。
親オブジェクトが子オブジェクトの上または下にある場合:
2つのオブジェクト間の垂直距離は固定されます。たとえば、次の図では、親オブジェクトとObject 1との間の垂直間隔は固定されています。
子オブジェクト側のアンカーのX座標の水平位置は、親オブジェクト側のアンカーのX座標と関係があります。たとえば、次の図では、アンカーは親の左右境界線からは50%、Object 1の左境界線からは75%の位置にあります。そのため、このレポートを実行すると、Oracle Reports BuilderによってObject 1は親の中央から左側に25%シフトされます。
親オブジェクトが子オブジェクトの右または左にある場合:
2つのオブジェクトの垂直位置が相対的関係にあります。たとえば、次の図では、アンカーの両端が、両方のオブジェクトの上枠から約80%下の位置にあります。そのため、レポートを実行すると、2つのオブジェクトの長さを計算し(拡張される可能性もあるため)、両方のオブジェクトの80%下のy座標を計算した後、ペーパー・レイアウト・ビュー上の2点間の間隔にあわせて2つのオブジェクトを配置します。
2つのオブジェクト間の水平位置は固定されます。たとえば、次の図では、親オブジェクトとObject 1との間の水平間隔は固定されています。
繰返し枠または枠の外にオブジェクトを配置する必要がありながら、繰返し枠または枠をオブジェクトの所有者にする場合は(つまり、その所有者のフォーマット時にフォーマットするために)、繰返し枠または枠の中でオブジェクトに連結するアンカーを作成します。
アンカーの縮小
作成したアンカーを縮小できます。アンカーの縮小によって、レポート内での不要な余白を回避できます。こうした余白は、親と子が同じページに出力されなかったり、設定されている「印刷条件」が原因で、親オブジェクトが子オブジェクトと同じページに入らない場合に生じる可能性があります。アンカーを縮小すると、出力時に、親オブジェクトのある場所に子オブジェクトを移動できます。子オブジェクトの相対位置は、アンカーで定義したとおりに保持されます。
Oracle Reports Builderでは、実行時に暗黙的なアンカーが本体領域に作成されます。本体とマージンでは、そのアルゴリズムが少し異なります。
本体でのアルゴリズム
どのオブジェクトが枠の繰返し枠に(直接または間接的に)完全に囲まれていないか、または枠、繰返し枠に(直接または間接的に)囲まれているオブジェクトに明示的にアンカーされていないかを判別します。ここでは、これらのオブジェクトをタイプAオブジェクトと呼びます(タイプAオブジェクトは、一般にグループ枠および繰返し枠、枠または繰返し枠に所有されていないユーザーが作成したその他のオブジェクトなどです)。オブジェクトは、次の条件をすべて満たす場合にかぎり、別のオブジェクトに囲まれると見なされます。
両方のオブジェクトが同じ領域(本体またはマージン)に属する。
2つのオブジェクトの外側の方が枠または繰返し枠である。
2つのオブジェクトの外側の方が内側のオブジェクトの背後にある。
2つのオブジェクトの内側の方が外側のオブジェクトの境界線の中に完全に収まっている。
枠または繰返し枠のすべての子オブジェクトを判別します(これらは非タイプAオブジェクトです)。以降、これらのオブジェクトをタイプBオブジェクトと呼びます。
タイプAオブジェクトとタイプBオブジェクトで別々に次の手順を実行します。
同じタイプ(たとえば、タイプA)に属し、同じレイヤー上にあるすべてのオブジェクトを見つけます。
それらのオブジェクトの中で、同じタイプのオブジェクトを「プッシュ」する可能性のあるものを判別します。オブジェクトは、その「水平拡張度」または「垂直拡張度」が「可変」または「拡張」に設定されており、2番目のオブジェクトがそのプッシュ・パス(最初のオブジェクトが拡張する可能性のある領域)にある場合に、同じタイプのオブジェクトをプッシュする可能性があります。また、「水平拡張度」または「垂直拡張度」が「固定」または「縮小」に設定されている繰返し枠にも、その「印刷方向」というプッシュ・パスがあります。
オブジェクトの組を作成します。各組には、押す側(拡張するオブジェクト)と押される側(押し出されるオブジェクト)が1つずつあります。この組を作成するとき、明示的アンカーの子が押される側のオブジェクトとなることはありません(このようなオブジェクトは無視されます)。
次に説明するループを実行します。組合せごとに、プッシュする側とプッシュされる側の間のプッシュ・パスの距離を測定します。次に、最も距離の短い組合せを見つけます。最後に、次のアルゴリズムを使用して、2つのオブジェクト間に暗黙的なアンカーを作成します。
押される領域の方向が縦の場合は、押される側のオブジェクトの上0%を押す側のオブジェクトの下0%にアンカーします。
押される領域の方向が横の場合は、押される側のオブジェクトの左0%を押す側のオブジェクトの右0%にアンカーします。
この時点で、この組合せは1つのオブジェクトとして扱われます。このループを、すべてのオブジェクトが1つのアンカーを持つか、アンカーされていない残りのオブジェクトをプッシュするものがなくなるまで繰り返します。
アンカーされていない残りの各オブジェクトには、オブジェクトの左上隅から本体領域の左上隅に暗黙的なアンカーを作成します。
次のレイヤーに移り、手順1から再度実行します。
ルール:
オブジェクトが他の2つのオブジェクトのプッシュ・パスにあり、その2つのオブジェクトから等距離の場合は、そのオブジェクトの暗黙的なアンカーはレポートを実行するたびに異なる可能性があります。たとえば、次の図は、こうした事象が生じる2つのケースを示しています。
ケース1では、M_SumsがB_Text1とR_Enameの両方のプッシュ・パスにあります。M_SumsはB_Text1とR_Enameから等距離にあるため、このケースでは、暗黙的なアンカーを決定する通常の基準(最も短い距離)を適用できません。その結果、このアルゴリズムでは、実行時に、暗黙的なアンカーがM_SumsとB_Text1の間またはM_SumsとR_Enameとの間にランダムに作成されます。この動作を回避するには、M_SumsとB_Text1またはR_Enameの間に、明示的なアンカーを作成します。
2番目のケースでは、B_Text3がM_Empの押される領域の中にあります。ただし、M_EmpおよびR_Mgrの下辺は実質的に同じ位置にあるため、B_Text3はM_EmpまたはR_Mgrのいずれかに暗黙的にアンカーすることができます。このため、実行時にフォーマット・アルゴリズムによってB_Text3とM_EmpまたはR_Mgrのいずれかの間に無作為に暗黙的アンカーが作成されます。この動作を避けるために、B_Text3からオブジェクトの1つへ明示的アンカーを作成することも、R_EnameおよびB_Text2の間の明示的アンカーを削除することもできます。明示的アンカーを削除すると、R_MgrはM_Empの子孫として扱われるため、暗黙的アンカーが常にB_Text3とM_Empの間に作成されます。
(ケース2が生じる可能性が最も高いのはキャラクタ・モードです。キャラクタ・モードでは、オブジェクトの境界線が「ペーパー・レイアウト」ビューでオーバーラップすることがよくあります。)
マージンでのアルゴリズム
Oracle Reports Builderは、ボディ・アルゴリズムを使用して、マージン領域にあるすべてのタイプBオブジェクトに対して暗黙的アンカーを作成します。ただし、各タイプAオブジェクトに対しては、オブジェクトの左上角からマージンの左上角への暗黙的アンカーを作成します。タイプAオブジェクトが暗黙的に別のタイプAオブジェクトにアンカーされることはありません(これにより、タイプAオブジェクトが確実にページから押し出されないようになります)。ただし、同じレイヤーに他のタイプAオブジェクトがある場合は、そのオブジェクトによって上書きされることがあります)。
関連項目
選択したカラーとパターンは、オブジェクト全体に適用されます(オブジェクト内の全テキストに1つのカラーを適用することはできますが、テキストのセグメントごとには適用できません)。
Oracle Reports Builderのユーザー・インタフェースで、ペーパー・レイアウト・ビューのツール・パレットにある次のツールを使用します。
PL/SQLでは、次のSRWパッケージ・プロシージャを使用します。
テンプレートの場合は、テンプレートのプロパティ・インスペクタで次のプロパティを設定します。
「塗りつぶしパターン」プロパティでは、オブジェクトで囲まれる領域に使用するパターンを定義します。「前景色」プロパティと「背景色」プロパティを使用して、塗りつぶしパターンの背景色と前景色を定義できます。
「枠のパターン」プロパティでは、オブジェクトの境界線に使用するパターンを定義します。「枠の前景色」プロパティと「枠の背景色」プロパティを使用して、枠のパターンの背景色と前景色を定義できます。
注意: Windowsプラットフォームでは、境界線パターンはサポートされません。 |
「テキスト・カラー」プロパティでは、オブジェクトに使用するテキスト・カラーを指定します。
さらに、カラー・パレットの環境設定を設定して、レポートでの使用方法を指定できます(第4.2.6項「カラー・パレットの環境設定の設定」を参照)。また、カラー・パレットを変更することで、個々のカラー定義を変更できます(第4.9.6.5項「カラー・パレットの変更」を参照)。
現行のレポートに使用されているカラー・パレットを変更する場合は、新しいカラー・パレットをインポートできます。また、現行のカラー・パレットをエクスポートして別のレポートで使用することもできます。(第4.9.6.6項「カラー・パレットのインポートまたはエクスポート」を参照。)
関連項目
第4.9.6.4項「PL/SQLを使用したカラーおよびパターンの変更」
Oracle Reportsオンライン・ヘルプのリファレンスのカラー・パレットとパターン・パレットに関する項にある、Oracle CDE1カラー・パレット、デフォルト・カラー・パレット、グレースケール・カラー・パレットおよびパターン・パレットに関するトピック
Oracle Reportsオンライン・ヘルプのリファレンス、PL/SQLリファレンスのビルトイン・パッケージに関する項にある、SRWのビルトイン・パッケージに関するトピック
Oracle Reportsオンライン・ヘルプのプロパティに関する項にあるテンプレート・プロパティに関するトピック
問合せ、グループ、枠、繰返し枠、フィールド、マトリックス・オブジェクトおよびボイラープレート・オブジェクトのサイズを変更できます。アンカーのサイズは変更できません。ただし、アンカーされたオブジェクトの一方を移動した場合、アンカーのサイズは自動的に変更されます。
注意: ボイラープレート・テキストのサイズを変更する場合は、すべてのテキストがオブジェクト内に収まるように注意してください。フォントのディセンダ(g、qなどの文字で並び線より下の部分のために残されたスペース)が収まらない場合、そのテキスト行はレポート・エディタのビューには表示されますが、レポートを実行しても、出力に表示されません。ハンドルをクリックしてドラッグすると、角で交わる2つの枠のサイズが変わり、オブジェクトはX方向とY方向のどちらにも拡大または縮小します。 |
関連項目
ペーパー・レイアウト・ビューでは、オブジェクトはそれを囲むオブジェクトより上のレイヤーにある必要があります。たとえば、繰返し枠に属するフィールドであれば、ペーパー・レイアウト・ビューでは、繰返し枠より少なくとも1つ上のレイヤー上にする必要があります。そうしないと、フィールドが繰返し枠に囲まれていると判別されなくなり、実行時に頻繁にエラーが発生します。ペーパー・レイアウト・ビューでオブジェクトを移動またはグループ化するときは、そのレイヤーが変更される場合があり、それによってレポートの実行時に頻繁にエラーが発生します。この問題を回避するには、ペーパー・レイアウト・ビューでのオブジェクトの移動時に、制限モードまたはフレックス・モードを使用する必要があります。
関連項目