Oracle Application Expressでは、チェック・ボックスをアイテムとして作成するか、またはレポート内に作成できます。フォームのチェック・ボックスは、LOVと同様に動作します。アイテムをチェック・ボックスとして定義する場合は、「アイテム属性」ページの「LOV」セクションにチェック・ボックス値を指定する必要があります。既存のファンクションAPEX_ITEM.CHECKBOX
を使用して、レポートにチェック・ボックスを定義します。
このチュートリアルでは、チェック・ボックスを作成する様々な方法を説明し、チェック・ボックスの値を参照して処理する方法について説明します。チュートリアルを始める前に、必要なサンプル・データベース・オブジェクトにアクセスできるように、OEHR Sample Objectsアプリケーションをインポートしてインストールする必要があります。詳細は、「サンプル・オブジェクトのロード方法について」を参照してください。
内容は次のとおりです。
最初に、「アプリケーションの作成」ウィザードを使用してアプリケーションを作成する必要があります。
「アプリケーションの作成」ウィザードでアプリケーションを作成するには、次のステップを実行します。
「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
「アプリケーション・ビルダー」ホームページが表示されます。
「作成」をクリックします。
「アプリケーションの作成」を選択して「次へ」をクリックします。
「名前」で、次のステップを実行します。
「名前」に、Check Boxes
と入力します。
「アプリケーション」で、デフォルトを受け入れます。
「アプリケーションの作成」で、「最初から」を選択します。
「スキーマ」で、OEHR Sample Objectsをインストールしたスキーマを選択します。
「次へ」をクリックします。
次に、ページを追加する必要があります。この演習では、レポートとフォームを追加します。
新しいレポートとフォームを追加するには、次のステップを実行します。
「ページ・タイプの選択」で、「レポートとフォーム」を選択します。
「表名」で、「OEHR_PRODUCT_INFORMATION」を選択します。
「ページの追加」をクリックします。
ページ上部のリストに、新しい2つのページが表示されます。各ページに同じページ名が付いていることに注意してください。次に、ページ名をわかりやすい名前に編集します。
ページ1の名前を編集するには、次のステップを実行します。
図6-1に示すように、ページ上部にあるページ1の横の「OEHR_PRODUCT_INFORMATION」をクリックします。
「ページ名」で、既存のテキストをProduct Report
に置き換えます。
「変更の適用」をクリックします。
ページ2の名前を編集するには、次のステップを実行します。
図6-1に示すページの上部にあるページ2の横の「OEHR_PRODUCT_INFORMATION」をクリックします。
「ページ名」で、既存のテキストを更新フォーム
に置き換えます。
「変更の適用」をクリックします。
「次へ」をクリックします。
「タブ」で、デフォルトの「1レベルのタブ」を受け入れて「次へ」をクリックします。
「別のアプリケーションから共有コンポーネントのコピー」で、デフォルトの「いいえ」を受け入れて「次へ」をクリックします。
「属性」で、「認証スキーム」、「言語」、「ユーザー言語プリファレンスの派生元」にデフォルトを受け入れて、「次へ」をクリックします。
「ユーザー・インタフェース」で、「テーマ2」を選択して「次へ」をクリックします。
選択内容を確認して、「作成」をクリックします。
「アプリケーション」ホームページが表示されます。
次に、アプリケーションを実行して確認を行います。
アプリケーションを実行するには、次のステップを実行します。
図6-2に示す「アプリケーションの実行」アイコンをクリックします。
ユーザー名およびパスワードを入力するように要求されたら、作業領域のユーザー名およびパスワードを入力して、「ログイン」をクリックします。詳細は、「アプリケーション認証について」を参照してください。
アプリケーションが表示されます。レポートには、製品情報を表示する10の列が含まれています。左端の列にある「編集」アイコンをクリックすると、更新フォームにリンクできます。
特定の製品の横にある「編集」アイコンをクリックします。図6-3に示すとおり、更新フォームが表示されます。
作成中のアプリケーションのページ2は、更新フォームです。この演習では、フォームを変更して「Warranty Period」フィールドを非表示にし、新しくチェック・ボックスを作成します。
この項の内容は次のとおりです。
最初に、「表示形式」属性を変更し、「Warranty Period」フィールドを非表示にします。
「Warranty Period」フィールドを非表示にするには、次のステップを実行します。
「開発者」ツールバーで「ページの編集2」をクリックします。
ページ2のページ定義が表示されます。
「アイテム」セクションまでスクロールします。
「アイテム」で、「P2_WARRANTY_PERIOD」を選択します。
「名前」セクションの「表示形式」から、「非表示」を選択します。
「変更の適用」をクリックします。
この演習では、製品の最低価格を定価の75%に自動設定するチェック・ボックスを作成します。
この項の内容は次のとおりです。
ヒント: 簡単にするため、このチュートリアルではアイテム属性を編集してチェック・ボックスを作成します。ただし、名前付きLOVを作成して参照させることをお薦めします。 |
参照: 『Oracle Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド』の「LOVの作成」 |
はじめに、新しいアイテムを追加します。最初はこのアイテムをラジオ・グループとして表示されるように作成し、後からチェック・ボックスに変更します。
ラジオ・グループとして表示されるアイテムを追加するには、次のステップを実行します。
ページ2のページ定義の「アイテム」までスクロールします。
「アイテム」で、図6-4に示す「作成」アイコンをクリックします。
「アイテム・タイプ」で、「ラジオ」を選択して「次へ」をクリックします。
「ラジオ・グループ制御タイプ」で、「ラジオ・グループ」を選択して「次へ」をクリックします。
「表示位置および名前」で、次のステップを実行します。
「アイテム名」に、P2_SET_MIN_PRICE
と入力します。
「順序」に、9.5
と入力します。
この順序により、アイテムの位置がP2_MIN_PRICEアイテム(「Minimum Price」フィールド)の下に指定されます。
「リージョン」で、「更新フォーム」を選択します。
「次へ」をクリックします。
「LOV」で、次のステップを実行します。
「名前付きLOV」で、「名前付きLOVの選択」を選択します。
「NULLオプションの表示」で、「いいえ」を選択します。
「LOV問合せ」に、次のように入力します。
STATIC:Yes;Y,No;N
「次へ」をクリックします。
「アイテム属性」で、次のステップを実行します。
「ラベル」で、既存のテキストをSet Minimum Price
に置き換えます。
残りのデフォルトを受け入れます。
「次へ」をクリックします。
「ソース」で、次のステップを実行します。
「アイテム・ソース」で、「SQL問合せ」を選択します。
「アイテム・ソース値」に、次のように入力します。
SELECT 'Y' FROM DUAL WHERE :P2_LIST_PRICE*0.75=:P2_MIN_PRICE
残りのデフォルトを受け入れて「アイテムの作成」をクリックします。
次に、最低価格を定価の25%引きに設定するページ・プロセスを作成します。
ページ・プロセスを作成するには、次のステップを実行します。
ページ2のページ定義で、「ページ・プロセス」領域に移動します。
「プロセス」で、「作成」アイコンをクリックします。
「プロセス・タイプ」で、「PL/SQL」を選択して「次へ」をクリックします。
「プロセス属性」で、次のステップを実行します。
「名前」に、Update Min Price
と入力します。
「順序」で、デフォルトを受け入れます。
「ポイント」で、「送信時 - 計算および検証の後」を選択します。
「次へ」をクリックします。
「プロセス」で、次のステップを実行します。
次の内容を入力します。
UPDATE oehr_product_information SET MIN_PRICE=(:P2_LIST_PRICE*0.75) WHERE PRODUCT_ID=:P2_PRODUCT_ID;
「次へ」をクリックします。
「メッセージ」で、次のステップを実行します。
「成功メッセージ」に、次のように入力します。
Product successfully updated.
「失敗メッセージ」に、次のように入力します。
Unable to update this product. Contact your system administrator.
「次へ」をクリックします。
「プロセス条件」で、次のステップを実行します。
「条件タイプ」で、「式1のアイテムの値=式2」を選択します。
「式1」に、次のように入力します。
P2_SET_MIN_PRICE
「式2」に、Y
と入力します。
「プロセスの作成」をクリックします。
ページを実行するには、次のステップを実行します。
右上にある「ページの実行」アイコンをクリックします。
ユーザー名およびパスワードを入力するように要求されたら、作業領域のユーザー名およびパスワードを入力して、「ログイン」をクリックします。詳細は、「アプリケーション認証について」を参照してください。
図6-5に示すとおり、更新されたフォームが表示されます。「Warranty Period」フィールドは表示されなくなり、新しく「Set Minimum Price」ラジオ・グループが表示されています。
次に、「Set Minimum Price」ラジオ・グループ(P2_SET_MIN_PRICE)をチェック・ボックスとして表示するように変更します。
P2_SET_MIN_PRICEを編集するには、次のステップを実行します。
「開発者」ツールバーで「ページの編集2」をクリックします。
ページ2のページ定義が表示されます。
「アイテム」で、「P2_SET_MIN_PRICE」をクリックします。
「表示形式」から、「チェックボックス」を選択します。
「ラベル」までスクロールします。「ラベル」で、既存のテキスト(Set Minimum Price
)を削除します。
「デフォルト」までスクロールします。「デフォルト値」に、N
と入力します。
「LOV」で、次のステップを実行します。
「列の数」に、1
と入力します。
「LOV定義」に、次のように入力します。
STATIC: <b> Set Minimum Price</b><br/> (25% Discount on List Price);Y
ページの上部の「変更の適用」をクリックします。
ページを実行するには、右上にある「ページの実行」アイコンをクリックします。図6-6に示すとおり、更新されたフォームが表示されます。新しく追加された「Set Minimum Price」チェック・ボックスを確認してください。
レポート属性を編集して、レポートの表示方法を変更できます。この演習では、ページ1に表示される列の数を変更してから、2つの列の書式を通貨記号が含まれるように変更します。
ページ1のレポート属性を編集するには、次のステップを実行します。
「開発者」ツールバーで「アプリケーション」をクリックします。
「アプリケーション」ホームページが表示されます。
「1 - Product Report」をクリックします。
ページ1のページ定義が表示されます。
図6-7に示すように、「リージョン」で、「レポート」リンクをクリックします。
「レポート属性」ページが表示されます。このページを使用して、レポート・レイアウトを詳細に制御することができます。最初に、表示する列の数を変更します。
次の列の「表示」チェック・ボックスの選択を解除します。
Weight Class
Warranty Period
Supplier ID
次に、List Price列およびMin Price列を編集して、通貨記号が含まれるようにします。
List Price列を編集するには、次のステップを実行します。
List Priceの横にある「編集」アイコンをクリックします。
「数値/日付書式」から、「$5,234.10」を選択します。
ページ上部にある「次へ」(>)アイコンをクリックします。
「次へ」アイコンをクリックすると変更が送信され、次の列「Min Price」の属性が表示されます。
「Min Price」列を編集するには、次のステップを実行します。
「数値/日付書式」から、「$5,234.10」を選択します。
例を選択すると書式が選択されるようになっています。ただし、実際にフィールドに表示される値はOracle数値書式です。
「変更の適用」をクリックします。
右上にある「ページの実行」アイコンをクリックします。
更新されたレポートが表示されます。「Weight Class」、「Warranty Period」および「Supplier ID」列は表示されなくなり、「List Price」と「Min Price」列には通貨記号が含まれています。
次の演習では、「Product Report」ページの検索フィールド(P1_REPORT_SEARCH)を、複数値チェック・ボックスに変更します。このチェック・ボックスに変更することで、ユーザーは製品カテゴリ(obsolete、orderable、planned、under development)を使用してレポートをフィルタ処理できるようになります。
この項の内容は次のとおりです。
検索フィールドをチェック・ボックスに変更するには、次のステップを実行します。
「開発者」ツールバーで「ページの編集1」をクリックします。
ページ1のページ定義が表示されます。
「アイテム」で、「P1_REPORT_SEARCH」をクリックします。
「表示形式」から、「チェックボックス」を選択します。
「ラベル」までスクロールします。「ラベル」で、既存のテキストを削除してProduct Status
に置き換えます。
「ソース」までスクロールします。「ソース値または式」に、次のように入力します。
obsolete:orderable:planned:under development
「LOV」までスクロールします。次のように指定します。
「名前付きLOV」で、デフォルトを受け入れます。
「列の数」に、4
と入力します。
「LOV定義」に、次のように入力します。
SELECT DISTINCT product_status display_value, product_status return_value FROM oehr_product_information ORDER BY 1
注意: 複数値チェック・ボックスを作成するには、LOB問合せで複数の行が戻される必要があることに注意してください。 |
ページの上部の「変更の適用」をクリックします。
ページ1のページ定義が表示されます。
レポートのリージョン定義を編集するには、次のステップを実行します。
「リージョン」で、「Product Report」をクリックします。
リージョン定義が表示されます。
「ソース」までスクロールします。
「ソース」で、WHERE句を次のように変更します。
... WHERE instr(':'||:P1_REPORT_SEARCH||':',product_status)> 0
ページの上部の「変更の適用」をクリックします。
ページ1のページ定義が表示されます。
ページの上部の「変更の適用」をクリックします。
ページ1のページ定義が表示されます。
ページ1のコンテンツは、Product Statusチェック・ボックスによって正しくフィルタ処理されますが、すべてのチェック・ボックスを選択解除すると、すべての製品がレポートに表示されることに注意してください。チェック・ボックスをNULL値にする(選択解除する)と、デフォルト値Yが設定されるため、この動作が発生します。デフォルト値Yによって、チェック・ボックスが有効になります。この動作は、チェック・ボックスの状態を追跡する計算を追加して変更できます。チェック・ボックスの状態を追跡する計算を追加するには、次のステップを実行します。
「ページ・プロセス」の「計算」で、「作成」アイコンをクリックします。
「ページ計算の作成」ウィザードが表示されます。
「アイテムの位置」で、「このページのアイテム」を選択して「次へ」をクリックします。
「アイテム」で、次の各項目を指定します。
「計算アイテム」で、「P1_REPORT_SEARCH」を選択します。
「順序」で、デフォルトを受け入れます。
「計算ポイント」で、「送信後」を選択します。
「計算タイプ」で、「静的割当て」を選択します。
「次へ」をクリックします。
「計算」に、次のように入力します。
次のように入力します。
none(bogus_value)
「次へ」をクリックします。
「条件」で、次のステップを実行します。
「条件タイプ」で、「式1のアイテムの値がNULL」を選択します。
「式1」に、次のように入力します。
P1_REPORT_SEARCH
「作成」をクリックします。
ページ1のページ定義が表示されます。
右上にある「ページの実行」アイコンをクリックします。「Product Status」チェック・ボックスはページ上部に表示されています。
次に、チェック・ボックスの表示値(ラベル)が太字で表示されるように編集します。
チェック・ボックスの表示値(ラベル)が太字で表示されるように編集するには、次のステップを実行します。
ページ1のページ定義に移動します。
「アイテム」で、「P1_REPORT_SEARCH」をクリックします。
「要素」までスクロールします。
「フォーム要素オプション属性」に、次のように入力します。
class="fielddatabold"
「フォーム要素オプション属性」は、チェック・ボックスおよびラジオ・ボタン専用で、Application Engineエンジンによる個のオプションのレンダリング方法を制御します。
「変更の適用」をクリックします。
ページ1のページ定義が表示されます。
次の演習では、「Product Report」の各行に削除チェック・ボックスを追加します。これを行うには、レポート問合せを編集してAPEX_ITEM
パッケージをコールする必要があります。
APEX_ITEM
は、特定のアイテムを動的に生成するために提供されているパッケージです。ここでは、APEX_ITEM.CHECKBOX
を使用して「Product Report」にチェック・ボックスを生成します。ページを送信すると、チェック・ボックスの値がグローバル・パッケージ配列に格納されます。これらの値は、渡されたp_idx
パラメータ値に基づいてPL/SQL変数APEX_APPLICATION.G_F01
からAPEX_APPLICATION.G_F50
を使用して参照できます。
この項の内容は次のとおりです。
参照: 『Oracle Application Express APIリファレンス』の「APEX_ITEM」 |
APEX_ITEM.CHECKBOX
をコールするように問合せを編集するには、次のステップを実行します。
ページ1のページ定義に移動します。
「リージョン」で、「Product Report」をクリックします。
「ソース」までスクロールします。
「リージョン・ソース」で、太字で示されている新しい行を問合せに追加します。
SELECT
"product_id",
apex_item.checkbox(1,product_id) del,
"product_name",
"product_description",
"category_id",
"weight_class",
"warranty_period",
"supplier_id",
"product_status",
"list_price",
"min_price",
"catalog_url"
FROM "oehr_product_information"
WHERE instr(':'||:p1_report_search||':',product_status)> 0
APEX_ITEM
は、特定のアイテムを動的に生成する場合に使用可能なOracle Application Expressで提供されるパッケージです。前述の例で、p_idx
に渡される値は1であることに注意してください。後で、チェック・ボックスの値を参照するには、グローバル変数APEX_APPLICATION.G_F01
を使用します。
Oracle Application Expressによって、列リストの最後に自動的に新しい行が追加されます。次に、DEL
列を移動する必要があります。
ページ上部までスクロールして「レポート属性」タブを選択します。
「列属性」で、DEL
列を検索します。
DEL
列がPRODUCT_ID
のすぐ下になるまで、右側の上矢印をクリックします。(図6-8を参照。)
「変更の適用」をクリックします。
ページ1のページ定義が表示されます。
チェック・ボックス配列値を送信するボタンを追加するには、次のステップを実行します。
ページ1のページ定義に移動します。
「ボタン」で、「作成」アイコンをクリックします。
「ボタン・リージョン」で、「Product Report (1)」を選択して「次へ」をクリックします。
「位置」で、「リージョン位置にボタンの作成」を選択して「次へ」をクリックします。
「ボタン属性」で、次のステップを実行します。
「ボタン名」に、DELETE_PRODUCTS
と入力します。
「ラベル」に、Delete Products
と入力します。
残りのデフォルトを受け入れて「次へ」をクリックします。
「ボタン・テンプレート」で、デフォルトの選択内容を受け入れて「次へ」をクリックします。
「表示プロパティ」で、次のステップを実行します。
「位置」で、「リージョンの上部」を選択します。
残りのデフォルトを受け入れて「次へ」をクリックします。
「ブランチ」で、「1 Product Report」を選択して「ボタンの作成」をクリックします。
「Delete Products」ボタンをクリックすると実行されるプロセスを追加するには、次のステップを実行します。
「ページ・プロセス」の「プロセス」で、「作成」アイコンをクリックします。
「プロセス・タイプ」で、「PL/SQL」を選択して「次へ」をクリックします。
「プロセス属性」で、次のステップを実行します。
「名前」に、Delete Products
と入力します。
「順序」で、デフォルトを受け入れます。
「ポイント」で、「送信時 - 計算および検証の後」を選択します。
「次へ」をクリックします。
次のPL/SQLプロセスを入力して「次へ」をクリックします。
FOR i in 1..APEX_APPLICATION.G_F01.count LOOP DELETE FROM oehr_product_information WHERE product_id = APEX_APPLICATION.G_F01(i); END LOOP;
APEX_ITEM
は、特定のアイテムを動的に生成する場合に使用可能なOracle Application Expressで提供されるパッケージです。ページを送信すると、各列の値がグローバル・パッケージ配列に格納されます。これらの値は、PL/SQL変数APEX_APPLICATION.G_F01
からAPEX_APPLICATION.G_F50
を使用して参照できます。この演習でproduct_id
に渡される値は1です。そのため、グローバル変数APEX_APPLICATION.G_F01
を使用してこの列の値を参照することになります。
「メッセージ」で、次のステップを実行します。
「成功メッセージ」に、次のように入力します。
Product(s) deleted.
「失敗メッセージ」に、次のように入力します。
Unable to delete product(s).
「プロセスの作成」をクリックします。
ページを実行します。
図6-9に示されるように、「Delete Products」ボタンはレポートの上部に表示されることに注意してください。レポートから製品を削除するには、「Del」チェック・ボックスを選択して「Delete Products」をクリックします。
図6-9 「Delete Products」チェック・ボックス付きの「Product Report」