24
動的グラフィックを使用したレポートの作成
この章では、データに基づいて変化するグラフィックを含むレポートについて学習します。この章の手順に従うと、図24-1に示すようなレポート出力を生成できます。
図24-1 動的グラフィック・レポートの出力
画像の説明
概要
Oracle Reportsでは、動的な描画やイメージにリンクしてそれを表示することができます。これにより、グラフィックが変更されると、その変更が実行時にレポート出力に反映されます。
データ・リレーションシップ
- レポートに動的グラフィックを表示する方法の1つは、表示するグラフィック・ファイルの名前を格納するデータベース列を作成する方法です。これはデータ・モデル・ビューで行います。
- データ・モデル・ビューには、最新バージョンのグラフィックのレポートへの取込みを可能にする「ファイルからの読込み」プロパティが用意されています。ファイル名のリストを含む列に「ファイルからの読込み」プロパティを設定すると、Oracle Reportsでは指定したファイル名自体ではなく、そのファイルに格納されているグラフィックが表示されます。Oracle Reportsでは、この設定を行うことで、実行時に最新バージョンのグラフィックをレポートに取り込むことができます。
- レポートに動的グラフィックを挿入するもう1つの方法は、ペーパー・レイアウト・ビューのファイル・リンク・ツールを使用する方法です。このツールを使用して、グラフィックやテキストなどの外部ファイルを格納するボイラープレート・オブジェクトを作成できます。この方法については、この例では説明しません。このツールの詳細はOracle Reportsオンライン・ヘルプを参照してください。
レイアウト
このレポートでは、単純なグループ上レイアウトを使用します。
使用例
この例では、従業員が所属する部署の地域に応じて異なるイメージを表示する、グループ上レイアウトを使用した従業員に関する単純なレポートを作成します。
このサンプル・レポートの作成過程では、次を行います。
動的グラフィックを含むレポートのサンプルを表示するには、サンプル・フォルダdynamicgraphics
を開き、Oracle Reportsのサンプル・レポートdynamicgraphics.rdf
を開きます。このファイルの開き方の詳細は、「はじめに」の「サンプル・レポートへのアクセス」を参照してください。
24.1 この例の前提条件
この例のレポートを作成するには、付属のデータ・ソースとグラフィックに対するアクセス権が必要です。また、このレポート用の画像を含む追加の表をデータベースにインストールする必要があります。
24.1.1 データ・ソースへのアクセスとPictures表のインストール
この章の例を作成するには、Oracle Database付属のSCOTTサンプル・スキーマに対するアクセス権が必要です。このサンプル・スキーマに対するアクセス権の有無が不明のときは、データベース管理者に問い合せてください。
また、データベース管理者に問い合せて、付属ファイルpictures.dmp
を使用してPictures表をインストールする必要があります。
24.1.2 レポートで使用するグラフィック
このレポートを作成する前に、サンプル・レポート・ファイルがあるdynamicgraphics
ディレクトリに、次のイメージがあることを確認します。
NEW_YORK.TIF
BOSTON.TIF
DALLAS.TIF
CHICAGO.TIF
この例ではTIFファイルを使用しますが、GIF、JPEG、BMPなどの他のグラフィック・ファイル・フォーマットを使用することもできます。
次に、これらのイメージがあるディレクトリを含むように、WindowsレジストリのREPORTS_PATHを更新します。REPORTS_PATHは、WindowsレジストリのHKEY_LOCAL_MACHINE¥SOFTWARE¥ORACLE¥HOMEnにあります。このエントリを編集するときは、イメージの完全なディレクトリ・パスを追加します。
UNIXでは、REPORTS_PATH
は$ORACLE_HOME/bin/reports.sh
で設定します。
24.2 2つの問合せをリンクしたデータ・モデルの作成
この項の手順では、マスター/ディテール・リレーションシップに2つの問合せがある単純なデータ・モデルを作成する方法について説明します。
データ・モデルを作成するには:
- イメージのディレクトリ・パスを含むようにREPORTS_PATHを更新したら、Reports Builderを起動します。
- 「ファイル」→「新規」→「レポート」を選択します。
- 「新規レポートを手動で作成」を選択し、「OK」をクリックします。
- 表示されたデータ・モデル・ビューで、ツール・パレットの「SQL問合せ」ツールをクリックし、データ・モデル・ビューの空き領域をクリックして、「SQL問合せ文」ダイアログ・ボックスを表示します。
- 「SQL問合せ文」フィールドに、次のSELECT文を入力します。
SELECT ALL DEPT.DEPTNO, DEPT.DNAME, PICTURES.PICTURE
FROM DEPT, PICTURES
WHERE (DEPT.DEPTNO = PICTURES.DEPTNO)
ORDER BY DEPT.DEPTNO
注意
この問合せは、次のいずれかの方法で入力できます。
- 提供されているテキスト・ファイル
dynamicgraphics_code.txt からコードをコピーして「SQL問合せ文」フィールドに貼り付けます。
- 「クエリー・ビルダー」をクリックして、コードを入力せずに問合せを作成します。
- 「SQL問合せ文」フィールドにコードを入力します。
Pictures表がサンプル・スキーマにインストールされていない場合、この問合せを作成できません。
|
- 「OK」をクリックします。
注意
データベースにまだ接続していない場合は、「クエリー・ビルダー」または「次へ」をクリックしたときに、データベースに接続するよう求められます。この例に該当するスキーマが含まれるデータベースに接続してください。第24.1項「この例の前提条件」に、この例のサンプル・スキーマの要件に関する説明があります。
|
- 問合せがデータ・モデル・ビューに表示されたら、問合せ名(Q_1)を右クリックして、ポップアップ・メニューから「プロパティ・インスペクタ」を選択してプロパティ・インスペクタを表示し、次のプロパティを設定します。
- 「一般情報」で、「名前」プロパティを「Q_PICTURES」に設定します。
- データ・モデル・ビューで、Q_PICTURES問合せの「pictures」列をダブルクリックしてプロパティ・インスペクタを表示し、プロパティを設定します。
- 「列」で「ファイルからの読込み」プロパティを「はい」に設定し、「ファイル形式」プロパティを「イメージ」に設定します。
- データ・モデル・ビューで、前述の手順に従って、Q_EMPLOYEESという名前のもう1つの問合せを次のコードで作成します。
SELECT ALL EMP.DEPTNO, EMP.ENAME, EMP.JOB, EMP.HIREDATE
FROM EMP
ORDER BY DEPTNO, ENAME
注意
この問合せは、次のいずれかの方法で入力できます。
- 提供されているテキスト・ファイル
dynamicgraphics_code.txt からコードをコピーして「SQL問合せ文」フィールドに貼り付けます。
- 「クエリー・ビルダー」をクリックして、コードを入力せずに問合せを作成します。
- 「SQL問合せ文」フィールドにコードを入力します。
|
- データ・モデル・ビューで、ツール・パレットの「データ・リンク」ツールをクリックします。
- Q_PICTURESのDEPTNOとQ_EMPLOYEESのDEPTNO1の間でリンクをドラッグします。作成したデータ・モデルは次のようになります。
図24-2 動的グラフィック・レポートのデータ・モデル・ビュー
画像の説明
- レポートを
dynamicgraphics_<自分のイニシャル>.rdf
という名前で保存します。
24.3 レポートのレイアウトの作成
この項では、レポート・ウィザードを使用してレポートのデフォルト・レイアウトを作成します。次に、グラフィックに必要なすべてのレイアウト・オブジェクトを変更します。
24.3.1 レポート・ウィザードを使用したレポートの初期レイアウトの作成
初期レイアウトを作成するには:
- ペーパー・レイアウト・ビューで、「ツール」→「レポート・ウィザード」を選択してレポート・ウィザードを表示します。
- レポート・ウィザードの「レポート・タイプ」ページで、「ペーパー・レイアウトのみ作成」を選択します。
- 「スタイル」ページで「グループ上」を選択します。
- 「グループ」ページで、「使用可能グループ」リストで次のグループをクリックし、「下」をクリックして印刷方向を指定して、これらのグループを「表示グループ」リストに移動します。
- 「フィールド」ページで次の操作を行います。
- 「>>」ボタンをクリックして、すべてのフィールドを「表示フィールド」リストに移動します。
- 「表示フィールド」リストで「deptno」をクリックし、「<」ボタンをクリックしてこのフィールドを「使用可能フィールド」リストに戻します。
- 「DEPTNO1」フィールドにも同じ手順を繰り返します。
- 「ラベル」ページで、「Picture」フィールドのラベルを削除します。
- 「テンプレート」ページで、「テンプレートなし」を選択し、「終了」をクリックして、ペーパー・レイアウト・ビューにレポート・レイアウトを表示します。表示は次のようになります。
図24-3 動的グラフィック・レポートの最初のペーパー・レイアウト・ビュー
画像の説明
- レポートを
dynamicgraphics_<自分のイニシャル>.rdf
という名前で保存します。
24.3.2 レポートのレイアウトの変更
レポートの初期レイアウトを作成したら、レイアウト・オブジェクトを再調整して、動的グラフィックを追加できます。
レイアウトを変更するには:
- ペーパー・レイアウト・ビューで、キーボードの[Ctrl]を押しながら[A]を押して、すべてのオブジェクトを選択します。
- キーボードの矢印キーを使用して、すべてのオブジェクトを0.5インチ(1.5 cm)右に移動します。
- ペーパー・レイアウト・ビューで、定規の7インチ(18 cm)の箇所まで見えるように画面を広げます。
- オブジェクト・ナビゲータで、この例のレポート名を見つけて、「ペーパー・レイアウト」→「メイン・セクション」→「ボディ」→「M_G_DEPTNO_GRPFR」にナビゲートします。
- 「R_G_DEPTNO」をクリックします。ペーパー・レイアウト・ビューでも、R_G_DEPTNO繰返し枠が選択されます。
- R_G_DEPTNO繰返し枠を選択した状態で、枠の右側をクリックし、6.5インチ(16.5 cm)の位置までドラッグします。これで繰返し枠は上部の定規で3.0インチ(7.5 cm)のマークから6.5インチ(16.5 cm)のマークまで拡大されました。
- 次に、枠の下部をクリックして、2.0インチ(5 cm)の位置までドラッグします。位置は左側の定規で確認できます。これで繰返し枠は、左側の定規の0.5インチ(1.3 cm)のマークから2.0インチ(5 cm)のマークまで拡大されました。
図24-4 レイアウト変更後のペーパー・レイアウト・ビュー
画像の説明
- ツールバーの「フレックス・オフ」ボタンをクリックします。
- 「Picture」フィールドを右側に移動して、縦横約1.5インチ(縦横4 cm)に拡大します。
- オブジェクト・ナビゲータで、「ペーパー・レイアウト」→「メイン・セクション」→「ボディ」にナビゲートし、「M_G_DEPTNO_GRPFR」枠を選択します。
- ペーパー・レイアウト・ビューで、その枠の右側の境界線をクリックして、「Picture」フィールドが含まれるまで右にドラッグします。
- 「R_G_DEPTNO」繰返し枠に対しても同じ操作を繰り返します。
- 「R_G_DEPTNO」を選択した状態で、「ツール」→「プロパティ・インスペクタ」を選択し、プロパティ・インスペクタを表示します。
- 「繰返し枠」で、「ページ当りの最大レコード数」プロパティを「1」に設定します。
注意
ページ当りの最大レコード数を1に設定することによって、レポートで1ページ当り1つの地域のみ表示されるようになります。
|
- レポートを
dynamicgraphics_<自分のイニシャル>.rdf
という名前で保存します。
24.4 ペーパーを対象としたレポートの実行
レポートを実行するには:
- ツールバーの「ペーパー・レイアウトを実行」ボタンをクリックします。
次のようなレポートがペーパー・デザイン・ビューに表示されます。
図24-5 最終的な動的グラフィック・レポート
画像の説明
- ツールバーの「次のページ」ボタンをクリックして、レポートの他のページで、部門の場所に応じて異なるグラフィックが表示されることを確認します。
注意
「Picture」フィールドに表示されるイメージは、地域ごとに更新されます。
|
24.5 まとめ
これで、すべての作業が完了しました。レポート内のデータに応じてグラフィックを表示するレポートは、正常に作成されました。この章で学習した内容は次のとおりです。
- 2つの問合せを手動で作成してそれらをリンクする。
- 「ファイルからの読込み」プロパティを使用して、動的グラフィックを表示する。
- レポート・ウィザードでデフォルト・レイアウトを作成する。
- ペーパー・レイアウトを変更して必要な情報を表示する。
この例で使用されているウィザード、ビュー、プロパティの詳細は、Oracle Reportsオンライン・ヘルプを参照してください。このヘルプは、第3.1.1項「Oracle Reportsオンライン・ヘルプの使用」で説明しているとおり、Reports BuilderまたはOracle Technology Network(OTN)から表示できます。