13
グループ左サマリー・レポートの作成
この章では、グループ左サマリー・レポートについて学習します。この章の手順に従うと、図13-1に示すようなレポート出力を生成できます。
図13-1 グループ左サマリー・レポートの出力
画像の説明
概要
- このレポートは、マスター・レコード(上の図の左上にあるName)、ディテール・レコード(右上にあるProduct、Itemtot、Orderdate)およびサマリー・レコード(Product、Sum Total)で構成されます。サマリーでは、各マスター・レコードのディテールの合計が計算されます。列Productは2度表示されます。Reports Builderを使用すると、何度でも列を表示できます。
- マスター/ディテール・サマリー・レポートは、1つ以上のサマリーを含むマスター/ディテール・レポートです。
データ・リレーションシップ
- このレポートでは、2つの問合せを使用して、4つの表からデータを選択します。マスター問合せでは顧客名が選択されるのに対し、ディテール問合せでは各顧客が注文した製品の関連情報が選択されます。
- ディテール問合せでは複数の表のデータが選択されるので、結合を指定して、各表の情報をまとめてリンクする必要があります。
- ディテール・グループから列をドラッグして、データをさらにグループ化します。品目合計の計算用にサマリー列を作成します。
レイアウト
- このレポートのレイアウトは2つの部分で構成されています。一番上の部分にはマスターとディテールの情報が含まれます。この部分はレポート・ウィザードを使用して作成します。2番目の部分はペーパー・レイアウト・ビューで手動で構成され、サマリーの書式を設定します。
- レイアウトで2つのグループのサイズも変更して、ユーザーが新規作成した、レイアウトの一番下の部分を一番上の部分に統合し、表を結合するためだけに照会された一部の列をレイアウトから除外します。さらに、繰り返し枠のインスタンス間に追加スペースを挿入します。
使用例
この例では、売上データを顧客別に表示および集計するレポートを作成します。このレポートには、顧客ごとに次のサマリーを入れます。
- 顧客が購入した製品を発注日別に記載したリスト。これには製品ごとの購入額も記載します。
- ある期間における、製品ごとの購入額合計を示す顧客ごとのサマリー。
このサンプル・レポートの作成過程では、次を行います。
マスター/ディテール・サマリー・レポートのサンプルを表示するには、サンプル・フォルダmasterdetailsummary
を開き、Oracle Reportsのサンプルmasdtmsb.rdf
を開きます。アクセス方法の詳細は、「はじめに」の「サンプル・レポートへのアクセス」を参照してください。
13.1 この例の前提条件
この章の例を作成するには、Summit Sporting Goods(SUMMIT)スキーマに対するアクセス権が必要です。このスキーマをインストールするSQLスクリプトをダウンロードするには、「はじめに」の「データ・ソースへのアクセス」を参照してください。
13.2 手動での新規レポートの作成
この場合、データ・モデルとレイアウトを別々に作成した方が簡単です。したがって、まず空のレポートを作成してから、問合せを追加し、レイアウトを作成します。
空のレポートを作成するには:
- Reports Builderを起動します。すでに起動している場合は、「ファイル」→「新規」→「レポート」を選択します。
- 「ようこそ」ダイアログ・ボックスまたは「新規レポート」ダイアログ・ボックスで、「新規レポートを手動で作成」を選択して「OK」をクリックします。
13.3 データ・リンクを含むデータ・モデルの作成
複数の問合せを使用するレポートを作成する場合、最初にすべての問合せをデータ・ウィザードで作成して、次にレポート・ウィザードを使用してレイアウトを作成する方が簡単です。
問合せを作成するには:
- データ・モデル・ビューで、「挿入」→「問合せ」を選択してデータ・ウィザードを表示します。
- 「ようこそ」ページが表示されたら、「次へ」をクリックします。
- 「問合せ」ページで、「問合せ名」に
Q_Customer
と入力し、「次へ」をクリックします。
- 「データ・ソース」ページで、「SQL問合せ」を選択し、「次へ」をクリックします。
- 「データ」ページの「データ・ソース定義」フィールドに次のSELECT文を入力します。
SELECT CUSTID, NAME
FROM CUSTOMER
ORDER BY NAME
注意
この問合せは、次のいずれかの方法で入力できます。
- 提供されているテキスト・ファイル
masdtmsb_code.txt からコードをコピーして「データ・ソース定義」フィールドに貼り付けます。
- 「クエリー・ビルダー」をクリックして、コードを入力せずに問合せを作成します。
- 「データ・ソース定義」フィールドにコードを入力します。
|
- 「次へ」をクリックします。
注意
データベースにまだ接続していない場合は、「クエリー・ビルダー」または「次へ」をクリックしたときに、データベースに接続するよう求められます。この例に該当するスキーマが含まれるデータベースに接続してください。第13.1項「この例の前提条件」に、この例のサンプル・スキーマの要件に関する説明があります。
|
- 「グループ」ページで「次へ」をクリックします。
- 「終了」をクリックして、データ・モデル・ビューに最初の問合せを表示します。
- 前述の手順を2番目の問合せにも繰り返しますが、この場合、問合せ名は
Q_Item
とし、次のSELECT文を使用します。
SELECT CUSTID, DESCRIP, ITEMTOT, ORDERDATE,
ITEM.ORDID
FROM ORD, PRODUCT, ITEM
WHERE ITEM.ORDID = ORD.ORDID
AND ITEM.PRODID = PRODUCT.PRODID
ORDER BY CUSTID, DESCRIP, ORDERDATE
- データ・ウィザードの「グループ」ページで次の操作を行います。
- 「CUSTID1」をクリックし、「>」ボタンをクリックして、このフィールドを「グループ・フィールド」リストに移動します。
- 「DESCRIP」フィールドにも同じ手順を繰り返します。
図13-2 データ・ウィザードのグループ・ページ
画像の説明
- 「次へ」をクリックします。
- 「合計」ページで「ITEMTOT」をクリックし、「合計」をクリックします。
- 「終了」をクリックして、レポートのデータ・モデルをデータ・モデル・ビューに表示します。表示は次のようになります。
図13-3 2つの問合せを使用するデータ・モデル(サマリーあり)
画像の説明
データ・リンクを追加するには:
- データ・モデル・ビューで、ツール・パレットの「データ・リンク」ツールをクリックします。
- G_CUSTIDグループの「CUSTID」列をクリックし、G_CUSTID1グループの「CUSTID1」列までドラッグします。G_CUSTIDグループの下からQ_Item問合せに線が描かれるのがわかります。CUSTIDとCUSTID1のラベルがこの線の両端に作成され、CUSTIDとCUSTID1が、Q_ItemにG_CUSTIDをリンクさせる列であることを示します。
図13-4 2つの問合せを使用するデータ・モデル(データ・リンクあり)
画像の説明
- 新しいデータ・リンクの線をダブルクリックしてプロパティ・インスペクタを表示し、プロパティの設定を調べます。
- G_CUSTIDは親として識別され、Q_Itemは子として示されます。データに関しては、顧客の識別子と名前でマスター・レコードが構成され、Q_Item問合せで取得された関連品目注文情報に対して1度出力されます。
- 「SQL句」プロパティにWHEREがすでに表示されています。WHEREは、マスター/ディテール・リレーションシップで使用されるデフォルトの句です。WHEREは、HAVINGやSTART WITHなど、他のSQL句に置換できますが、このレポートではWHEREが正しいデフォルトです。
- また、等号(=)が「条件」プロパティに表示されていることにも注意してください。等式(つまりtable1.columnname = table2.columnname)は、データ・リンクによって定義されたマスター/ディテール・リレーションシップのデフォルトの条件です。等号はサポートされている他の条件演算子に置換できます。サポートされている条件演算子を確認するには、このフィールドをクリックしてください。ただし、このレポートではデフォルトの条件が適切です。
13.4 ペーパー・レイアウト・ビューによる2つのレイアウトの作成
データ・モデルが完成したら、レポート出力で表示するデータ・オブジェクトのレイアウトを作成する必要があります。このレポートは、次の2つの別個のレイアウトで構成されます。
- 顧客の購入品を個別に列挙するグループ左レイアウト
- 顧客の購入品の製品別サマリーを示す表形式のレイアウト
2つのレイアウトが必要な場合、最初のレイアウトはレポート・ウィザードで作成し、2番目のレイアウトはレポート・ブロックを挿入して作成する必要があります。このアプローチをとるのは、レポート・ウィザードではレイアウトの内容がすべて上書きされるためです。したがって、レポート・ウィザードで作成できるのは最初のレイアウトのみです。追加のレイアウトは、レポート・ブロックを挿入して作成する必要があります。
最初のレイアウトを作成するには:
- 「ツール」→「レポート・ウィザード」を選択します。
- 「レポート・タイプ」ページで、「ペーパー・レイアウトのみ作成」を選択します。
- 「スタイル」ページで「グループ左」を選択します。
- 「グループ」ページで、データ・モデルのグループがすべて「表示グループ」リストに表示されていることを確認します。
- 「フィールド」ページで、列名と「>」または「<」ボタンをクリックして列を移動し、次の列が「表示フィールド」リストに表示されるようにします。
- NAME
- DESCRIP
- ITEMTOT
- ORDERDATE
図13-5 レポート・ウィザードの「フィールド」ページ
画像の説明
- 「ラベル」ページで、ラベルとフィールド幅を次のように変更します。
表13-1 「ラベル」ページのフィールドの説明
- 「テンプレート」ページの「事前定義テンプレート」で「Beige」を選択し、「終了」をクリックして、ペーパー・デザイン・ビューにレポート出力を表示します。表示は次のようになります。
図13-6 2つのグループ列を使用したグループ左レイアウトのペーパー・デザイン・ビュー
画像の説明
2番目のレイアウトを作成するには:
- ツールバーの「ペーパー・レイアウト」ボタンをクリックして、ペーパー・レイアウト・ビューを表示します。
- ペーパー・レイアウト・ビューで、ツール・パレットの「レポート・ブロック」ツールをクリックします。
- 既存のレイアウトの約0.5インチ(1.5 cm)ほど下を起点にクリックし、ドラッグして縦約2インチ(5 cm)、横4インチ(19 cm)ほどのボックスを描きます。マウス・ボタンを放すと、レポート・ブロック・ウィザードが表示されます。
- レポート・ブロック・ウィザードの「スタイル」ページで、「表形式」を選択して「次へ」をクリックします。
- 「グループ」ページで「G_CUSTID1」をクリックし、「下」をクリックして印刷方向を指定します。このグループを「表示グループ」リストに移動し、「次へ」をクリックします。ここまで終了すると、「表示グループ」リストに表示されるグループはG_CUSTID1のみとなります。
- 「フィールド」ページで、次のフィールドをクリックしてから「>」ボタンをクリックし、それらのフィールドを「表示フィールド」リストに移動して「次へ」をクリックします。
- DESCRIP
- SumITEMTOTPerCUSTID1
ここまで終了すると、「表示フィールド」リストに表示されるフィールドは、DESCRIPおよびSumITEMTOTPerCUSTID1のみとなります。
- 「ラベル」ページで、ラベルを次のように変更し、「次へ」をクリックします。
表13-2 フィールドの説明
- 「テンプレート」ページの「事前定義テンプレート」で「Beige」を選択し、「終了」をクリックして、ペーパー・デザイン・ビューにレポート出力を表示します。
13.5 2つのレイアウトのマージ
2つのレイアウトを作成しただけでは、求める結果の一部しか実現していません。購入品の製品別サマリーは、マスター/ディテール・レイアウトの外側にあります。したがって、このサマリーでは、顧客ごとの製品の購入品ではなく、レポート全体における製品の購入品が集計されます。顧客ごとのサマリーを表示するには、最初のレイアウトの内側に2番目のレイアウトを移動する必要があります。
2番目のレイアウトと最初のレイアウトをマージするには:
- オブジェクト・ナビゲータで、「M_G_CUSTID1_GRPFR1」を選択します。
ヒント
オブジェクト・ナビゲータの上部にある「検索」フィールドに枠の名前を入力するだけで、この枠は見つけやすくなります。
|
- レポート・エディタのタイトル・バーをクリックして、ペーパー・レイアウト・ビューに戻ります。2番目のレイアウト周囲の枠が選択されているのがわかります。
- 矢印キーを使用して最初のレイアウトの「F_DESCRIP」フィールドと揃うように2番目のレイアウトの「F_DESCRIP1」フィールドの位置を変更します。
- ツールバーの「制限オフ」ボタンをクリックします。フレックス・モードがオンになっているのを確認します(デフォルトはオン)。
- オブジェクト・ナビゲータで、「R_G_CUSTID」を選択します。
- レポート・エディタのタイトル・バーをクリックして、ペーパー・レイアウト・ビューに戻ります。今度は、最初のレイアウトのマスター繰返し枠が選択されているのがわかります。
- R_G_CUSTIDの下中央のハンドルをクリックし、約0.5インチ(1.5 cm)ほど下にドラッグします。フレックス・モードがオンになっているので、ドラッグするにつれてR_G_CUSTIDを囲む枠が大きくなります。同様に、上書きされないように2番目のレイアウトが下へ移動します。
- R_G_CUSTIDを選択したまま、「ツール」→「プロパティ・インスペクタ」を選択します。
- 「枠間の垂直間隔」プロパティを「0.25」に変更します。
- オブジェクト・ナビゲータで、「M_G_CUSTID1_GRPFR1」を選択します。
- レポート・エディタのタイトル・バーをクリックして、ペーパー・レイアウト・ビューに戻ります。
- ペーパー・レイアウト・ビューの上部にあるツールバーを使用して、フレックス・モードをオフにします。
- 矢印キーを使用して、M_G_CUSTID1_GRPFR1とその内容を、最初のレイアウトの内側に移動します。
図13-7 2つのレイアウトが1つにマージされたペーパー・レイアウト・ビュー
画像の説明
- レポート・エディタのツールバーで「ペーパー・デザイン」ボタンをクリックして、ペーパー・レイアウト・ビューを表示します。今度は、顧客ごとに集計表が繰り返し表示されているのがわかります。
図13-8 2つのレイアウトがマージされたペーパー・デザイン・ビュー
画像の説明
13.6 フィールドの書式設定
ペーパー・デザイン・ビューで、金額の値が位置合せも金額表示もされていないのがわかります。これらの点は、ペーパー・デザイン・ビューですぐに調整できます。
書式マスクを金額に割り当てるには:
- ペーパー・デザイン・ビューで、[Shift]を押しながら「Itemtot」と「Sum Total」の下に表示されている値をクリックします。すべての値が選択されるので、それらのプロパティを同時に変更できます。
- ツールバーの「通貨」ボタンをクリックします。すべての値の横に通貨記号が表示されます。
- 「10進桁を追加」ボタンを2回クリックします。小数点の右側に少数点以下2桁が追加されます。
- フィールドのサイズを変更します。「Itemtot」フィールドの一番右側にあるハンドルをクリックし、左へ約0.5インチ(1.5 cm)ドラッグします。「Sum Total」フィールドに対しても同じ操作を行います。2つのフィールドの右の境界を揃えます。
- 「右に整列」ボタンをクリックします。すべての値が右詰めになります。
- [Shift]を押しながら「Itemtot」ラベルおよび「Sum Total」ラベルをクリックします。
- 「右に整列」ボタンをクリックします。
- レポートを
masdtmsb_<自分のイニシャル>.rdf
という名前で保存します。
図13-9 グループ左と表形式を結合したレポートの出力
画像の説明
13.7 まとめ
これで、すべての作業が完了しました。グループ左サマリー・レポートは正常に作成されました。この章で学習した内容は次のとおりです。
- データ・リンクが設定された2つの問合せを作成する。
- 2つの別個のレイアウトを作成する。
- 別個のレイアウトを1つに結合する。
- 金額の書式を設定する。
この例で使用されているウィザード、ビュー、プロパティの詳細は、Oracle Reportsオンライン・ヘルプを参照してください。このヘルプは、第3.1.1項「Oracle Reportsオンライン・ヘルプの使用」で説明しているとおり、Reports BuilderまたはOracle Technology Network(OTN)から表示できます。