Oracle Application Expressアプリケーションでは、レポートとは、SQL問合せの結果を書式化したものです。レポートの作成には、3つの方法があります。
組込みウィザードの実行
SQL問合せに基づくレポート・リージョンの定義
SQL問合せを戻すPL/SQLファンクションに基づくレポート・リージョンの作成
このチュートリアルでは、結果がフォーム入力に依存するレポート(パラメータ付きレポート)の作成方法について説明します。この演習では、アプリケーション内のフォーム・アイテムの値を参照するSQL問合せに基づくレポート・リージョンを作成します。
チュートリアルを始める前に、必要なサンプル・データベース・オブジェクトにアクセスできるように、OEHR Sample Objectsアプリケーションをインポートしてインストールする必要があります。詳細は、「サンプル・オブジェクトのロード方法の概要」を参照してください。
内容は次のとおりです。
図3-1に、レポートの結果がユーザー入力に基づくフォームの例を示します。この例では、ユーザーは「Search Employee」フィールドにEmployee IDを入力するか、2つの選択リストから選択を行ってフォームに移入します。このようなレポートをアプリケーション・ビルダーで作成する最も簡単な方法は、SQL問合せに基づくレポート・リージョンを定義することです。
最初に、「アプリケーションの作成」ウィザードを使用してアプリケーションを作成する必要があります。
「アプリケーションの作成」ウィザードでアプリケーションを作成するには、次のステップを実行します。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
「アプリケーション・ビルダー」ホームページが表示されます。
「作成」をクリックします。
「アプリケーションの作成」を選択して「次へ」をクリックします。
「名前」で、次の各項目を指定します。
「名前」に、Parameterized Report
と入力します。
「アプリケーション」で、デフォルトを受け入れます。
「アプリケーションの作成」で、「最初から」を選択します。
「スキーマ」で、OEHR Sample Objectsをインストールしたスキーマを選択します。
「次へ」をクリックします。
次に、空白ページを追加します。
「追加」ページで、次の各項目を指定します。
「ページ・タイプの選択」で、「空白」を選択します。
「ページ名」に、Employees
と入力します。
「ページの追加」をクリックします。
ページ上部のリストに、新しいページが表示されます。
「次へ」をクリックします。
「タブ」で、デフォルトの「1レベルのタブ」を受け入れて「次へ」をクリックします。
「別のアプリケーションから共有コンポーネントのコピー」で、デフォルトの「いいえ」を受け入れて「次へ」をクリックします。
「属性」で、「認証スキーム」、「言語」、「ユーザー言語プリファレンスの派生元」にデフォルトを受け入れて、「次へ」をクリックします。
「ユーザー・インタフェース」で、「テーマ18」を選択して「次へ」をクリックします。
テーマは、アプリケーションのレイアウトおよびスタイルの定義に使用できるテンプレート集です。テーマは随時変更できます。
選択内容を確認して、「作成」をクリックします。
「アプリケーション」ホームページが表示されます。
参照: 『Oracle Database Application Expressユーザーズ・ガイド』の「テーマの管理」 |
次に、リージョンを作成する必要があります。リージョンはページ上の領域で、コンテンツのコンテナとして機能します。この演習では、検索条件となるアイテムを含む検索リージョンと、結果レポートを表示する問合せリージョンの2つのリージョンを作成する必要があります。
この項の内容は次のとおりです。
検索リージョンを作成するには、次のステップを実行します。
「アプリケーション」ホームページで、「1 - Employees」をクリックします。
ページ1のページ定義が表示されます。
図3-2に示すように、「リージョン」で、「作成」アイコンをクリックします。
「リージョン」で、次のステップを実行します。
「このページに追加するリージョン・タイプを指定」で、デフォルトの「HTML」を受け入れ、「次へ」をクリックします。
「作成するHTMLリージョン・コンテナのタイプの選択」で、デフォルトの「HTML」を受け入れ、「次へ」をクリックします。
「表示属性」で、次の各項目を指定します。
「タイトル」に、検索
と入力します。
残りのデフォルト値を受け入れます。
「次へ」をクリックします。
「リージョンの作成」をクリックします。
ページ1のページ定義が表示されます。ページ上部に「リージョンが作成されました。」という確認メッセージが表示されます。
次に、SQL問合せに基づくレポート・リージョンを作成する必要があります。
参照: 『Oracle Database Application Expressユーザーズ・ガイド』の「リージョンの理解」 |
SQL問合せに基づくレポート・リージョンを作成するには、次のステップを実行します。
「リージョン」で、「作成」アイコンをクリックします。
「リージョン」で、「レポート」を選択して「次へ」をクリックします。
「レポート実装」で、「SQLレポート」を選択して「次へ」をクリックします。
「表示属性」で、次のステップを実行します。
「タイトル」に、次のように入力します(必ず最後にピリオドを付けてください)。
Employees &P1_TEXT.
&P1_TEXT
は、リージョンのタイトルを決定する置換文字列です。このアイテムは次の項で作成します。
残りのデフォルト値を受け入れて「次へ」をクリックします。
次のSQL問合せを入力します。
SELECT "OEHR_EMPLOYEES"."EMPLOYEE_ID" "EMPLOYEE_ID", "OEHR_EMPLOYEES"."FIRST_NAME" "FIRST_NAME", "OEHR_EMPLOYEES"."LAST_NAME" "LAST_NAME", "OEHR_EMPLOYEES"."EMAIL" "EMAIL", "OEHR_EMPLOYEES"."PHONE_NUMBER" "PHONE_NUMBER", "OEHR_EMPLOYEES"."HIRE_DATE" "HIRE_DATE", "OEHR_EMPLOYEES"."JOB_ID" "JOB_ID", "OEHR_EMPLOYEES"."SALARY" "SALARY", "OEHR_EMPLOYEES"."COMMISSION_PCT" "COMMISSION_PCT", "OEHR_EMPLOYEES"."MANAGER_ID" "MANAGER_ID", "OEHR_EMPLOYEES"."DEPARTMENT_ID" "DEPARTMENT_ID" FROM "#OWNER#"."OEHR_EMPLOYEES" "OEHR_EMPLOYEES" WHERE (lower(first_name) like '%' || lower(:P1_NAME) || '%' OR lower(last_name) like '%' || lower(:P1_NAME) || '%') AND department_id = decode(:P1_DEPT,'%null%',department_id,:P1_DEPT) AND manager_id = decode(:P1_MGR,'%null%',manager_id,:P1_MGR)
検索条件およびデータベースからの値はいずれも、WHERE
句で小文字に変換されます。これにより、大/小文字を区別せずに、名字および名前の検索が行われます。
「リージョンの作成」をクリックします。
ページ1のページ定義が表示されます。ページ上部に確認メッセージが表示されます。
アイテムは、HTMLリージョンの一部です。アイテムは、テキスト・フィールド、テキスト領域、パスワード、選択リスト、チェック・ボックスなどを示します。前述のSQL問合せでは、P1_NAME
、P1_DEPT
、P1_MGR
およびP1_TEXT
の各アイテムが参照されます。次に、これらのアイテムを作成する必要があります。
この項の内容は次のとおりです。
参照: 『Oracle Database Application Expressユーザーズ・ガイド』の「ページ・レベル・アイテムの理解」 |
テキスト・フィールドP1_NAME
を作成するには、次のステップを実行します。
「アイテム」で、「作成」アイコンをクリックします。
「アイテム・タイプ」で、「テキスト」を選択して「次へ」をクリックします。
「テキスト制御の表示タイプ」で、「テキスト・フィールド」を選択して「次へ」をクリックします。
「表示位置および名前」で、次のステップを実行します。
「アイテム名」に、P1_NAME
と入力します。
「順序」で、デフォルトを受け入れます。
「リージョン」で、「検索」を選択します。
「次へ」をクリックします。
「アイテム属性」で、次のステップを実行します。
「ラベル」に、Search Employee
と入力します。
デフォルトを受け入れます。
「次へ」をクリックします。
デフォルトを受け入れて「次へ」をクリックします。
「アイテムの作成」をクリックします。
次に、P1_TEXT
という名前の非表示テキスト・フィールドを作成します。P1_TEXT
の値は、表示するリージョン・タイトルのベースとして使用されます。
非表示テキスト・フィールドP1_TEXTを作成するには、次のステップを実行します。
「アイテム」で、「作成」アイコンをクリックします。
「アイテム・タイプ」で、「非表示」を選択して「次へ」をクリックします。
「表示位置および名前」で、次のステップを実行します。
「アイテム名」に、P1_TEXT
と入力します。
「順序」で、デフォルトを受け入れます。
「リージョン」で、「Employees &P1_TEXT」を選択します。
「次へ」をクリックします。
残りのデフォルトを受け入れて「次へ」をクリックします。
「アイテムの作成」をクリックします。
次に、P1_DEPT
とP1_MGR
という名前の2つのアイテムを作成する必要があります。これらのアイテムは選択リストとして表示され、2つの名前付き(または共有)LOVに基づくものです。
LOVは、ページ・アイテムの表示に使用される静的または動的な値のセットです。これらのアイテムを作成するには、最初に2つの動的LOVを定義し、次にアイテムP1_DEPT
およびP1_MGR
を作成します。
この項の内容は次のとおりです。
参照: 『Oracle Database Application Expressユーザーズ・ガイド』の「LOVの作成」 |
Department用の名前付きLOVを作成するには、次のステップを実行します。
「LOV」で、「作成」アイコンをクリックします。
「ソース」で、デフォルトの「最初から」を受け入れて「次へ」をクリックします。
「名前およびタイプ」で、次のステップを実行します。
「名前」に、DEPARTMENT
と入力します。
「タイプ」で、「動的」を選択します。
「次へ」をクリックします。
「問合せまたは静的値」で、既存のテキストを次の内容に置き換えます。
SELECT department_name,department_id FROM oehr_departments
「LOVの作成」をクリックします。
ページ定義が表示されます。
Manager用の名前付きLOVを作成するには、次のステップを実行します。
「LOV」で、「作成」アイコンをクリックします。
「ソース」で、デフォルトの「最初から」を受け入れて「次へ」をクリックします。
「名前およびタイプ」で、次のステップを実行します。
「名前」に、MANAGER
と入力します。
「タイプ」で、「動的」を選択します。
「次へ」をクリックします。
「問合せまたは静的値」で、既存のテキストを次の内容に置き換えます。
SELECT y.first_name || ' ' || y.last_name d, y.employee_id r FROM oehr_employees y WHERE y.employee_id IN ( SELECT x.manager_id FROM oehr_employees x)
「LOVの作成」をクリックします。
ページ定義が表示されます。
P1_DEPT
という名前のアイテムを作成するには、次のステップを実行します。
「アイテム」で、「作成」アイコンをクリックします。
「アイテム・タイプ」で、「選択リスト」を選択して「次へ」をクリックします。
「リスト制御タイプの選択」で、「選択リスト」を選択して「次へ」をクリックします。
「表示位置および名前」で、次のステップを実行します。
「アイテム名」に、P1_DEPT
と入力します。
「順序」で、デフォルトを受け入れます。
「リージョン」で、「検索」を選択します。
「次へ」をクリックします。
「LOV」で、次のステップを実行します。
「名前付きLOV」で、「DEPARTMENT」を選択します。
「NULLテキスト」に、次の内容を入力します。
- All -
残りのデフォルトを受け入れて「次へ」をクリックします。
「アイテム属性」で、次のステップを実行します。
「ラベル」に、Department
と入力します。
残りのデフォルトを受け入れて「次へ」をクリックします。
「アイテムの作成」をクリックします。
P1_MGR
という名前のアイテムを作成するには、次のステップを実行します。
「アイテム」で、「作成」アイコンをクリックします。
「アイテム・タイプ」で、「選択リスト」を選択して「次へ」をクリックします。
「リスト制御タイプの選択」で、「選択リスト」を選択して「次へ」をクリックします。
「表示位置および名前」で、次のステップを実行します。
「アイテム名」に、P1_MGR
と入力します。
「順序」で、デフォルトを受け入れます。
「リージョン」で、「検索」を選択します。
「次へ」をクリックします。
「LOV」で、次のステップを実行します。
「名前付きLOV」で、「MANAGER」を選択します。
「NULLテキスト」に、次の内容を入力します。
- All -
残りのデフォルトを受け入れて「次へ」をクリックします。
「アイテム属性」で、次のステップを実行します。
「ラベル」に、Manager
と入力します。
残りのデフォルトを受け入れて「次へ」をクリックします。
「アイテムの作成」をクリックします。
ページの送信は、なぜ必要なのでしょうか。ユーザーが検索条件を入力したら、その検索条件で問合せを再実行するために、ページを送信することが必要になります。ページを送信するために、ボタンを追加します。
ページを送信するボタンを追加するには、次のステップを実行します。
「ボタン」で、「作成」アイコンをクリックします。
「ボタン・リージョン」で、「検索」を選択して「次へ」をクリックします。
「ボタン位置」で、「このリージョン・アイテムで表示されるボタンの作成」を選択して「次へ」をクリックします。
「ボタン名」に、P1_GO
と入力します。
残りのデフォルトを受け入れて「ボタンの作成」をクリックします。
ページ1のページ定義が表示されます。
参照: 『Oracle Database Application Expressユーザーズ・ガイド』の「ボタンの作成」 |
次に、非表示アイテムP1_TEXT
に値を設定するプロセスを作成します。P1_TEXT
の値によって、表示するリージョン・タイトルが決まります。このプロセスを追加することにより、リージョン・タイトルは次のように表示されます。
Employees in department_name
このプロセスを追加しないことを選択した場合、リージョン・ヘッダーは単にEmployees
と表示されます。
Onloadプロセスを追加するには、次のステップを実行します。
「ページ・プロセス」の「プロセス」で、「作成」アイコンをクリックします。
「プロセス・タイプ」で、「PL/SQL」を選択して「次へ」をクリックします。
「プロセス属性」で、次のステップを実行します。
「名前」に、get region title info
と入力します。
残りのデフォルトを受け入れて「次へ」をクリックします。
「プロセス」で、次のSQL問合せを入力します。
DECLARE l_dept varchar2(100); l_mgr varchar2(100); BEGIN :P1_TEXT := null; IF :P1_DEPT != '%null%' THEN SELECT department_name INTO l_dept FROM oehr_departments WHERE department_id = :P1_DEPT; :P1_TEXT := :P1_TEXT || ' in Department ' || l_dept; END IF; IF :P1_MGR != '%null%' THEN SELECT first_name || ' ' || last_name INTO l_mgr FROM oehr_employees WHERE employee_id = :P1_MGR; :P1_TEXT := :P1_TEXT ||' reporting to ' || l_mgr; END IF; END;
「プロセスの作成」をクリックします。
ページ1のページ定義が表示されます。
ページを実行するには、次のステップを実行します。
図3-3に示すように、ページの右上にある「ページの実行」アイコンをクリックします。
ユーザー名およびパスワードを入力するように要求されたら、作業領域のユーザー名およびパスワードを入力して、「ログイン」をクリックします。詳細は、「アプリケーション認証の概要」を参照してください。
「Employees」ページが表示されたら、「Department」リストまたは「Manager」リストから値を選択して「実行」をクリックします。
図3-4に示すように、Employeesレポートが表示されます。