Oracle® Fusion Middleware Oracle Reportsレポート作成のためのユーザーズ・ガイド 11gリリース1(11.1.1) B61376-01 |
|
戻る |
次へ |
この項の手順では、複数のページで構成される大規模なレポートに対して、基本的な目次を作成する方法について説明します。作成する目次は次のようになります。
この項の手順では、目次に表示するレコードのページ番号を格納する表をデータベースに作成する方法について説明します。データベースに表を作成する権限があるか不明な場合は、データベース管理者に問い合せてください。
データベースに表を作成するには:
SQL*Plusを起動します。
(Windowsの場合)「スタート」メニューで、「プログラム」→「Oracle Application Server - oracle_home_name」→「Application Development」→「SQL Plus」を選択します。
(UNIXの場合)sqlplus
と入力します。
接続文字列sh/sh@
<データベース名>などを使用して、データベースのSales Historyスキーマに接続します。
SQLプロンプトに次の行を入力します。
create table toc_example (topic varchar2(100), page number);
[Enter]を押します。
表が作成されたことを示す通知が表示されます。
SQL*Plusを終了します。
この項の手順では、Reports Builderで単純なグループ上レポートを作成する方法について説明します。このグループ上レポートでは、国名を表示し、各国名の下にその国の顧客と顧客の電子メール・アドレスを表示します。目次は、このレポートに出力される国名に基づいて作成されます。
単純なグループ上レポートを作成するには:
Reports Builderで、「ファイル」→「新規」→「レポート」を選択し、手動によるレポートの作成を選択します。
表示されるデータ・モデル・ビューで、キャンバスを右クリックして、ポップアップ・メニューから「レポート・ウィザード」を選択します。
「レポート・タイプ」ページで、「ペーパー・レイアウトのみ作成」を選択し、「次へ」をクリックします。
「スタイル」ページで、「グループ上」を選択し、「次へ」をクリックします。
「データ・ソース」ページで、「SQL問合せ」をクリックし、「次へ」をクリックします。
「データ」ページの「データ・ソース定義」フィールドに次の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)
注意: この問合せは、次のいずれかの方法で入力できます。
|
「次へ」をクリックします。
注意: データベースにまだ接続していない場合は、「クエリー・ビルダー」または「次へ」をクリックしたときに、データベースに接続するよう求められます。この例に該当するスキーマが含まれるデータベースに接続してください。第35.1項「この例の前提条件」に、この例のサンプル・スキーマの要件に関する説明があります。 |
「グループ」ページで、「COUNTRY_NAME」をクリックし、「>」ボタンをクリックして、このフィールドを「グループ・フィールド」リストに移動します。
「次へ」をクリックします。
「フィールド」ページで、「>>」ボタンをクリックしてすべてのフィールドを「表示フィールド」リストに移動し、「次へ」をクリックします。
「合計」ページで「次へ」をクリックします。
「ラベル」ページで「次へ」をクリックします。
「テンプレート」ページで、「終了」をクリックします。
ツールバーの「データ・モデル」ボタンをクリックします。作成したデータ・モデルは次のようになります。
ツールバーの「ペーパー・レイアウト」ボタンをクリックします。ペーパー・レイアウト・ビューは次のようになります。
レポートをtoc_
<自分のイニシャル>.rdf
という名前で保存します。これで、レポートのデータ・モデルと基本的なレイアウトの作成が完了しました。
この項に示す手順に従って、2つのトリガーを作成します。最初のトリガーは、ビルトイン・プロシージャSRW.SET_FORMAT_ORDERを使用してレポートのメイン・セクションを最初にフォーマットし、その後ヘッダー・セクションとトレーラ・セクションをフォーマットします。2番目のトリガーは、それぞれの国名が表示されているページの番号をフェッチして、第35.2.1項「TOCデータを格納するデータベース表の作成」で作成した表にその情報を格納します。
After Parameter Formトリガーは、パラメータ・フォームの実行後に実行されるファンクションです。この項では、このトリガーを設定してレポートの実行順序を変更し、メイン・セクションが最初に実行されるようにします。
After Parameter Formトリガーを作成するには:
オブジェクト・ナビゲータで、対象のレポート名(TOC_
<自分のイニシャル>)の下にある「レポート・トリガー」ノードを開きます。
「AFTER PARAMETER FORM」を右クリックし、ポップアップ・メニューで「PL/SQLエディタ」を選択します。
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;
注意: 提供されているファイルtoc_index_code.txt からコードをコピーして貼り付けることもできます。 |
「コンパイル」をクリックします。
コードがコンパイルされた後、「閉じる」をクリックします。
この項では、F_COUNTRY_NAME
フィールドに基づいたフォーマット・トリガーを作成します。このフィールドには国名が表示されます。このフォーマット・トリガーでは、それぞれの国名のページ番号をフェッチします。これにより、ユーザーが目次に表示されている国名に基づいて、レポートの様々な部分に移動できるようになります。
フォーマット・トリガーを作成するには:
オブジェクト・ナビゲータで、レポートの「ペーパー・レイアウト」ノードを開き、「メイン・セクション」→「ボディ」→「M_G_1_GRPFR」→「R_G_1」までナビゲートして、「F_COUNTRY_NAME」をクリックします。
ヒント: このフィールドが見つからない場合は、オブジェクト・ナビゲータの上部にある「検索」フィールドを使用してください。 |
「ツール」→「プロパティ・インスペクタ」を選択し、このフィールドのプロパティ・インスペクタを表示します。
「拡張レイアウト」で、「フォーマット・トリガー」プロパティ・フィールドをダブルクリックし、PL/SQLエディタを表示します。
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;
注意: 提供されているファイルtoc_index_code.txt からコードをコピーして貼り付けることもできます。 |
「コンパイル」をクリックします。
コードがコンパイルされた後、「閉じる」をクリックしてプロパティ・インスペクタを閉じます。
レポートを保存します。
この項の手順では、各国名の下にあるデータのページ範囲を計算する式列を持つ2番目の問合せをデータ・モデルで作成する方法について説明します。この問合せでは、第35.2.1項「TOCデータを格納するデータベース表の作成」で作成したデータベース表から情報をフェッチします。その後、表形式のレイアウトを作成し、この情報を目次に表示します。
式列を持つ2番目の問合せを作成するには:
データ・モデル・ビューで、ツール・パレットの「SQL問合せ」ツールをクリックし、問合せQ_1の右にあるデータ・モデル・ビューの空いている場所をクリックして、「SQL問合せ文」ダイアログ・ボックスを表示します。
「SQL問合せ文」フィールドに、次のSELECT
文を入力します。
SELECT TOPIC, MIN(PAGE) FROMPAGE, MAX(PAGE) TOPAGE FROM TOC_EXAMPLE GROUP BY TOPIC
注意: この問合せは、次のいずれかの方法で入力できます。
|
「OK」をクリックします。作成したデータ・モデルは次のようになります。
データ・モデル・ビューで、ツール・パレットの「式列」ツールをクリックし、2番目の問合せのグループ(G_TOPIC)内をクリックします。
式列が選択されている状態で、「ツール」→「プロパティ・インスペクタ」を選択してプロパティ・インスペクタを表示します。
「一般情報」で、「名前」プロパティを「TOC_pages
」、「データ型」プロパティを「Character」に設定します。
「プレースホルダ/式」で、「PL/SQL式」プロパティ・フィールドをクリックしてPL/SQLエディタを表示します。
PL/SQLエディタで、テンプレートを使用して次のコードを入力します。
function TOC_pagesFormula return Char is begin if :fromPage = :toPage then return (:fromPage); else return (:fromPage ||'-'|| :toPage); end if; end;
注意: 提供されているファイルtoc_index_code.txt からコードをコピーして貼り付けることもできます。 |
「コンパイル」をクリックします。
コードがコンパイルされた後、「閉じる」をクリックします。
レポートを保存します。
この項の手順では、レポートのヘッダー・セクションに表形式のレポート・ブロックを作成する方法について説明します。このレポート・ブロックには、目次のヘッダー(この例では国名)と、レポート内でその情報がある場所を示すページ範囲を表示します。
ヘッダー・セクションに表形式のレポート・ブロックを作成するには:
ペーパー・レイアウト・ビューで、ツールバーの「ヘッダー・セクション」ボタンをクリックします。
ツール・パレットの「レポート・ブロック」ツールをクリックし、ペーパー・レイアウト・ビューで約5インチ(12.5 cm)×約1.5インチ(4 cm)の長さの領域を描画します。マウス・ボタンを放すと、レポート・ブロック・ウィザードが表示されます。
「スタイル」ページで、「表形式」を選択し、「次へ」をクリックします。
「グループ」ページで、「G_TOPIC」をクリックし、「下」をクリックして、このフィールドを「表示グループ」リストに移動し、「次へ」をクリックします。
「フィールド」ページで、「使用可能フィールド」リストの次の各フィールドをクリックし、「>」ボタンをクリックしてそれらのフィールドを「表示フィールド」リストに移動して、「次へ」をクリックします。
TOPIC
TOC_pages
「ラベル」ページで「次へ」をクリックします。
「テンプレート」ページで、「終了」をクリックします。
ペーパー・レイアウト・ビューでのレポート・ブロックは次のように表示されます。
レポートを保存します。
ペーパーに対してレポートを実行するには:
ツールバーの「ペーパー・レイアウトを実行」ボタンをクリックします。
注意: 目次(TOC)を生成する場合は、「ペーパー・レイアウトを実行」ボタンをクリックする必要があります。「ペーパー・デザイン」ボタンをクリックしてもフォーマット順序の変更は有効にならないため、TOCは生成されません。 |
次のような目次がレポートの最初のページに表示されます。
レポート内の様々なページに移動することによって、各国の顧客データを参照できます。たとえば1ページに移動すると、アルゼンチンの顧客の電子メール・アドレスが表示されます。
注意: 作成したレポートは、提供されているサンプル・ファイルtoc.rdf と比較できます。「プログラム」→「コンパイル」→「すべて」を選択してPL/SQLをコンパイルしてから、ペーパーに対してレポートを実行します。 |
複数階層を持つ目次の作成の詳細は、第36章「複数階層の目次を使用したペーパー・レポートの作成」を参照してください。