ヘッダーをスキップ

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

戻る 次へ

35
単純な目次と索引を使用したペーパー・レポートの作成

この章では、目次と索引で構成される単純なレポートについて学習します。この章の手順に従うと、次の図に示すレポート出力を生成できます。

図35-1    大規模なレポート用の単純な目次


画像の説明

図35-2    大規模なレポート用の単純な索引


画像の説明

概要

複数階層を持つ目次の作成の詳細は、第36章「複数階層の目次を使用したペーパー・レポートの作成」を参照してください。

使用例

この例では、何千ものレコードが含まれている顧客データベースのすべての電子メール・アドレスのリストを生成します。必要な顧客の電子メール・アドレスを検索しやすくするために、最初に顧客を分類(ここでは国ごとに分類)し、次に目次を生成します。その後、レポートの索引を作成する方法を学習します。

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

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

35.1 この例の前提条件

この章の例を作成するには、サンプル・ファイルが必要です(前述の「使用例」を参照)。また、Oracle Database付属のSales Historyサンプル・スキーマに対するアクセス権が必要です。このサンプル・スキーマに対するアクセス権の有無が不明のときは、データベース管理者に問い合せてください。

35.2 単純な目次の作成

この項の手順では、複数のページで構成される大規模なレポートに対して、基本的な目次を作成する方法について説明します。作成する目次は次のようになります。

図35-3    単純な目次


画像の説明

35.2.1 TOCデータを格納するデータベース表の作成

この項の手順では、目次に表示するレコードのページ番号を格納する表をデータベースに作成する方法について説明します。データベースに表を作成する権限があるか不明な場合は、データベース管理者に問い合せてください。

データベースに表を作成するには:

  1. SQL*Plusを起動します。

    • (Windowsの場合)「スタート」メニューで、「プログラム」→「Oracle Application Server - oracle_home_name」→「Application Development」→「SQL Plus」を選択します。

    • (UNIXの場合)sqlplusと入力します。

  2. 接続文字列sh/sh@<データベース名>などを使用して、データベースのSales Historyスキーマに接続します。

  3. SQLプロンプトに次の行を入力します。

    create table toc_example (topic varchar2(100), page number);
    
    
  4. [Enter]を押します。

    表が作成されたことを示す通知が表示されます。

  5. SQL*Plusを終了します。

35.2.2 グループ上レポートの作成

この項の手順では、Reports Builderで単純なグループ上レポートを作成する方法について説明します。このグループ上レポートでは、国名を表示し、各国名の下にその国の顧客と顧客の電子メール・アドレスを表示します。目次は、このレポートに出力される国名に基づいて作成されます。

単純なグループ上レポートを作成するには:

  1. Reports Builderで、「ファイル」→「新規」→「レポート」を選択し、手動によるレポートの作成を選択します。

  2. 表示されるデータ・モデル・ビューで、キャンバスを右クリックして、ポップアップ・メニューから「レポート・ウィザード」を選択します。

  3. 「レポート・タイプ」ページで、「ペーパー・レイアウトのみ作成」を選択し、「次へ」をクリックします。

  4. 「スタイル」ページで、「グループ上」を選択し、「次へ」をクリックします。

  5. 「データ・ソース」ページで、「SQL問合せ」をクリックし、「次へ」をクリックします。

  6. 「データ」ページの「データ・ソース定義」フィールドに次のSELECT文を入力します。

    SELECT ALL COUNTRIES.COUNTRY_NAME,
               CUSTOMERS.CUST_LAST_NAME,
               CUSTOMERS.CUST_FIRST_NAME,
               CUSTOMERS.CUST_email
    FROM CUSTOMERS, COUNTRIES
    WHERE (CUSTOMERS.COUNTRY_ID = COUNTRIES.COUNTRY_ID)
    
    


    注意

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

    • 提供されているテキスト・ファイルformatorder_code.txtからコードをコピーして「データ・ソース定義」フィールドに貼り付けます。

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

    • 「データ・ソース定義」フィールドにコードを入力します。

     

  7. 「次へ」をクリックします。


    注意

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


  8. 「グループ」ページで、「COUNTRY_NAME」をクリックし、「>」ボタンをクリックして、このフィールドを「グループ・フィールド」リストに移動します。

  9. 「次へ」をクリックします。

  10. 「フィールド」ページで、「>>」ボタンをクリックしてすべてのフィールドを「表示フィールド」リストに移動し、「次へ」をクリックします。

  11. 「合計」ページで「次へ」をクリックします。

  12. 「ラベル」ページで「次へ」をクリックします。

  13. 「テンプレート」ページで、「終了」をクリックします。

  14. ツールバーの「データ・モデル」ボタンをクリックします。作成したデータ・モデルは次のようになります。

    図35-4    グループ上レポートのデータ・モデル


    画像の説明

  15. ツールバーの「ペーパー・レイアウト」ボタンをクリックします。ペーパー・レイアウト・ビューは次のようになります。

    図35-5    グループ上レポートのペーパー・レイアウト・ビュー


    画像の説明

  16. レポートをformatorder_<自分のイニシャル>.rdfという名前で保存します。これで、レポートのデータ・モデルと基本的なレイアウトの作成が完了しました。

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

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

35.2.3.1 After Parameter Formトリガーの作成

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

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

  1. オブジェクト・ナビゲータで、対象のレポート名(FORMATORDER_<自分のイニシャル>)の下にある「レポート・トリガー」ノードを開きます。

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

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

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


    注意

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


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

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

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

この項では、F_COUNTRY_NAMEフィールドに基づいたフォーマット・トリガーを作成します。このフィールドには国名が表示されます。このフォーマット・トリガーでは、それぞれの国名のページ番号をフェッチします。これにより、ユーザーが目次に表示されている国名に基づいて、レポートの様々な部分に移動できるようになります。

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

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

    ヒント

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

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

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

  4. PL/SQLエディタで、次のコードを入力します。

    function F_COUNTRY_NAMEFormatTrigger return boolean is
    pageNum number;
    begin
      -- get current page number
      srw.get_page_num(pageNum);
      -- insert row into table
      insert into toc_example
      values (:country_name, pageNum);
      return (TRUE);
    end;
    
    


    注意

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


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

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

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

35.2.4 データ・モデルでの2番目の問合せの作成

この項の手順では、各国名の下にあるデータのページ範囲を計算する式列を持つ2番目の問合せをデータ・モデルで作成する方法について説明します。この問合せでは、第35.2.1項「TOCデータを格納するデータベース表の作成」で作成したデータベース表から情報をフェッチします。その後、表形式のレイアウトを作成し、この情報を目次に表示します。

式列を持つ2番目の問合せを作成するには:

  1. データ・モデル・ビューで、ツール・パレットの「SQL問合せ」ツールをクリックし、問合せQ_1の右にあるデータ・モデル・ビューの空いている場所をクリックして、「SQL問合せ文」ダイアログ・ボックスを表示します。

  2. 「SQL問合せ文」フィールドに、次のSELECT文を入力します。

    SELECT
        TOPIC,
        MIN(PAGE) FROMPAGE,
        MAX(PAGE) TOPAGE
    FROM TOC_EXAMPLE
    GROUP BY TOPIC
    
    


    注意

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


  3. 「OK」をクリックします。作成したデータ・モデルは次のようになります。

    図35-6    2番目の問合せを持つデータ・モデル


    画像の説明

  4. データ・モデル・ビューで、ツール・パレットの「式列」ツールをクリックし、2番目の問合せのグループ(G_TOPIC)内をクリックします。

  5. 式列が選択されている状態で、「ツール」→「プロパティ・インスペクタ」を選択してプロパティ・インスペクタを表示します。

  6. 「一般情報」で、「名前」プロパティを「TOC_pages」、「データ型」プロパティを「Character」に設定します。

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

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

    function TOC_pagesFormula return Char is
    begin
      if :fromPage = :toPage then
      return (:fromPage);
      else
      return (:fromPage ||'-'|| :toPage);
      end if;
    end;
    
    


    注意

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


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

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

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

35.2.5 目次を表示するレポート・ブロックの作成

この項の手順では、レポートのヘッダー・セクションに表形式のレポート・ブロックを作成する方法について説明します。このレポート・ブロックには、目次のヘッダー(この例では国名)と、レポート内でその情報がある場所を示すページ範囲を表示します。

ヘッダー・セクションに表形式のレポート・ブロックを作成するには:

  1. ペーパー・レイアウト・ビューで、ツールバーの「ヘッダー・セクション」ボタンをクリックします。

  2. ツール・パレットの「レポート・ブロック」ツールをクリックし、ペーパー・レイアウト・ビューで約5インチ(12.5 cm)×約1.5インチ(4 cm)の長さの領域を描画します。マウス・ボタンを放すと、レポート・ブロック・ウィザードが表示されます。

  3. 「スタイル」ページで、「表形式」を選択し、「次へ」をクリックします。

  4. 「グループ」ページで、「G_TOPIC」をクリックし、「下」をクリックして、このフィールドを「表示グループ」リストに移動し、「次へ」をクリックします。

  5. 「フィールド」ページで、「使用可能フィールド」リストの次の各フィールドをクリックし、「>」ボタンをクリックしてそれらのフィールドを「表示フィールド」リストに移動して、「次へ」をクリックします。

    • TOPIC

    • TOC_pages

  6. 「ラベル」ページで「次へ」をクリックします。

  7. 「テンプレート」ページで、「終了」をクリックします。

    ペーパー・レイアウト・ビューでのレポート・ブロックは次のように表示されます。

    図35-7    ヘッダー・セクションのペーパー・レイアウト・ビュー


    画像の説明

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

35.2.6 ペーパーを対象とした単純な目次を使用するレポートの実行

ペーパーに対してレポートを実行するには:

次のような目次がレポートの最初のページに表示されます。

図35-8    レポートの目次ページ


画像の説明

レポート内の様々なページに移動することによって、各国の顧客データを参照できます。たとえば1ページに移動すると、アルゼンチンの顧客の電子メール・アドレスが表示されます。

図35-9    アルゼンチンの顧客の出力結果


画像の説明


注意

作成したレポートは、提供されているサンプル・ファイルformatorder.rdfと比較できます。「プログラム」→「コンパイル」→「すべて」を選択してPL/SQLをコンパイルしてから、ペーパーに対してレポートを実行します。 


複数階層を持つ目次の作成の詳細は、第36章「複数階層の目次を使用したペーパー・レポートの作成」を参照してください。

35.3 索引の作成

この項では、レポートの最後に表示する索引を作成します。この索引には、顧客名とその名前が記載されているページ番号が表示されます。索引は、ユーザーが特定の顧客名を探したい場合、参照先のカテゴリ(国名など)がわからない場合に役立ちます。

図35-10    ペーパー・レポート用の単純な索引


画像の説明

35.3.1 索引用の情報を格納するデータベース表の作成

この項の手順では、索引に表示する項目のページ番号を格納する表をデータベースに作成する方法について説明します。データベースに表を作成できるかどうか不明な場合は、データベース管理者に問い合せてください。

データベースに表を作成するには:

  1. 第35.2.1項「TOCデータを格納するデータベース表の作成」の手順に従い、次のコードを使用して新しいデータベース表を作成します。

    create table index_example (term varchar2(100), page number);
    
    
  2. [Enter]を押します。

    表が作成されたことを示す通知が表示されます。

  3. SQL*Plusを終了します。

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

この項の手順では、顧客の姓に基づいたフォーマット・トリガーを作成する方法について説明します。ビルトイン・ファンクションSRW.GET_PAGE_NUMを使用して現在の顧客のページ番号を検索し、前の項で作成した表にその番号を挿入します。

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

  1. Reports Builderで、レポートformatorder_<自分のイニシャル>.rdfを開きます。

  2. ツールバーの「ペーパー・レイアウト」ボタンをクリックして、ペーパー・レイアウト・ビューを表示します。

  3. ペーパー・レイアウト・ビューで、フィールド「F_CUST_LAST_NAME」を右クリックし、ポップアップ・メニューから「プロパティ・インスペクタ」を選択します。

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

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

    function F_CUST_LAST_NAMEFormatTrigger return boolean is
      PageNum number;
    begin
      -- get pagenumber
      srw.get_page_num(pageNum);
      -- insert into table
      insert into index_example
      values (:Cust_last_name||', '||:Cust_first_name, PageNum);
      return (TRUE);
    end;
    


    注意

    提供されているテキスト・ファイルformatorder_code.txtから、このコードをコピーして貼り付けると、コードを入力できます。 


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

  7. コンパイル・エラーが発生した場合は、作成したコードがサンプルのRDFファイルまたはこの章のコードと同じになるように修正して、再度コンパイルします。

  8. コンパイル・エラーがなくなったら、「閉じる」をクリックします。

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

35.3.3 データ・モデルへの問合せの追加

この項の手順では、索引用に個々の顧客名とページ番号を取得する問合せをデータ・モデルに追加する方法について説明します。

問合せを追加するには:

  1. データ・モデル・ビューで、ツール・パレットの「SQL問合せ」ツールをクリックし、問合せQ_1の右にあるデータ・モデル・ビューの空いている場所をクリックして、「SQL問合せ文」ダイアログ・ボックスを表示します。

  2. 「SQL問合せ文」フィールドに、次のSELECT文を入力します。

    SELECT SUBSTR(TERM,1,1) INITIAL_LETTER, TERM, PAGE FROM INDEX_EXAMPLE ORDER BY TERM
    
    


    注意

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

    • 提供されているテキスト・ファイルformatorder_code.txtからコードをコピーして「データ・ソース定義」フィールドに貼り付けます。

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

    • 「データ・ソース定義」フィールドにコードを入力します。

     

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

  4. データ・モデル・ビューに表示される新しい問合せで、「INITIAL_LETTER」列をクリックし、この列を問合せの残りの部分の上にドラッグします。それにより、データ・モデルは次のようになります。

    図35-11    索引のデータ・モデル・ビュー


    画像の説明

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

35.3.4 トレーラ・セクションに索引を表示するためのレポート・ブロックの作成

この項の手順では、レポートのトレーラ・セクションに索引情報を表示する方法について説明します。

トレーラ・セクションにレポート・ブロックを作成するには:
  1. ペーパー・レイアウト・ビューで、ツールバーの「トレーラ・セクション」ボタンをクリックします。

  2. 「挿入」→「レポート・ブロック」を選択します。

  3. 「スタイル」ページで、「グループ上」ラジオ・ボタンを選択し、「次へ」をクリックします。

  4. 「グループ」ページで、「G_2」(「INITIAL_LETTER」列を格納する新しいグループ名)をクリックし、「下」をクリックして印刷方向を指定します。

  5. 「使用可能グループ」リストで、「G_INITIAL_LETTER」をクリックして「下」をクリックします。

  6. 「次へ」をクリックします。

  7. 「フィールド」ページで、「INITIAL_LETTER」をクリックし、「>」ボタンをクリックして、このフィールドを「表示フィールド」リストに移動します。

  8. 「TERM」と「PAGE」を「表示フィールド」リストに移動します。

  9. 「次へ」を2回クリックして、「終了」をクリックします。

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

35.3.5 ペーパーを対象としたレポートの実行

ツールバーの「ペーパー・レイアウトを実行」ボタンをクリックします。レポートの最後のページに索引が表示されます。この例では2402ページです。このページは次のようになります。


注意

目次(TOC)を生成する場合は、「ペーパー・レイアウトを実行」ボタンをクリックする必要があります。「ペーパー・デザイン」ボタンをクリックしてもフォーマット順序の変更は有効にならないため、TOCは生成されません。 


図35-12    レポートの索引ページ


画像の説明


注意

スキーマに含まれるデータの量と型に応じて、作成したレポートの最後のページに表示されるデータの外観が、上の図と異なる場合があります。 


35.4 まとめ

これで、すべての作業が完了しました。目次と索引を使用したレポートが正常に作成されました。この章で学習した内容は次のとおりです。

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


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

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