19
繰返し枠ごとにページ番号をリセットするレポートの作成
この章では、データの表示どおりにページ番号をリセットするレポートについて学習します。この章の手順に従うと、図19-1に示すようなレポート出力を生成できます。
図19-1 繰返し枠ごとにページ番号がリセットされたレポートの出力
画像の説明
この例では、"Page X of Y"の書式を使用してページの番号付けを行います。最初の番号(X)は、各親レコード(各営業担当者など)の現行ページに対応します。このページ番号は、営業担当者ごとに「1」にリセットされます。したがって、各営業担当者の統計が個別に追跡されます。
2番目の数字(Y)は、各営業担当者の顧客情報を表示するために必要な合計ページ数です。このフィールドも、新しい親レコードごとにリセットされます。
重要な注意: この章の手順では、ペーパー・レイアウトに"Page X of Y Pages"を作成する方法を説明します。Webソースの場合はページ番号付けがないので、この説明は該当しません。
概要
- 「ページ番号付け」ダイアログ・ボックスでは、ページ番号を特定の繰返し枠でリセットするか、レポート全体で通し番号を付けるかを指定できます。
- ただし、サンプル・レポートの2番目の数字のように、数ページ単位で繰り返される合計ページを使用する場合、他のオブジェクトの件数を含むフィールドを書式設定するときに適用される一定のルールに注意する必要があります。ページ依存参照と呼ばれるこの値を、レポートの最初のページ、または最終ページ以外のページに表示するには、Reports Builderがその値を識別する前に、値が含まれるフィールドを書式設定する必要があります。つまり、Reports Builderがレポートを書式設定するときに、どれくらいのスペースを確保するか識別できるように、この種の値を表示するフィールドを固定しておく必要があります。このフィールドに「水平拡張度」プロパティや「垂直拡張度」プロパティで「拡張」、「縮小」または「可変」に設定しても、Reports Builderでは固定とみなされます。このようなフィールドを作成する場合は、値が十分に収まる大きさにする必要があります。
- また、フィールドを非表示にして、ボイラープレート・オブジェクトから参照することもできます。この方法を使用する場合、フィールドの長さは可変ですが、ボイラープレートの長さは固定されたままになるので、フィールドが収まる十分なサイズのボイラープレート・オブジェクトを作成する必要があります。
- このようにしてReports Builderによって処理される値には、&TOTAL LOGICAL PAGES、&TOTAL PANELS、&TOTAL PHYSICAL PAGES、およびこれらを参照するサマリーや式などがあります。「Page」に設定されている「計算位置」プロパティまたは「リセット位置」プロパティのいずれかを持つサマリーやそれを参照する式も、ページ依存参照とみなされます。このような値のすべてのリストと、Reports Builderの処理の詳細は、Oracle Reportsオンライン・ヘルプのトピック「垂直拡張度プロパティ」と「水平拡張度プロパティ」を参照してください。
データ・リレーションシップ
図19-1に示しているように、このレポートにはマスター/ディテール・リレーションシップとブレークの両方が含まれます。これによって、2つのレベルでデータが区別されます。いつページ番号をリセットするかは、トップ・レベル(ブレーク)で決定されます。
レイアウト
このレポートでは、マスター/ディテールのレイアウト・スタイルを修正したものを使用します。また、ページ番号に2つの非表示フィールドを作成し、これをボイラープレート・オブジェクトで参照します。これにより、総ページ数を表示するフィールドが適切なサイズになります。次に、「ページ当りの最大レコード数」プロパティでブレーク・グループの繰返し枠の設定を確認し、ページに正しく番号が付けられるようにします。
使用例
この例では、レポートのマージンにページ番号を"Page X of Y Pages"の書式で作成します。ページ番号Xは、1度に1人の営業担当者につき、顧客への売上を計上するページ1枚ごとに1増加します。Yは、営業グループ内のある営業担当者の総ページ数を示し、次の営業担当者のページになるとリセットされます。
このサンプル・レポートの作成過程では、次を行います。
繰返し枠ごとにページ番号をリセットするサンプル・レポートを表示するには、サンプル・フォルダpagenum
を開き、Oracle Reportsのサンプルpagenum.rdf
を開きます。このファイルの開き方の詳細は、「はじめに」の「サンプル・レポートへのアクセス」を参照してください。
19.1 この例の前提条件
19.2 データ・モデルとグループ上レイアウトの作成
この例のように、単一問合せレポートを作成する場合、レポート・ウィザードを使用して、データ・モデルとレイアウトを同時に作成できます。
データ・モデルとグループ上レイアウトを作成するには:
- Reports Builderを起動します。すでに起動している場合は、「ファイル」→「新規」→「レポート」を選択します。
- 「ようこそ」ダイアログ・ボックスまたは「新規レポート」ダイアログ・ボックスで、「レポート・ウィザードを使う」を選択して「OK」をクリックします。
- 「ようこそ」ページが表示されたら、「次へ」をクリックします。
- 「レポート・タイプ」ページで、「Webおよびペーパー・レイアウトの両方を作成」を選択し、「次へ」をクリックします。
- 「スタイル」ページでレポートのタイトルを入力し、「グループ上」を選択して、「次へ」をクリックします。
- 「データ・ソース」ページで、「SQL問合せ」をクリックし、「次へ」をクリックします。
- 「データ」ページの「データ・ソース定義」フィールドに次のSELECT文を入力します。
SELECT ENAME, REPID, CUSTID, NAME, ADDRESS, TRIM(CITY)||',
'||STATE||' '||ZIP LOCATION, AREA||' '||PHONE, CREDITLIMIT
FROM EMP, CUSTOMER
WHERE EMPNO = REPID
ORDER BY REPID
注意
この問合せは、次のいずれかの方法で入力できます。
- 提供されているテキスト・ファイル
pagenum_code.txt からコードをコピーして「データ・ソース定義」フィールドに貼り付けます。
- 「クエリー・ビルダー」をクリックして、コードを入力せずに問合せを作成します。
- 「データ・ソース定義」フィールドにコードを入力します。
|
- 「次へ」をクリックします。
注意
データベースにまだ接続していない場合は、「クエリー・ビルダー」または「次へ」をクリックしたときに、データベースに接続するよう求められます。この例に該当するスキーマが含まれるデータベースに接続してください。第19.1項「この例の前提条件」に、この例のサンプル・スキーマの要件に関する説明があります。
|
- 「グループ」ページで、「使用可能フィールド」リストの「ENAME」をクリックし、「>」ボタンをクリックしてこのフィールドを「グループ・フィールド」リストに移動します。
- 「REPID」も「グループ・フィールド」リストに移動して、「次へ」をクリックします。
図19-2 レポート・ウィザードでのグループ・フィールドの選択
画像の説明
- 「フィールド」ページで「>>」ボタンをクリックして、すべてのフィールドを「表示フィールド」リストに移動します。次に「CUSTID」をクリックし、「<」ボタンをクリックして、それを「使用可能フィールド」リストに戻し、「次へ」をクリックします。
- 「合計」ページで「次へ」をクリックします。
- 「ラベル」ページで、ラベルとフィールド幅を次のように変更し、「次へ」をクリックします。
図19-3 レポート・ウィザードで指定するラベルと幅
画像の説明
- 「テンプレート」ページで「終了」をクリックして、ペーパー・デザイン・ビューにレポート出力を表示します。
- レポートを
pagenum_<自分のイニシャル>.rdf
という名前で保存します。
19.3 2番目の問合せの追加
ペーパー・デザイン・ビューでは、データが営業担当者ごとにグループ化され、各営業担当者の下に顧客データがリストされます。
図19-4 ペーパー・デザイン・ビューのレポート・レイアウト
画像の説明
データはすべて1ページに表示され、各顧客の個別の売上トランザクションはまだ表示されていません。これを表示するには、データ・モデルにもう1つ問合せを追加する必要があります。
レポートに新しい問合せを追加するには:
- ツールバーの「データ・モデル」ボタンをクリックします。
- データ・モデル・ビューで、ツール・パレットの「SQL問合せ」ツールをクリックし、問合せQ_1の右にあるデータ・モデル・ビューの空いている場所をクリックして、「SQL問合せ文」ダイアログ・ボックスを表示します。
- 「SQL問合せ文」フィールドに、次のSELECT文を入力します。
SELECT CUSTID,PRODNAME,AMOUNT
FROM SALES
ORDER BY CUSTID
- 「OK」をクリックして、データ・モデル・ビューに新しい問合せを表示します。
- データ・モデル・ビューで、ツール・パレットの「データ・リンク」ツールをクリックします。
- 十字カーソルを使用してG_NAMEグループの「CUSTID」をクリックし、カーソルをG_custid1グループの「custid1」までドラッグしてマウス・ボタンを放し、2つのグループ間で「CUSTID」フィールドと「custid1」フィールドをリンクします。
- レポート・エディタのウィンドウをオブジェクト・ナビゲータの横に配置し、どちらも同時に表示できるようにします。
- オブジェクト・ナビゲータの「データ・モデル」ノードで、「グループ」ノードを開きます。次に、「ペーパー・レイアウト」ノードで、「メイン・セクション」ノードを開きます。この2つの構造を比較すると、データ・モデルでは問合せQ_2を追加すれば新しいデータが使用できるのに対し、ペーパー・レイアウトでは、設定を変更しないかぎり、新しいデータは使用されません。このため、次の手順を実行します。
19.4 レイアウトのデフォルトの再設定
追加の問合せデータを使用できるようにレイアウトのデフォルトを再設定するには:
- オブジェクト・ナビゲータでレポート名をクリックします。
- 「ツール」→「レポート・ウィザード」を選択して、ウィザードを再実行します。
- レポート・ウィザードの「グループ」ページで、「使用可能グループ」リストの「G_custid1」をクリックし、「下」をクリックして印刷方向を指定し、このグループを「表示グループ」リストに移動します。
- 「フィールド」ページで、「使用可能フィールド」リストの「prodname」と「amount」をクリックし、「>」ボタンをクリックして、これらのフィールドを「表示フィールド」リストに移動します。
- 「ラベル」ページで、ラベルとフィールド幅を次のように変更します。
- 「テンプレート」ページで「終了」をクリックして、ペーパー・デザイン・ビューにレポート出力を表示します。表示は次のようになります。
図19-5 変更後のレポート・レイアウトのペーパー・デザイン・ビュー
画像の説明
データは営業担当者ごとにグループ化され、各営業担当者の下に顧客データがリストされています。ただしここでは、各顧客の下に、販売した個別の製品がリストされています。レポートはこれで複数ページになりました。
19.5 プロパティの設定とフィールドの書式設定
プロパティを設定し、レポートのフィールドを書式設定するには:
- オブジェクト・ナビゲータで、「ペーパー・レイアウト」ノードをクリックし、ツールバーの「すべて拡張」ボタンをクリックします。
- 「R_G_ENAME」ノードの横にある繰返し枠アイコンをダブルクリックしてプロパティ・インスペクタを表示し、次のプロパティを設定します。
- 「繰返し枠」で、「ページ当りの最大レコード数」プロパティを「1」に設定します。
- オブジェクト・ナビゲータで、「R_G_CUSTID1」ノードの横にある繰返し枠アイコンをダブルクリックしてプロパティ・インスペクタを表示し、次のプロパティを設定します。
- 「繰返し枠」で、「枠間の垂直間隔」プロパティを「0.25」に設定し、繰返し枠のインスタンス間、つまり、各顧客レコードの間の垂直間隔を0.25インチ(0.5 cm)に指定します。
- 「標準レイアウト」で、「ページ保護」プロパティを「はい」に設定し、繰返し枠の最初のインスタンス(つまり、最初の顧客レコード)がすべて同じ論理ページに収まるように指定します。
- オブジェクト・ナビゲータで、「F_CREDITLIMIT」ノードをクリックし、[Ctrl]を押しながら「F_AMOUNT」をクリックして、両方のノードを選択します。
- ツールバーの「ペーパー・デザイン」ボタンをクリックしてペーパー・デザイン・ビューをアクティブ・ウィンドウにし、「F_CREDITLIMIT」フィールドおよび「F_AMOUNT」フィールドを選択して、書式を変更します(ツールバーの対応するボタンをクリックすることもできます)。
- 「書式」→「数値」→「通貨」を選択します。
- 「書式」→「数値」→「10進桁を追加」を選択します。
- 「書式」→「数値」→「10進桁を追加」を選択します(小数点以下2桁にするために再度選択します)。
- 「書式」→「文字の割付け」→「右詰め」を選択します。
- ペーパー・デザイン・ビューで、「Amount」ラベル(列ヘッダー)をクリックし、「書式」→「文字の割付け」→「右詰め」を選択します。
19.6 新しいフィールドの作成
レポートのページ番号に新しいフィールドを作成するには:
- ツールバーの「ペーパー・レイアウト」ボタンをクリックして、ペーパー・レイアウト・ビューを表示します。
- ペーパー・レイアウト・ビューでツールバーの「マージン編集」ボタンをクリックして、レポートのマージン領域を表示します。次のように、上のマージンに2つのページ番号フィールドを作成します。
図19-6 レポートの上のマージンのページ番号ソース・フィールド
画像の説明
- ツール・パレットの「フィールド」ツールをクリックし、マージンの中央に2文字ほどの長さのフィールドを描画します。
- 新しいフィールド・オブジェクト(F_1)をダブルクリックして、プロパティ・インスペクタを表示し、次のプロパティを設定します。
- プロパティ・インスペクタを閉じます。
- ペーパー・レイアウト・ビューで、「F_TOTAL_PAGENO」フィールドをクリックします。
- 「編集」→「コピー」を選択し、「編集」→「貼付け」を選択して、F_TOTAL_PAGENOの横にF_TOTAL_PAGENOと同じディメンションを持つ新しいフィールドを作成します。
- 新しいフィールド・オブジェクト(F_TOTAL_PAGENO1)をマージンの空き領域へドラッグします。
- 新しいフィールド・オブジェクト(F_TOTAL_PAGENO1)をダブルクリックして、プロパティ・インスペクタを表示し、次の変更を行います。
- プロパティ・インスペクタを閉じます。
次に、これらのフィールドをテキスト・ボックスで参照し、ページ番号を"Page X of Y Pages"の書式で表示します。
19.7 フィールドの参照
ページ番号フィールドを参照するには:
- ペーパー・レイアウト・ビューで、ツール・パレットの「線カラー」ツールをクリックします。
- カラー・パレットで、「枠なし」をクリックします。
- ツール・パレットの「テキスト」ツールをクリックします。
- ページ番号を表示する上のマージンにカーソルを置き、クリックしてボイラープレート・オブジェクトを作成します。
- 新しいボイラープレート・オブジェクトに、
Page &F_PAGENO of &F_TOTAL_PAGENO
と入力します。
図19-7 レポートの上のマージンのページ番号ソース・フィールドおよび参照フィールド
画像の説明
レポート出力では、現行のページ番号がフィールドF_PAGENOを参照するところに表示され、各マスターの総ページ数がフィールドF_TOTAL_PAGENOを参照するところに表示されます。必要に応じて、ページ番号のボイラープレート・テキスト・オブジェクトのサイズを変更して、F_TOTAL_PAGENOの値が切り捨てられないようにします。
- レポートを保存して、実行します。最終的なレポート出力は次のようになります。
図19-8 繰返し枠ごとにページ番号がリセットされたレポートの最終出力
画像の説明
19.8 まとめ
これで、すべての作業が完了しました。繰返し枠ごとにページ番号をリセットするレポートは、正常に作成されました。この章で学習した内容は次のとおりです。
- データ・モデルとグループ上レイアウトを作成する。
- 2番目の問合せを追加して複数問合せレポートを作成し、レイアウトのデフォルトを再設定する。
- プロパティを設定し、フィールドを書式設定する。
- レイアウトでページ番号のボイラープレート・オブジェクトを作成し、参照する。
この例で使用されているウィザード、ビュー、プロパティの詳細は、Oracle Reportsオンライン・ヘルプを参照してください。このヘルプは、第3.1.1項「Oracle Reportsオンライン・ヘルプの使用」で説明しているとおり、Reports BuilderまたはOracle Technology Network(OTN)から表示できます。