ヘッダーをスキップ

Oracle Reports レポート作成ガイド
10gリリース2(10.1.2)
B25068-01
目次
目次
索引
索引

戻る 次へ

21
ラベルを非表示にするレポートの作成

この章では、フィールド・ラベルを非表示にするレポートについて学習します。この章の手順に従うと、図21-1に示すようなレポート出力を生成できます。Department 40のフィールド・ラベルは、ディテール・レコードがないため表示されないことを確認してください。

図21-1    ラベルを非表示にしたレポート出力


画像の説明

概要

デフォルトのマスター/ディテール・レポートには、ユーザーが作成した列に対してフェッチするディテール・レコードや値がない場合でも、ディテール・ラベルやフィールドは常に出力されます。この例では、1つのレコードの詳細情報を非表示にし、他のマスター・レコードとディテール・レコードは表示する方法を学習します。

データ・リレーションシップ
レイアウト

このレポートでは、グループ上のレイアウト・スタイルを修正したものを使用します。

使用例

この例では、ディテール・レコードがない場合はフィールド・ラベルを表示しないレポートを作成します。フィールド・ラベルがない場合、ディテール・レコードを取得できなかったことをユーザーに知らせるテキストを表示します。

このサンプル・レポートの作成過程では、次を行います。

ラベルを非表示にするレポートのサンプルを表示するには、サンプル・フォルダsuppresslabelsを開き、Oracle Reportsのサンプルsuppressinglabels.rdfを開きます。このファイルの開き方の詳細は、「はじめに」の「サンプル・レポートへのアクセス」を参照してください。

21.1 この例の前提条件

この章の例を作成するには、Oracle Database付属のSCOTTサンプル・スキーマに対するアクセス権が必要です。このサンプル・スキーマに対するアクセス権の有無が不明のときは、データベース管理者に問い合せてください。

21.2 2つの問合せをリンクしたデータ・モデルの作成

この項の手順では、マスター/ディテール・リレーションシップに2つの問合せがある単純なデータ・モデルを作成する方法について説明します。

データ・モデルを作成するには:

  1. Reports Builderを起動します。すでに起動している場合は、「ファイル」→「新規」→「レポート」を選択します。

  2. 「ようこそ」ダイアログ・ボックスまたは「新規レポート」ダイアログ・ボックスで、「新規レポートを手動で作成」を選択して「OK」をクリックします。

  3. 表示されたデータ・モデル・ビューで、ツール・パレットの「SQL問合せ」ツールをクリックし、データ・モデル・ビューの空き領域をクリックして、「SQL問合せ文」ダイアログ・ボックスを表示します。

  4. 「SQL問合せ文」ダイアログ・ボックスに、最初のSELECT文を次のように入力します。

    SELECT * FROM DEPT
    ORDER BY DEPTNO
    


    注意

    この問合せは、次のいずれかの方法で入力できます。

    • 提供されているテキスト・ファイルsuppresslabels_code.txtからコードをコピーして「SQL問合せ文」フィールドに貼り付けます。

    • 「クエリー・ビルダー」をクリックして、コードを入力せずに問合せを作成します。

    • 「SQL問合せ文」フィールドにコードを入力します。

    Pictures表がサンプル・スキーマにインストールされていない場合、この問合せを作成できません。 


  5. 「OK」をクリックします。


    注意

    データベースにまだ接続していない場合は、「クエリー・ビルダー」または「次へ」をクリックしたときに、データベースに接続するよう求められます。この例に該当するスキーマが含まれるデータベースに接続してください。第21.1項「この例の前提条件」に、この例のサンプル・スキーマの要件に関する説明があります。 


  6. 問合せがデータ・モデル・ビューに表示されたら、問合せ名(Q_1)を右クリックして、ポップアップ・メニューから「プロパティ・インスペクタ」を選択し、次のプロパティを設定します。

    • 「一般情報」で、「名前」プロパティを「Q_DEPT」に設定します。

  7. 前述の手順に従って、Q_EMPという名前の別の問合せを作成します。その際、次のSELECT文を使用します。

    SELECT DEPTNO, ENAME, JOB FROM EMP
    ORDER BY ENAME
    
  8. データ・モデル・ビューで、ツール・パレットの「データ・リンク」ツールをクリックします。

  9. Q_DEPTのDEPTNOとQ_EMPのDEPTNO1の間でリンクをドラッグします。作成したデータ・モデルは次のようになります。

    図21-2    ラベルを非表示にするレポートのデータ・モデル・ビュー


    画像の説明

  10. レポートをsuppressinglabels_<自分のイニシャル>.rdfという名前で保存します。

21.3 式列とサマリー列の作成

この項の手順では、前の項で作成したQ_EMP(ディテール)問合せに、ディテール・レコードが返されるたびに値を返す式列を追加する方法について説明します。次に、Q_DEPT(マスター)問合せに、この式列が値を返す回数をカウントするサマリー列を追加します。

これらの列を作成する前に、グループのサイズを拡張して見やすくしておきます。このためには、黄色のグループ・ボックスを選択します。下枠をクリックし、約0.25インチ(0.5 cm)下へドラッグします。両方のグループでこの操作を行うと、新しい列を追加するための領域を確保できます。

21.3.1 ディテール問合せ内の式列の作成

この項では、値を1つ返す式列を作成する方法について説明します。

式列を作成するには:

  1. データ・モデル・ビューで、ツール・パレットの「式列」ツールをクリックします。

  2. Q_EMP問合せの「JOB」列の下をクリックし、式列を作成します。

  3. 新しい式列オブジェクト(CF_1)をダブルクリックしてプロパティ・インスペクタを表示し、次のプロパティを設定します。

    • 「一般情報」で、「名前」プロパティを「DETAIL_VAL」に設定します。

    • 「プレースホルダ/式」で、「PL/SQL式」プロパティ・フィールドをクリックしてPL/SQLエディタを表示します。

  4. PL/SQLエディタで、テンプレートを使用して次のPL/SQLコードを入力します。

    function DETAIL_VALFormula return Number is
    begin
         return(1);
    end;
    
  5. 「コンパイル」をクリックします。

    ヒント

    コンパイル時にエラーが発生した場合は、入力したコードと提供されているコードを比較してください。suppresslabels_code.txtからコードをコピーして貼り付けることもできます。 

  6. コードがコンパイルされたら、「閉じる」をクリックします。

21.3.2 マスター問合せ内のサマリー列の作成

この項の手順では、式列から返される情報に依存するマスター問合せに、サマリー列を作成およびカスタマイズする方法について説明します。

サマリー列を作成するには:

  1. データ・モデル・ビューで、ツール・パレットの「サマリー列」ツールをクリックします。

  2. Q_DEPT問合せの「LOC」列の下をクリックし、サマリー列を作成します。

  3. 新しいサマリー列オブジェクト(CS_1)をダブルクリックしてプロパティ・インスペクタを表示し、次のプロパティを設定します。

    • 「一般情報」で、「名前」プロパティを「COUNT_DETAIL」に設定します。

    • 「サマリー」で、「ファンクション」プロパティを「カウント」、「ソース」プロパティを「DETAIL_VAL」、「リセット位置」プロパティを「G_DEPTNO」に設定します。

    これで、データ・モデルには式列とサマリー列の両方が含まれ、次のようになります。

    図21-3    式列とサマリー列作成後のデータ・モデル・ビュー


    画像の説明

  4. レポートをsuppressinglabels_<自分のイニシャル>.rdfという名前で保存します。

21.4 レポート・レイアウトの作成

この項では、レポートのデフォルト・レイアウトを作成します。次に、確認に必要なすべてのレイアウト・オブジェクトを追加します。

21.4.1 レポートの初期レイアウトの作成

初期レイアウトを作成するには:

  1. データ・モデル・ビューで、キャンバスを右クリックして「レポート・ウィザード」を選択します。

  2. レポート・ウィザードの「レポート・タイプ」ページで、「ペーパー・レイアウトのみ作成」を選択します。

  3. 「スタイル」ページで「グループ上」を選択します。

  4. 「グループ」ページで、「使用可能グループ」リストの次のグループをクリックし、「下」をクリックして印刷方向を指定して、これらのグループを「表示グループ」リストに移動します。

    • G_DEPTNO

    • G_DEPTNO1

  5. 「フィールド」ページで次の操作を行います。

    • 「>>」ボタンをクリックして、すべてのフィールドを「表示フィールド」リストに移動します。

    • 「表示フィールド」リストで、「DEPTNO1」をクリックし、「<」ボタンをクリックしてこのフィールドを「使用可能フィールド」リストに戻します。

    • 「COUNT_DETAIL」フィールドおよび「DETAIL_VAL」フィールドに対して、同じ操作を行います。

  6. 「ラベル」ページで、必要に応じてラベルを変更します。

  7. 「テンプレート」ページで、「事前定義テンプレート」を選択し、「Blue」をクリックします。次に「終了」をクリックして、ペーパー・デザイン・ビューにレポート出力を表示します。表示は次のようになります。

    図21-4    ラベルを非表示にするレポートのペーパー・デザイン・ビュー


    画像の説明

  8. レポートをsuppressinglabels_<自分のイニシャル>.rdfという名前で保存します。

21.5 ラベルを非表示にするフォーマット・トリガーの追加

この項の手順では、NULL値のレコードにはラベルを表示しないフォーマット・トリガーをレポートに追加する方法について説明します。

フォーマット・トリガーを作成するには:

  1. オブジェクト・ナビゲータの「ペーパー・レイアウト」ノードで、「メイン・セクション」→「ボディ」→「M_G_DEPTNO_GRPFR」→「R_G_DEPTNO」→「M_G_DEPTNO1_GRPFR」→「M_G_DEPTNO1_HDR」を選択します。または、オブジェクト・ナビゲータの「検索」フィールドを使用してM_G_DEPTNO1_HDRを検索します。

    ヒント

    オブジェクト・ナビゲータでの枠の場所は、次のイメージ例を参照してください。オブジェクト・ナビゲータで枠名を選択すると、ペーパー・レイアウト・ビューでも同じ枠が選択されます。 

    図21-5    M_G_DEPTNO1_HDRへのナビゲート


    画像の説明

  2. 「M_G_DEPTNO1_HDR」の横のプロパティ・アイコンをダブルクリックしてプロパティ・インスペクタを表示し、次のプロパティを設定します。

    • 「拡張レイアウト」で、「フォーマット・トリガー」プロパティ・フィールドをダブルクリックし、PL/SQLエディタを表示します。

  3. PL/SQLエディタで、テンプレートを使用して次のPL/SQLコードを入力します。

    function M_G_DEPTNO1_HDRFormatTrigger return boolean is
    begin
      if :count_detail=0 then
         return (FALSE);
      else
         return (TRUE);
      end if;
    end;
    
  4. 「コンパイル」をクリックします。

    ヒント

    コンパイル時にエラーが発生した場合は、入力したコードと提供されているコードを比較してください。suppresslabels_code.txtからコードをコピーして貼り付けることもできます。 

  5. コンパイル・エラーがない場合は、「閉じる」をクリックします。

  6. レポートをsuppresslabels_<自分のイニシャル>.rdfという名前で保存します。

21.6 レコードがないときに表示するテキストの追加

この項の手順では、取得するレコードがないときに表示するボイラープレート・テキストをレポート・レイアウトに追加する方法について説明します。

ボイラープレート・テキストを追加するには:

  1. ペーパー・レイアウト・ビューで、ツールバーの「制限オフ」ボタンと「フレックス・オフ」ボタンをクリックします。


    注意

    レポートの出力にボイラープレート・オブジェクトを表示する方法を調整するには、オブジェクトを作成する前に、制限モードとフレックス・モードをオフにする必要があります。 


  2. ツール・パレットの「テキスト」ツールをクリックします。

  3. 2つのフィールド「F_ENAME」と「F_JOB」の上に四角形を描画して、新しいボイラープレート・テキスト・オブジェクトを作成します。

  4. ボイラープレート・テキスト・オブジェクトをクリックして、No detail records retrieved.と入力します。

  5. そのテキストを選択して、「書式」→「フォント」を選択します。

  6. 「フォント」ダイアログ・ボックスで、「Arial」を選択し、「OK」をクリックします。

  7. ペーパー・レイアウト・ビューが表示されている状態で、オブジェクト・ナビゲータをクリックして、2つのウィンドウが横に並ぶように位置を調整します。

  8. オブジェクト・ナビゲータで、「M_G_DEPTNO1_GRPFR」にナビゲートし、[Ctrl]を押しながら次のオブジェクトをクリックして選択します。

    • R_G_DEPTNO1

      F_ENAME

    • F_JOB

    オブジェクト・ナビゲータは次のようになります。

    図21-6    オブジェクト選択後のオブジェクト・ナビゲータ


    画像の説明

  9. ペーパー・レイアウト・ビューで、ツールバーの「制限オン」ボタンをクリックします。

  10. 「レイアウト」→「最前面へ移動」を選択します。


    注意

    このメニュー・オプションがグレー表示されている場合は、キャンバス自体をクリックせずに、ペーパー・レイアウト・ビューのタイトル・バーをクリックします。このメニュー・オプションは、ペーパー・レイアウト・ビューがアクティブなときにのみ使用できます。 


    このメニュー・オプションを選択することにより、Reports Builderでは作成したボイラープレート・テキストの前にレコードが表示されます。レコードがない場合は、ボイラープレート・テキストが表示されます。

    オブジェクト・ナビゲータは次のようになります。

    図21-7    選択したオブジェクトを前面に移動後のオブジェクト・ナビゲータ


    画像の説明


    注意

    ボイラープレート・テキストB_1は、親枠M_G_DEPTNO1_GRPFRの直下に移動されています。この配置は、繰返し枠R_G_DEPTNO1内のオブジェクトによって表示されるレコードがボイラープレート・テキストの真上に表示されることを示します。取得するディテール・レコードがないことを知らせるボイラープレート・テキストは、実際にレコードがないときにのみ表示されます。 


    最後に、ボイラープレート・テキストがディテール・レコードの背面に見えないように、親枠の塗りつぶしカラーを変更する必要があります。

  11. オブジェクト・ナビゲータで、「M_G_DEPTNO1_GRPFR」をクリックして、このオブジェクトのみを選択します。ペーパー・レイアウト・ビューでも、同じ枠が選択されています。

  12. ツール・パレットの「塗りつぶしカラー」ツールをクリックして、塗りつぶしカラーをテンプレートにあわせて水色に変更します。

  13. ツールバーの「ペーパー・デザイン」ボタンをクリックし、レポートを実行してペーパー・デザイン・ビューに表示します。レポートの表示は次のようになります。

    図21-8    ラベルを非表示にするレポートの最終的なペーパー出力


    画像の説明


    注意

    Department 40のレコードには追加したボイラープレート・テキストが表示され、レコードのフィールド名は非表示になっています。 


  14. レポートをsuppresslabels_<自分のイニシャル>.rdfという名前で保存します。

21.7 まとめ

これで、すべての作業が完了しました。取得するデータがないときにラベルを非表示にするレポートは、正常に作成されました。この章で学習した内容は次のとおりです。

この例で使用されているウィザード、ビュー、プロパティの詳細は、Oracle Reportsオンライン・ヘルプを参照してください。このヘルプは、第3.1.1項「Oracle Reportsオンライン・ヘルプの使用」で説明しているとおり、Reports BuilderまたはOracle Technology Network(OTN)から表示できます。


戻る 次へ
Oracle
Copyright © 2003, 2005 Oracle.

All Rights Reserved.
目次
目次
索引
索引