ヘッダーをスキップ
Oracle Database Application Express 2日で開発者ガイド
リリース2.2
B31495-01
  目次
目次

戻る
戻る
 
次へ
次へ
 

6 チェック・ボックスの使用方法

Oracle Application Expressでは、チェック・ボックスをフォーム要素として作成するか、またはレポート内に作成できます。 フォームのチェック・ボックスは、LOVと同様に動作します。 アイテムをチェック・ボックスとして定義する場合は、「アイテム属性」ページの「LOV」セクションにチェック・ボックス値を指定する必要があります。 既存のファンクションAPEX_ITEM.CHECKBOXを使用して、レポートにチェック・ボックスを定義します。

このチュートリアルでは、デモンストレーション・アプリケーション(サンプル・アプリケーション)内にチェック・ボックスを作成する様な方法、およびチェック・ボックスの値を参照して処理する方法について説明します。 チュートリアルを始める前に、サンプル・アプリケーションがインストールされていることを確認します。 「サンプル・アプリケーションのインストールの確認」を参照してください。

内容は次のとおりです。

フォームへの単一値チェック・ボックスの作成

図 6-1に示すように、「Add/Modify Products」フォームによってユーザーは新しい製品をデータベースに追加できます。

図6-1 サンプル・アプリケーションの「Add/Modify Products」

図6-1の説明が続きます。
「図6-1 サンプル・アプリケーションの「Add/Modify Products」」の説明

次の演習では、「Product Available」ラジオ・グループをチェック・ボックスに変更した後、ラベルの位置を変更します。

このセクションの内容は次のとおりです。

チェック・ボックスへの「Product Available」ラジオ・グループの変更

「Product Available」ラジオ・グループをチェック・ボックスに変更するには、次のステップを実行します。

  1. 「作業領域」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。

  2. サンプル・アプリケーション」をクリックします。

    「アプリケーション」ホームページが表示されます。

  3. ページ6のページ定義にナビゲートします。

    1. 「ページ」フィールドに、6と入力して「実行」をクリックします。

    2. 「6 - Add/Modify」アイコンをクリックします。

    ページ6のページ定義が表示されます。 「Product Available」ラジオ・グループは、P6_PRODUCT_AVAILというアイテムです。

  4. 「アイテム」で、「P6_PRODUCT_AVAIL」をクリックします。

  5. 「名前」セクションの「表示形式」リストから、「チェックボックス」を選択します。

  6. 「LOV」までスクロールします。

  7. 「LOV」で、次のステップを実行します。

    1. 「名前付きLOV」で、「- 名前付きLOVの選択 -」を選択します。

    2. 「LOV定義」で、次のように入力します。

      STATIC:;Y
      
      

      このLOVは、静的リストです。 ここでは、表示値はNULLで、戻り値はYです。表示値が指定された場合はチェック・ボックスの左側に表示され、ラベルのかわりに使用できます。

      静的LOVの詳細は、『Oracle Database Application Expressユーザーズ・ガイド』の「LOVの作成」を参照してください。

  8. ページ上部の「変更の適用」をクリックします。

    ページ定義が表示されます。

  9. 右上にある「ページの実行」アイコンをクリックします。 (図6-2を参照。)

    図6-2 「ページの実行」アイコン

    図6-2の説明が続きます。
    「図6-2「ページの実行」アイコン」の説明

  10. ユーザー名とパスワードを入力するように要求されたら、次のステップを実行します。

    1. 「ユーザー名」に、demoまたはadminのいずれかを入力します。

    2. 「パスワード」に、作業領域名を小文字で入力します。

    3. ログイン」をクリックします。

      「サンプル・アプリケーション」が表示されます。

    4. ページ下部の「開発者」ツールバーから「ページ1の編集」を選択します。

      ページ定義が表示されます。

    5. 「ページ」フィールドに、6と入力して「実行」をクリックします。

    6. ページの実行」アイコンをクリックします。

図6-3に示すとおり、「Product Available」アイテムがチェック・ボックスとして表示されます。

図6-3 チェック・ボックスとしての「Product Available」アイテム

図6-3の説明が続きます。
「図6-3 チェック・ボックスとしての「Product Available」アイテム」の説明

チェック・ボックスの位置の変更

次に、チェック・ボックスのラベル「Product Available」をチェック・ボックスの右側に移動します。

チェック・ボックスのラベルの位置を変更するには、次のステップを実行します。

  1. 「開発者」ツールバーから「ページ6の編集」をクリックします。

    ページ定義が表示されます。

  2. 「アイテム」で、「P6_PRODUCT_AVAIL」を選択します。

  3. 「ラベル」までスクロールします。

  4. 「ラベル」で、テキストProduct Availableを削除します。

  5. 「LOV」までスクロールします。

  6. 「LOV」で、LOV定義を次のように変更します。

    STATIC:Product Available;Y
    
    
  7. ページ上部の「変更の適用」をクリックします。

  8. ページの実行」アイコンをクリックします。

図6-4に示すとおり、「Product Available」ラベルがチェック・ボックスの右に表示されます。

図6-4 右に移動された「Product Available」ラベル

図6-4の説明が続きます。
「図6-4 右に移動された「Product Available」ラベル」の説明

ラベルを削除したり、LOVに表示値を追加すると、Application Expressエンジンによって、まずチェック・ボックス、次に表示値「Product Available」がレンダリングされます。

デフォルトのチェック・ボックスの動作の変更

特定の環境では、チェック・ボックスをデフォルトで有効にする必要がある場合があります。 これは、チェック・ボックス・アイテムの「デフォルト値」属性を設定して行うことができます。 この方法には、無効にする場合に追加のステップを実行する必要があるという欠点があります。 「Product Available」チェック・ボックスは、その定義方法のため、実際には無効にできません。

次に例を示します。

  1. サンプル・アプリケーションの「Add/Modify Products」ページから、「ホーム」タブをクリックします。

  2. 「タスク」リストから「Add a New Product」をクリックします。

    「Add/Modify Product」ページが表示されます。

  3. 「Add/Modify Products」ページで、次のステップを実行します。

    1. 必須フィールド(アスタリスク付きのフィールド)に入力します。

    2. Product Available」チェック・ボックスを選択解除します。

    3. 作成」をクリックします。

  4. 「Product Available」チェック・ボックスが選択されてないことを確認して、「変更の適用」をクリックします。

    「Products」ページが表示されます。

  5. 追加した製品の「編集」アイコンを選択します。

    「Product Available」チェック・ボックスが、製品の追加時に2回無効にしたにもかかわらず、有効になっていることに注意してください。 この動作の原因は次のとおりです。

    • 「Product Available」チェック・ボックスに、デフォルト値Yが指定されている。

    • 「Product Available」がNULLの場合、チェック・ボックスを有効にするデフォルト値Yが指定される。

計算の追加

この動作は、チェック・ボックスの状態を追跡する計算を追加して変更できます。

チェック・ボックスの状態を追跡する計算を追加するには、次のステップを実行します。

  1. 「開発者」ツールバーから「ページ6の編集」をクリックします。

  2. 「ページ・プロセス」の「計算」で、「作成」アイコンをクリックします。

  3. 「位置」で、「このページのアイテム」を選択して「次へ」をクリックします。

  4. 「アイテム」で、次のステップを実行します。

    1. 「計算アイテム」で、「P6_PRODUCT_AVAIL」を選択します。

    2. 「計算ポイント」で、「送信後」を選択します。

    3. 「計算タイプ」で、「静的割当て」を選択します。

    4. 次へ」をクリックします。

  5. 「計算」で、次のように入力し、「次へ」をクリックします。

    N
    
    

    注意:

    このアイテムはチェック・ボックスであるため、アイテムの値をYまたはNULL以外に設定します。

    次に、計算を実行するタイミングを制御する条件を作成します。

  6. 「条件」で、次のステップを実行します。

    1. 「条件タイプ」で、「式1のアイテムの値がNULL」を選択します。

    2. 「式1」に、次のように入力します。

      P6_PRODUCT_AVAIL
      
      

      これらの設定によって、この計算は、チェック・ボックス・アイテムP6_PRODUCT_AVAILの値がNULLの場合にのみ実行されます。

  7. 作成」をクリックします。

新しい計算をテストするには、次のステップを実行します。

  1. ページの実行」アイコンをクリックします。

    「サンプル・アプリケーション」が表示されます。

  2. 「ホーム」タブをクリックします。

  3. 「タスク」リストから「Add a New Product」を選択します。

    「Add/Modify Product」ページが表示されます。

  4. 「Add/Modify Product」ページで、次のステップを実行します。

    1. 必須フィールドに入力します。

    2. Product Available」チェック・ボックスを選択解除します。

    3. 作成」をクリックします。

  5. 「Product Available」チェック・ボックスが選択されてないことを確認して、「変更の適用」をクリックします。

    「Products」ページが表示されます。

  6. 追加した製品の「編集」アイコンを選択します。

    「Product Available」チェック・ボックスは選択されていないことに注意してください。

コンテンツをフィルタ処理するための複数値チェック・ボックスの作成

次の演習では、「Product」ページに複数値チェック・ボックスを作成します。 ユーザーは、このチェック・ボックスによって、カテゴリを選択してレポートをフィルタ処理できるようになります。

このセクションの内容は次のとおりです。

複数値チェック・ボックスの作成

複数値チェック・ボックスを作成するには、次のステップを実行します。

  1. ページ3のページ定義にナビゲートします。

    1. 「開発者」ツールバーの「ページの編集」リンクをクリックします。

    2. 「ページ」フィールドに、3と入力して「実行」をクリックします。

      ページ3のページ定義が表示されます。

  2. 「アイテム」で、「作成」アイコンをクリックします。

  3. 「アイテム・タイプ」で、「チェックボックス」を選択して「次へ」をクリックします。

  4. 「表示位置および名前」で、次のステップを実行します。

    1. 「アイテム名」に、P3_SHOWと入力します。

    2. 「順序」で、デフォルトを受け入れます。

    3. 「リージョン」で、「Products (1) 10」を選択します。

    4. 次へ」をクリックします。

  5. 「LOV」で、次のステップを実行します。

    1. 「名前付きLOV」で、デフォルトを受け入れます。

    2. 「NULLオプションの表示」で、「いいえ」を選択します。

    3. 「LOV問合せ」に、次のように入力します。

      SELECT distinct category a, category b
      FROM demo_product_info
      ORDER BY 1
      
      

      注意:

      複数値チェック・ボックスを作成するには、LOB問合せで複数の行が戻される必要があることに注意してください。

    4. 次へ」をクリックします。

  6. 「アイテム属性」で、次のステップを実行します。

    1. 「ラベル」で、「消去」をクリックしてデフォルトのテキストを削除します。

    2. 残りのデフォルト値を受け入れ、「次へ」をクリックします。

  7. 「ソース」で、次のステップを実行します。

    1. 「アイテム・ソース」で、「静的割当て」(値がソース属性に等しい)を選択します。

    2. 「アイテム・ソース値」に、次のように入力します。

      Audio:Computer:Phones:Video
      
      

      複数値チェック・ボックスを送信する場合、アイテムの値はコロンで区切られた文字列にします。 この文字列をソースとして使用すると、Application Expressエンジンによってページのレンダリングが行われる際にすべてのボックスが選択されます。

    3. アイテムの作成」をクリックします。

      ページ3のページ定義が表示されます。

チェック・ボックスの表示値の変更

次に、チェック・ボックスの表示値(ラベル)が太字で表示されるように編集します。

チェック・ボックスの表示値(ラベル)が太字で表示されるように編集するには、次のステップを実行します。

  1. ページ3のページ定義にナビゲートします。

  2. 「アイテム」で、「P3_SHOW」をクリックします。

  3. 「要素」までスクロールします。

  4. 「フォーム要素オプション属性」に、次のように入力します。

    class="fielddatabold"
    
    

    「フォーム要素オプション属性」は、チェック・ボックスおよびラジオ・ボタン専用で、Application Engineエンジンによる個のオプションのレンダリング方法を制御します。

  5. 変更の適用」をクリックします。

    ページ3のページ定義が表示されます。

チェック・ボックスの表示位置の変更

次に、カテゴリ・チェック・ボックスがレポートの上に表示されるように属性を編集します。 これを行うには、P3_SHOWに関連付けられたリージョンの「表示ポイント」属性を変更する必要があります。

「Products」リージョンの表示ポイントを変更するには、次のステップを実行します。

  1. ページ3のページ定義にナビゲートします。

  2. 「リージョン」で、「Products」をクリックします。

  3. 「ユーザー・インタフェース」セクションの「表示ポイント」から、「ページ・テンプレート・ボディ (3. リージョン・コンテンツより上のアイテム)」を選択します。

  4. 変更の適用」をクリックします。

    ページ3のページ定義が表示されます。

ページ3を実行すると、カテゴリ・チェック・ボックスは縦に並んで表示されます。 次に、カテゴリ・チェック・ボックスが横に並んで表示されるように表示を変更する必要があります。

カテゴリ・チェック・ボックスを横に並べて表示するには、次のステップを実行します。

  1. ページ3のページ定義にナビゲートします。

  2. 「アイテム」で、「P3_SHOW」をクリックします。

  3. 「LOV」までスクロールします。

  4. 「列の数」に、4と入力します。

  5. ページ上部の「変更の適用」をクリックします。

    ページ3のページ定義が表示されます。

  6. 右上にある「ページの実行」アイコンをクリックします。

    図 6-5に示すように、チェック・ボックスがページの上部に横に並んで表示されていることに注意してください。

    図6-5 ページ上部に移動されたカテゴリ・チェック・ボックス

    図6-5の説明が続きます。
    「図6-5 ページ上部に移動されたカテゴリ・チェック・ボックス」の説明

ページを送信する「Go」ボタンの作成

製品カテゴリ・チェック・ボックスでレポートを生成するには、ページを送信する必要があります。

ページを送信するボタンを作成するには、次のステップを実行します。

  1. ページ3のページ定義にナビゲートします。

  2. 「ボタン」で、「作成」アイコンをクリックします。

  3. 「ボタン・リージョン」で、「Products (1) 10」を選択して「次へ」をクリックします。

  4. 「位置」で、「このリージョン・アイテムで表示されるボタンの作成」を選択して「次へ」をクリックします。

  5. 「ボタン属性」で、次のステップを実行します。

    1. 「ボタン名」に、P3_GOと入力します。

    2. 「順序」に、40と入力します。

    3. 残りのデフォルトを受け入れて「ボタンの作成」をクリックします。

次に、ユーザーが「Go」ボタンをクリックした後に移動する位置をApplication Expressエンジンに通知するブランチを作成する必要があります。

ページ3へのブランチを作成するには、次のステップを実行します。

  1. ページ3のページ定義にナビゲートします。

  2. 「ページ・プロセス」の「ブランチ」で、「作成」アイコンをクリックします。

  3. 「ブランチ・ポイント」および「ブランチ・タイプ」で、デフォルトを受け入れて「次へ」をクリックします。

  4. 「ページ」で、「3」を選択して、残りのデフォルト値を受け入れ、「次へ」をクリックします。

    「ブランチの作成」ページが表示されます。

  5. ブランチの作成」をクリックします。

製品カテゴリ・チェック・ボックスに基づいてレポートを生成するには、レポート問合せを変更する必要があります。

レポート問合せを編集するには、次のステップを実行します。

  1. 「リージョン」で、「Products」をクリックします。

  2. 「ソース」までスクロールします。

  3. 「リージョン・ソース」で、WHERE句を検索します。

  4. WHERE句を次のように変更します。

    WHERE p.image_id = i.image_id (+)AND instr(':'||:P3_SHOW||':',category) > 0
    
    
  5. ページ上部の「変更の適用」をクリックします。

  6. ページを実行します。

図6-6に示すとおり、カテゴリ・チェック・ボックスを選択し、ページの上部にある「Go」をクリックして、レポートをフィルタ処理できることに注意してください。

図6-6 カテゴリ・チェック・ボックスおよび「Go」ボタンが表示された「Products」ページ

図6-6の説明が続きます。
「図6-6 カテゴリ・チェック・ボックスおよび「Go」ボタンが表示された「Products」ページ」の説明

デフォルトのチェック・ボックスの動作の変更

ページ3のコンテンツは、カテゴリ・チェック・ボックスで正常にフィルタ処理されますが、すべてのチェック・ボックスを選択解除すると、すべての製品がレポートされることに注意してください。 チェック・ボックスをNULL値にする(選択解除する)と、デフォルト値Yが設定されるため、この動作が発生します。デフォルト値Yによって、チェック・ボックスが有効になります。

この動作は、チェック・ボックスの状態を追跡する計算を追加して変更できます。

チェック・ボックスの状態を追跡する計算を追加するには、次のステップを実行します。

  1. ページ3のページ定義にナビゲートします。

  2. 「ページ・プロセス」の「計算」で、「作成」アイコンをクリックします。

  3. 「アイテムの位置」で、「このページのアイテム」を選択して「次へ」をクリックします。

  4. 「アイテム」で、次のステップを実行します。

    1. 「計算アイテム」で、「P3_SHOW」を選択します。

    2. 「順序」で、デフォルトを受け入れます。

    3. 「計算ポイント」で、「送信後」を選択します。

    4. 「計算タイプ」で、「静的割当て」を選択します。

    5. 次へ」をクリックします。

  5. 「計算」に、次のように入力します。

    1. 「計算」で、次のように入力します。

      none(bogus_value)
      
      
    2. 次へ」をクリックします。


    注意:

    アイテムの静的割当てには、YまたはNULL以外の値を指定する必要がありあます。

    次に、計算を実行するタイミングを制御する条件を作成します。

  6. 「条件」で、次のステップを実行します。

    1. 「条件タイプ」で、「式1のアイテムの値がNULL」を選択します。

    2. 「式1」に、次のように入力します。

      P3_SHOW
      
      

      これらの設定によって、この計算は、チェック・ボックス・アイテムP3_SHOWの値がNULLの場合にのみ実行されます。

  7. 作成」をクリックします。

ページを再度実行して、すべてのカテゴリ・チェック・ボックスを選択解除し、「Go」をクリックします。 今回は、レポートに予期した結果(戻されたレコードがない)が示されます。

レポートの各行へのチェック・ボックスの追加

次の演習では、「Product」ページの各行に削除チェック・ボックスを追加します。 これを行うには、レポート問合せを編集してAPEX_ITEMパッケージをコールする必要があります。

APEX_ITEMは、特定のフォーム要素を動的に生成するために提供されているパッケージです。 ここでは、APEX_ITEM.CHECKBOXを使用して「Products」レポートにチェック・ボックスを生成します。 ページを送信すると、チェック・ボックスの値がグローバル・パッケージ配列に格納されます。 これらの値は、渡されたp_idxパラメータ値に基づいてPL/SQL変数APEX_APPLICATION.G_F01からAPEX_APPLICATION.G_F50を使用して参照できます。

このセクションの内容は次のとおりです。


参照:

『Oracle Database Application Expressユーザーズ・ガイド』の「APEX_ITEM」

APEX_ITEM.CHECKBOXのコール

APEX_ITEM.CHECKBOXをコールするように問合せを編集するには、次のステップを実行します。

  1. ページ3のページ定義にナビゲートします。

  2. 「リージョン」で、「Products」をクリックします。

  3. 「ソース」までスクロールします。

  4. 「リージョン・ソース」で、太字で示されている新しい行を問合せに追加します。

    SELECT p.product_id edit_product, p.product_id view_product_id,
    apex_item.checkbox(1,p.product_id) del, 
    p.product_name, p.product_description, p.category, p.product_avail, p.list_price,
    '<img src="p?n=' || nvl(i.file_object_id,0) || '" height="50" width="50" />' img
    FROM demo_product_info p, demo_images i
    WHERE p.image_id = i.image_id (+)
    AND instr(':'||:P3_SHOW||':',category) > 0
    
    

    APEX_ITEMは、特定のフォーム要素を動的に生成する場合に使用可能なOracle Application Expressで提供されるパッケージです。 前述の例で、p_idxに渡される値は1であることに注意してください。後で、チェック・ボックスの値を参照するには、グローバル変数APEX_APPLICATION.G_F01を使用します。

  5. ページ上部までスクロールして「レポート属性」タブを選択します。

  6. 「列属性」で、DEL列を検索します。

  7. DEL列がVIEW_PRODUCT_IDのすぐ下になるまで、右側の矢印をクリックします。 (図6-7を参照。)

    図6-7 「レポート列属性」ページ

    図6-7の説明が続きます。
    「図6-7 「レポート列属性」ページ」の説明

  8. 変更の適用」をクリックします。

    ページ3のページ定義が表示されます。

チェック・ボックス配列値を送信するボタンの追加

チェック・ボックス配列値を送信するボタンを追加するには、次のステップを実行します。

  1. ページ3のページ定義にナビゲートします。

  2. 「ボタン」で、「作成」アイコンをクリックします。

  3. 「ボタン・リージョン」で、「Products 1 (10)」を選択して「次へ」をクリックします。

  4. 「位置」で、「リージョン位置にボタンの作成」を選択して「次へ」をクリックします。

  5. 「ボタン属性」で、次のステップを実行します。

    1. 「ボタン名」で、「DELETE_PRODUCTS」を選択します。

    2. 「ラベル」に、Delete Productsと入力します。

    3. 残りのデフォルトを受け入れて「次へ」をクリックします。

  6. 「ボタン・テンプレート」で、デフォルトの選択内容を受け入れて「次へ」をクリックします。

  7. 「表示プロパティ」で、次のステップを実行します。

    1. 「位置」で、「リージョンの上部」を選択します。

    2. 残りのデフォルトを受け入れて「次へ」をクリックします。

  8. 「ブランチ」で、「3 Products」を選択して「ボタンの作成」をクリックします。

プロセスの追加

「Delete Products」ボタンをクリックすると実行されるプロセスを追加するには、次のステップを実行します。

  1. 「ページ・プロセス」の「プロセス」で、「作成」アイコンをクリックします。

  2. 「プロセス・タイプ」で、「PL/SQL」を選択して「次へ」をクリックします。

  3. 「プロセス属性」で、次のステップを実行します。

    1. 「名前」に、Delete Productsと入力します。

    2. 「順序」で、デフォルトを受け入れます。

    3. 「ポイント」で、「送信時 - 計算および検証の後」を選択します。

    4. 次へ」をクリックします。

  4. 次のPL/SQLプロセスを入力して「次へ」をクリックします。

    FOR i in 1..APEX_APPLICATION.G_F01.count
    LOOP
       DELETE FROM demo_product_info
       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を使用して参照できます。 この演習で、EMPNO列のproduct_idに渡される値は1です。そのため、EMPNO列の値は、グローバル変数APEX_APPLICATION.G_F01を使用して参照します。

  5. 「メッセージ」で、次のステップを実行します。

    1. 「成功メッセージ」に、次のように入力します。

      Product(s) deleted.
      
      
    2. 「失敗メッセージ」に、次のように入力します。

      Unable to delete product(s).
      
      
    3. 次へ」をクリックします。

  6. プロセスの作成」をクリックします。

  7. ページを実行します。

  8. サンプル・アプリケーションの「Products」ページで、カテゴリを選択し、「Go」をクリックします。

    図6-8に示されるように、レポートの上に「Delete Products」ボタンが表示されていることに注意してください。 レポートから製品を削除するには、「Del」チェック・ボックスを選択して「Delete Products」をクリックします。

    図6-8 「Delete Products」チェック・ボックスが表示された「Products」レポート

    図6-8の説明が続きます。
    「図6-8 「Delete Products」チェック・ボックスが表示された「Products」レポート」の説明