Oracle® Fusion Middleware Oracle Reportsレポート作成のためのユーザーズ・ガイド 11gリリース1(11.1.1) B61376-01 |
|
![]() 戻る |
![]() 次へ |
この項の各トピックでは、データ・モデル・オブジェクトの基本的な概念について説明します。高度な概念は、第2.3項「データ・モデル・オブジェクト」を参照してください。
問合せによって、レポートで使用するデータが取得されます。問合せは、レポート・ウィザードやデータ・ウィザードを使用して作成するか、データ・モデルのツール・パレットの問合せツールを使用して手動で作成します。問合せでは、あらゆるデータ・ソース(Oracle、XML、JDBC、テキストまたはプラッガブル・データ・ソース(PDS)APIからアクセスできる独自のデータ・ソース)からデータを選択できます。また、REFカーソル
を使用して問合せを作成することもできます(第2.6.10項「REFカーソル問合せについて」を参照)。
単一問合せレポート
1つの問合せを使用して作成されたレポートは、最も単純なレポートです。単一問合せレポートで最もよく使用されるフォーマットは、表、メール・ラベル、フォーム・レターおよびブレーク(グループ上またはグループ左)です。1つのレポートに、同じ問合せのデータを何回でも表示できます。それぞれが異なるフォーマットでもかまいません。問合せで取得したデータが、レポート出力に含まれないようにすることもできます。これは、複数の問合せ間にリレーションシップを確立する場合や、計算を実行する場合などに便利です。
次の図は、様々な方法でフォーマットされた1つの問合せのデータを示します。
最後のレポート・スタイル(グループ左ブレーク)では、最初の3つとはまったく異なる問合せを使用してデータを取得しているように見えます。ただし、最後のスタイルで表示されるデータは最初の3つでは非表示で、逆に最初の3つに表示されているデータは最後のスタイルでは非表示となっています。Oracle Reports Builderでは、問合せで取得したデータが、レポート出力に含まれないようにすることもできます。これは、複数の問合せ間にリレーションシップを確立する場合や、計算を実行する場合などに便利です。
複数問合せレポート
1つのレポートに含まれる問合せの数に制限はありません。複数問合せレポートは、次の場合に便利です。
マルチパート非関連型問合せレポートを作成する場合。
マルチパート関連型問合せレポートを作成する場合。
問合せを保守しやすいようにする場合(埋込みSELECT
文や結合がある複雑な問合せを使用するレポートは、複数の単純な問合せをリンクしたものを使用して作成することもできます。多くの場合、後者のほうが他の開発者が理解しやすく保守も容易です)。
1つのレポートで、異なるソート条件で同じデータを2回表示する場合。
複数の問合せを使用するレポートを作成する場合は、問合せどうしを関連付けずにおくことも、データ・リンクを使用して問合せ間のリレーションシップを確立することもできます。
マルチパート非関連型問合せレポート
問合せどうしをリンクしない場合は、マルチパート非関連型問合せレポート(一般にマスター/マスター・レポートと呼ばれます)が作成されます。このようなタイプのレポートには、互いに関連がないデータのリストが表示されます。たとえば、次に示すレポートでは、1つの問合せで製品を選択し、別の問合せで顧客を選択しています。製品と顧客の間には、リレーションシップはありません。
マルチパート関連型問合せレポート
多くのレポートでは、レポートのある部分にフェッチされるデータは、別の部分にフェッチされるデータによって決まります。これは、マスター/ディテールまたは親子関係と呼ばれ、2つの問合せ間のデータ・リンクで定義されます。マスター/ディテール・レポートを実行すると、マスター(または親)問合せの行ごとにディテール(または子)問合せが実行され、一致する行のみが取り出されます。
使用に関する注意
外部問合せのサポートは廃止されました。
レポートで使用する問合せの数は、できるだけ少なくします。一般に、問合せの数が少なければ、レポートの実行が速くなります。複数問合せデータ・モデルのほうが理解しやすいことが多いようですが、単一問合せデータ・モデルのほうが通常は速く実行できます。
問合せはサーバー上で処理されます。
特定のユーザーが作成できるページ数を制限するには、そのユーザーのPRODUCT_PROFILE表にレコードを挿入します。
複数問合せデータ・モデルは、次の場合にのみ使用してください。
親からはサイズが大きい列を多数フェッチし、子からはサイズが小さい列を少数フェッチする場合
問合せのタイプ(SQL問合せなど)では直接サポートされていない処理(多方向外部結合など)を実行する場合
複合ビューがある場合(分散問合せ、GROUP BY問合せなど)
必要がある場合(ただしビューを使用する必要がない、あるいは使用したくない場合)。
理論的説明
単一問合せレポートの場合、Oracle Reports Builderはカーソルを1つのみ開いてすべてのマスター・レコードとディテール・レコードをフェッチします。2つの問合せを使用するレポートの場合、Oracle Reports Builderはディテール問合せのリンクをディテール問合せのWHERE句に付加した後、2つのカーソル(問合せごとに1つ)を開きます。したがって、Oracle Reports Builderは、マスター問合せでフェッチされたマスター・レコードごとにディテール問合せをリバインドして実行し、データをフェッチする必要があります。
関連項目
グループは、レポート内の列を編成するために作成します。グループを使用すると、1つの問合せのデータをいくつかのセットに分けることと、問合せのデータをフィルタすることの2つが可能となります。
問合せを作成すると、その問合せによって選択される列を含むグループが自動的に作成されます。レポートのブレーク・レベルを作成するためのグループを追加するには、データ・モデル・ビューで手動で作成するか、レポート・ウィザードを使用してグループ上レポートまたはグループ左レポートを作成します。
グループは、一部の列を他の列とは異なる方法で処理する場合に作成します。たとえば、次のような場合にグループを作成します。
小計(より細かいレベルでの合計)を作成する場合
レポート出力の中にブレークまたはクロス積を作成する場合
クロス積グループを除き、ユーザーが作成したグループはすべてブレーク・グループと呼ばれます。
ブレーク・グループ
ブレーク・グループは、小計を作成する場合、列を別の方向に印刷する場合、ブレークを作成する場合などに作成します。ブレーク・グループを使用すると、連続するレコードの重複する値は抑制されます。たとえば、レコードごとに部門番号を選択することができますが、重複する部門番号は印刷されません。
クロス積グループ
クロス積グループは、クロス積の演算を行う場合に作成し、一般にマトリックス・レポートを作成するときに使用されます。
グループ・フィルタ
フィルタを利用すると、問合せで選択されたレコードを条件に応じて除去することができます。グループに設定できるフィルタには、次の2種類があります。
Oracle Reports Builderのパッケージ・フィルタ
「最初」は、グループの最初のnレコード(たとえば、最初の5レコード)のみを表示する場合に使用します。
「最後」は、グループの最後のnレコードのみを表示する場合に使用します。
PL/SQLを使用してユーザーが作成したフィルタ
関連項目
データベース列は、問合せによって選択される列を表し、レポートで使用されるデータ値が格納されています。問合せで選択する列ごとに、レポートのデータ・モデルに列が自動的に作成されます。データベース列の値に対してサマリーや計算を実行するには、データ・モデル・ビューで新しい列を手動で作成するか(サマリー列および計算式列の場合)、レポート・ウィザードを使用します(サマリー列の場合)。作成したグループに列を再び割り当てることもできます。
従来の列型(日付、数値、文字など)に加えて、Oracle Reports Builderではグラフィックまたはイメージの列もサポートされています。この列の値は次のいずれかです。
データベースに直接格納されているグラフィックまたはイメージ。このような列のデータ型は、通常LONGまたはLONG RAWで、1つのグラフィックまたはイメージが格納されています。この場合は、列のプロパティでグラフィックのフォーマットを指定します。
ファイル名。このような列の値は、オペレーティング・システムに保存されているファイルへのポインタです。この場合は、列のプロパティで、列の値がファイルの内容であることと(「ファイルからの読込み」)、ファイルのフォーマットを指定します。BMP、CALS、CGM、GIF、JFIF、PCD、PCX、PICT、RAS、TIFFなど、グラフィックまたはイメージの多数のフォーマットがサポートされています。
関連項目
データ・リンク(または親子関係)は、複数の問合せの結果を関連付けます。データ・リンクによって、次のようなリレーションシップを確立できます。
1つの問合せの列と別の問合せの列の間。
1つの問合せのグループと別の問合せのグループの間(これは、子問合せが親のデータのことを知っている必要がある場合に便利です)。
データ・リンクを作成すると、親グループのインスタンスごとに子問合せが1回実行されます。子問合せが実行されるときは、親で使用された主キーの値が使用されます。
データ・リンクがあるレポートを実行すると、データ・リンクはSQL句に変換され(リンクのプロパティ・インスペクタで指定されたとおりに)、子問合せに付加されます。ただし、Oracle Reports Builderによってこの問合せの解析が可能な場合に限ります。
重要な注意: 問合せを解析できない場合は、問合せは変更されません(たとえば、プラッガブル・データ・ソースに対して定義されている問合せでは、データをフェッチする方法をOracle Reports Builderが変更することはできません)。
リンクは一般に等価結合ですが(たとえば、WHERE DEPTNO=DEPTNO
)、SQLの様々な句(WHERE
、HAVING
、START WITH
)と条件でリンクを作成できます。データベースにデータベース制約がある場合は、制約からSQL句と条件を導出するデータ・リンクを作成できます。個々の親問合せと子問合せのSELECT
文はOracle Reports Builderで表示できますが、定義したデータ・リンクによって作成される句を含むSELECT
文を表示することはできません。
例
次に示すレポートには、次のリンクが定義されています。
マスター問合せのデフォルト・グループ(列「Order ID」と列「Customer」を含む)は親グループで、ディテール問合せ(「Item」、「Product」および「Amount」が属している問合せ)は子問合せです。
注意: Oracle Reports Builderでは、列オブジェクトを含む問合せ間のデータ・リンクはサポートされていません。このようなリンクを作成しようとすると、メッセージ・ダイアログ・ボックスが表示され、グループ対グループの問合せをかわりに作成するか(親グループを使用)、操作を取り消すかを選択できます。なんらかのタイプの列と列オブジェクトの間のリンクを作成する場合は、子問合せのSQL文を手動で変更し、マスター問合せの列に基づく適切なWHERE句を追加します。 |
関連項目
クエリー・ビルダーは、アナリストや管理者などのビジネス・プロフェッショナル向けに設計された、使いやすいデータ・アクセス・ツールです。組織のデータベースに格納されている情報に論理的かつ直感的にアクセスする手段として、分析やレポート作成に利用できます。
クエリー・ビルダーは、コンピュータ・プログラミングやデータベースの経験がない専門家でも使用できるよう設計されています。このツールは強力な問合せ機能とSQL(Structured Query Language)文のサポート機能を備えているため、経験豊富なデータベース・ユーザーとプログラマのニーズにも応えます。
クエリー・ビルダーのグラフィカルな「問合せ」ウィンドウで、組織のデータベースからデータを取り出すリクエストを指定できます。データのリクエストは、問合せと呼ばれます。
クエリー・ビルダーでは、SQL SELECT
文を使用すると、作成する問合せのほとんどを定義できます。クエリー・ビルダーでは、作業領域に表示された列に基づいて、適切なSELECT FROM [table.column]
句が自動的に生成されます。
関連項目