ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Reportsレポート作成のためのユーザーズ・ガイド
11gリリース1(11.1.1)
B61376-01
  ドキュメント・ライブラリへ
ライブラリ
製品リストへ
製品
目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

36.3 After Parameter Formトリガーとフォーマット・トリガーの作成

この項に示す手順に従って、2つのトリガーを作成します。最初のトリガーは、ビルトイン・プロシージャSRW.SET_FORMAT_ORDERを使用してレポートのメイン・セクションを最初にフォーマットし、その後ヘッダー・セクションとトレーラ・セクションをフォーマットします。2番目のトリガーは、各カテゴリ、サブカテゴリおよびレコードのページ番号をフェッチして、第36.2項「TOCデータを格納するデータベース表の作成」で作成した表にその情報を格納します。

36.3.1 After Parameter Formトリガーの作成

After Parameter Formトリガーは、パラメータ・フォームの実行後に実行されるファンクションです。この項では、このトリガーを設定してレポートの実行順序を変更し、メイン・セクションが最初にフォーマットされるようにします。

After Parameter Formトリガーを作成するには:

  1. Reports Builderで、提供されているmultilevel_source.rdfファイルを開きます。

  2. オブジェクト・ナビゲータで、対象のレポート名(MULTILEVEL_SOURCE)の下にある「レポート・トリガー」ノードを開きます。

  3. AFTER PARAMETER FORM」を右クリックし、ポップアップ・メニューで「PL/SQLエディタ」を選択します。

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

    function AfterPForm return boolean is
    begin
      srw.set_format_order(srw.main_section, srw.header_section, srw.trailer_section);
      return (TRUE);
    end;
    

    注意:

    提供されているファイルmultilevel_code.txtからコードをコピーして貼り付けることもできます。

  5. コンパイル」をクリックします。

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

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

36.3.2 フォーマット・トリガーの作成

この項では、F_PROD_SUBCATEGORYフィールドに基づいたフォーマット・トリガーを作成します。このフィールドには、サブカテゴリとして製品名が表示されます。このサブカテゴリは、製品部門を表すメイン・カテゴリの下に置かれます。このフォーマット・トリガーでは、それぞれの製品名のページ番号をフェッチします。これにより、ユーザーが目次に表示されている製品部門名とそれに続く製品名に基づいて、レポートの様々な部分に移動できるようになります。

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

  1. オブジェクト・ナビゲータで、レポートの「ペーパー・レイアウト」ノードを開き、「メイン・セクション」→「ボディ」→「M_G_PROD_CATEGORY_GRPFR」→「R_G_PROD_CATEGORY」→「M_G_PROD_SUBCATEGORY_GRPFR」→「R_G_PROD_SUBCATEGORY_GPRFR」までナビゲートして、「F_PROD_SUBCATEGORY」をクリックします。


    ヒント:

    このフィールドが見つからない場合は、オブジェクト・ナビゲータの上部にある「検索」フィールドを使用してください。

  2. ツール」→「プロパティ・インスペクタ」を選択し、このフィールドのプロパティ・インスペクタを表示します。

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

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

    function F_PROD_SUBCATEGORYFormatTrigge return boolean is
      pageNum number;
      myCount number;
    begin
      -- get page number
      srw.get_page_num(pageNum);
      -- check table for duplicates
      select count(*)
      into myCount
      from toc_multilevel
      where main_topic = :PROD_CATEGORY and
      sub_topic = :PROD_SUBCATEGORY;
      -- if no duplicates, insert row
      if myCount = 0 then
        insert into toc_multilevel
        values (:PROD_CATEGORY, :PROD_SUBCATEGORY, pageNum);
      end if;
      return (TRUE);
    end;
    

    注意:

    提供されているファイルmultilevel_code.txtからコードをコピーして貼り付けることもできます。

  5. コンパイル」をクリックします。

  6. コードがコンパイルされた後、「閉じる」をクリックしてプロパティ・インスペクタを閉じます。

  7. レポートを保存します。