Oracle HTML DBでは、チェック・ボックスをフォーム要素として作成するか、またはレポート内に作成できます。フォームのチェック・ボックスは、LOVと同様に動作します。アイテムをチェック・ボックスとして定義する場合は、「アイテム属性」ページの「LOV」セクションにチェック・ボックス値を指定する必要があります。既存のファンクションHTMLDB_ITEM.CHECKBOX
を使用して、レポートにチェック・ボックスを定義します。
このチュートリアルでは、デモンストレーション・アプリケーション(サンプル・アプリケーション)内にチェック・ボックスを作成する様々な方法、およびチェック・ボックスの値を参照して処理する方法について説明します。
この章の内容は次のとおりです。
サンプル・アプリケーションにアクセスするには、次の手順を実行します。
Oracle HTML DBにログインします。
「作業領域管理」リストから、「デモンストレーション・アプリケーションをレビュー」を選択します。
サンプル・アプリケーションを検索し、「ステータス」列を確認します。
「ステータス」列に「インストール済」が表示されている場合は、「アクション」列の「実行」をクリックします。
「ステータス」列に「インストールされていません」が表示されている場合は、「アクション」列の「インストール」を選択します。Application Builderホームページが表示されたら、「実行」アイコンをクリックします。
プロンプトが表示されたら、適切なユーザー名およびパスワードを入力して、「ログイン」をクリックします。
「ユーザー名」に、demo
またはadmin
のいずれかを入力します。
「パスワード」に現行の作業領域名をすべて小文字で入力します。
「Products」タブをクリックして、製品情報ページにナビゲートします。
製品の左にある「編集」アイコンをクリックします。
図5-1に示すとおり、「Product Available」はラジオ・グループです。次の演習では、このアイテムをチェック・ボックスに変更します。
次の演習では、「Product Available」ラジオ・グループをチェック・ボックスに変更した後、ラベルの位置を変更します。
このセクションの内容は次のとおりです。
「Product Available」ラジオ・グループをチェック・ボックスに変更するには、次の手順を実行します。
ページ6のページ定義にナビゲートします。「開発者」ツールバーで「ページを編集6」を選択します。
「アイテム」で、「P6_PRODUCT_AVAIL」を選択します。
「表示形式」で、「チェックボックス」を選択します。
「LOV」までスクロールします。
「LOV」で、次の手順を実行します。
「名前付きLOV」で、「名前付きLOVを選択」を選択します。
「LOV定義」で、次のように入力します。
STATIC:;Y
「変更を適用」をクリックします。
ページ定義が表示されます。
「ページを実行」アイコンをクリックして、ページを実行します。
図5-2に示すとおり、「Product Available」アイテムがチェック・ボックスとして表示されます。
次に、チェック・ボックスのラベルをチェック・ボックスの右側に移動します。
チェック・ボックスのラベルの位置を変更するには、次の手順を実行します。
ページ6のページ定義にナビゲートします。「開発者」ツールバーで「ページを編集6」を選択します。
「アイテム」で、「P6_PRODUCT_AVAIL」を選択します。
「ラベル」で、テキストProduct Available
を削除します。
「LOV」で、LOV定義を次のように変更します。
STATIC:Product Available;Y
「変更を適用」をクリックします。
「ページを実行」アイコンをクリックして、ページを実行します。
図5-3に示すとおり、ラベル「Product Available」がチェック・ボックスの右に表示されます。
ラベルを削除したり、LOVに表示値を追加すると、HTML DBエンジンによって、まずチェック・ボックス、次に表示値「Product Available」がレンダリングされます。
特定の環境では、チェック・ボックスをデフォルトで有効にする必要がある場合があります。これは、チェック・ボックス・アイテムの「デフォルト値」属性を設定して行うことができます。この方法には、無効にする場合に追加の手順を実行する必要があるという欠点があります。「Product Available」チェック・ボックスは、その定義方法のため、実際には無効にできません。
次に例を示します。
「ホーム」タブを選択して「ホーム」ページにナビゲートします。
「タスク」リストから「Add a New Product」を選択します。
「Add/Modify Product」ページで、次の手順を実行します。
必須フィールド(アスタリスク付きのフィールド)に入力します。
「Product Available」チェック・ボックスを無効にします。
「作成」をクリックします。
「Product Available」チェック・ボックスを再度無効にして、「変更を適用」をクリックします。
「Product」ページが表示されます。
追加した製品の「編集」アイコンを選択します。
「Product Available」チェック・ボックスが、製品の追加時に2回無効にしたにもかかわらず、有効になっていることに注意してください。この動作の原因は次のとおりです。
「Product Available」チェック・ボックスに、デフォルト値Y
が指定されている。
「Product Available」がNULL
の場合、チェック・ボックスを有効にするデフォルト値Y
が指定される。
この動作は、チェック・ボックスの状態を追跡する計算を追加して変更できます。
チェック・ボックスの状態を追跡する計算を追加するには、次の手順を実行します。
ページ6のページ定義にナビゲートします。「開発者」ツールバーで「ページを編集6」を選択します。
「計算」で、「作成」アイコンをクリックします。
「位置」で、「このページのアイテム」を選択して「次へ」をクリックします。
「アイテムを指定」で、次の手順を実行します。
「Computer Item」で、「P6_PRODUCT_AVAIL」を選択します。
「計算ポイント」で、「送信後」を選択します。
「計算タイプ」で、「静的割当て」を選択します。
「次へ」をクリックします。
「計算」で、次のように入力し、「次へ」をクリックします。
N
注意: アイテムの静的割当てには、Y またはNULL 以外の値を指定する必要がありあます。
|
次に、計算を実行するタイミングを制御する条件を作成します。
「条件を指定」で、次の手順を実行します。
「条件タイプ」で、「式1のアイテムの値がNULL」を選択します。
「式1」に、次のように入力します。
P6_PRODUCT_AVAIL
これらの設定によって、この計算は、チェック・ボックス・アイテムの値P6_PRODUCT_AVAILがNULL
の場合にのみ実行されます。
「作成」をクリックします。
前述の手順に従って別の製品を追加します。この場合、「Product Available」チェック・ボックスは自動的には選択されないことに注意してください。
次の演習では、「Product」ページに複数値チェック・ボックスを作成します。ユーザーは、このチェック・ボックスによって、カテゴリを選択してレポートをフィルタ処理できるようになります。
このセクションの内容は次のとおりです。
複数値チェック・ボックスを作成するには、次の手順を実行します。
ページ3のページ定義にナビゲートします。
「アイテム」で、「作成」アイコンをクリックします。
「アイテム・タイプ」で、「チェックボックス」を選択して「次へ」をクリックします。
「アイテム名および表示位置を指定」で、次の手順を実行します。
「アイテム名」に、P3_SHOW
と入力します。
「リージョン」で、「Products 1.10」を選択します。
「次へ」をクリックします。
「LOVを指定」で、次の手順を実行します。
「NULLオプションを表示」で、「いいえ」を選択します。
「LOV問合せ」に、次のように入力します。
SELECT distinct category a, category b FROM demo_product_info ORDER BY 1
複数値チェック・ボックスを作成するには、LOB問合せで複数の行が戻される必要があることに注意してください。
「次へ」をクリックします。
「アイテム属性を指定」で、次の手順を実行します。
「ラベル」で、「消去」をクリックしてデフォルトのテキストを削除します。
「次へ」をクリックします。
「アイテム属性を指定」で、次の手順を実行します。
「アイテム・ソース」で、「静的割当て」を選択します。
「アイテム・ソース値」に、次のように入力します。
Audio:Computer:Phones:Video
複数値チェック・ボックスを送信する場合、アイテムの値はコロンで区切られた文字列にします。この文字列をソースとして使用すると、HTML DBエンジンによってページのレンダリングが行われる際にすべてのボックスが選択されます。
「アイテムを作成」をクリックします。
チェック・ボックスの表示値(ラベル)が太字で表示されるように編集するには、次の手順を実行します。
ページ3のページ定義にナビゲートします。
「アイテム」で、「P3_SHOW」を選択します。
「要素」までスクロールします。
「フォーム要素オプション属性」に、次のように入力します。
class="fielddatabold"
「フォーム要素オプション属性」は、チェック・ボックスおよびラジオ・ボタン専用で、HTML DBエンジンによる個々のオプションのレンダリング方法を制御します。
「変更を適用」をクリックします。
次に、カテゴリ・チェック・ボックスがレポートの上に表示されるように属性を編集します。これを行うには、P3_SHOWに関連付けられたリージョンの「表示ポイント」属性を変更する必要があります。
「Products」リージョンの表示ポイントを変更するには、次の手順を実行します。
ページ3のページ定義にナビゲートします。
「リージョン」で、「Products」を選択します。
「表示ポイント」で、「ページ・テンプレート・ボディ (3. リージョン・コンテンツより上のアイテム)」を選択します。
「変更を適用」をクリックします。
ページ3を実行すると、カテゴリ・チェック・ボックスは縦に並んで表示されます。次に、カテゴリ・チェック・ボックスが横に並んで表示されるように表示を変更します。
カテゴリ・チェック・ボックスが表示される位置を変更するには、次の手順を実行します。
ページ3のページ定義にナビゲートします。
「アイテム」で、「P3_SHOW」を選択します。
「LOV」までスクロールします。
「列」に、4
と入力します。
「変更を適用」をクリックします。
製品カテゴリ・チェック・ボックスでレポートを生成するには、ページを送信する必要があります。
ページを送信するボタンを作成するには、次の手順を実行します。
ページ3のページ定義にナビゲートします。
「ボタン」で、「作成」アイコンをクリックします。
「ボタンのリージョンを選択してください」で、「Products 1.10」を選択して「次へ」をクリックします。
「タスク」で、「このリージョン・アイテムで表示されるボタンを作成」を選択して「次へ」をクリックします。
「アイテム属性にボタンを指定」で、次の手順を実行します。
「ボタン名」に、P3_GO
と入力します。
「順序」に、40と入力します。
「ボタンを作成」をクリックします。
次に、ユーザーが「Go」ボタンをクリックした後に移動する位置をHTML DBエンジンに通知するブランチを作成する必要があります。
ページ3へのブランチを作成するには、次の手順を実行します。
ページ3のページ定義にナビゲートします。
「ブランチ」で、「作成」アイコンをクリックします。
「ブランチ・ポイントおよびタイプを指定」をクリックします。
「ページ」で、「3」を選択して「次へ」をクリックします。
「ブランチを作成」をクリックします。
製品カテゴリ・チェック・ボックスに基づいてレポートを生成するには、レポート問合せを変更する必要があります。
レポート問合せを編集するには、次の手順を実行します。
「リージョン」で、「Products」を選択します。
「リージョン・ソース」までスクロールします。
「リージョン・ソース」で、WHERE
句を次のように変更します。
WHERE p.image_id = i.image_id (+)AND instr(':'||:P3_SHOW||':',category) > 0
「変更を適用」をクリックします。
「ページを実行」アイコンをクリックして、ページを実行します。
図5-4に示すとおり、ページの上部にあるカテゴリ・チェック・ボックスを選択してレポートをフィルタ処理できます。
ページ3のコンテンツは、カテゴリ・チェック・ボックスで正常にフィルタ処理されますが、すべてのチェック・ボックスを選択解除すると、すべての製品がレポートされることに注意してください。チェック・ボックスをNULL値にする(選択解除する)と、デフォルト値Yが設定されるため、この動作が発生します。デフォルト値Yによって、チェック・ボックスが有効になります。
この動作は、チェック・ボックスの状態を追跡する計算を追加して変更できます。
チェック・ボックスの状態を追跡する計算を追加するには、次の手順を実行します。
ページ3のページ定義にナビゲートします。
「計算」で、「作成」アイコンをクリックします。
「位置」で、「このページのアイテム」を選択して「次へ」をクリックします。
「アイテムを指定」で、次の手順を実行します。
「Computer Item」で、「P3_SHOW」を選択します。
「計算ポイント」で、「送信後」を選択します。
「計算タイプ」で、「静的割当て」を選択します。
「次へ」をクリックします。
「計算を指定」で、次の手順を実行します。
「計算」に、次のように入力します。
none(bogus_value)
「次へ」をクリックします。
注意: アイテムの静的割当てには、Y またはNULL 以外の値を指定する必要がありあます。
|
次に、計算を実行するタイミングを制御する条件を作成します。
「条件を指定」で、次の手順を実行します。
「条件タイプ」で、「式1のアイテムの値がNULL」を選択します。
「式1」に、次のように入力します。
P3_SHOW
これらの設定によって、この計算は、チェック・ボックス・アイテムの値P3_SHOW
がNULL
の場合にのみ実行されます。
「作成」をクリックします。
ページを再度実行して、すべてのカテゴリ・チェック・ボックスを選択解除します。今回は、レポートに予期した結果(戻されたレコードがない)が示されます。
次の演習では、「Product」ページの各行に削除チェック・ボックスを追加します。これを行うには、レポート問合せを編集してHTMLDB_ITEM
パッケージをコールします。
HTMLDB_ITEM
は、特定のフォーム要素を動的に生成するために提供されているパッケージです。ここでは、HTMLDB_ITEM.CHECKBOX
を使用して「Products」レポートにチェック・ボックスを生成します。ページを送信すると、チェック・ボックスの値がグローバル・パッケージ配列に格納されます。これらの値は、渡されたp_idx
パラメータ値に基づいてPL/SQL変数HTMLDB_APPLICATION.G_F01
からHTMLDB_APPLICATION.G_F50
を使用して参照できます。
このセクションの内容は次のとおりです。
HTMLDB_ITEM.CHECKBOX
をコールするように問合せを編集するには、次の手順を実行します。
ページ3のページ定義にナビゲートします。
「リージョン」で、「Products」をクリックします。
「リージョン・ソース」で、太字で示されている新しい行を問合せに追加します。
SELECT p.product_id edit_product, p.product_id view_product_id,
htmldb_item.checkbox(1,p.product_id) del,
p.product_name, p.product_description, p.category, p.product_avail, p.list_price, '<img src="#OWNER#.custom_image_display?p_image_id=' || nvl(i.image_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
HTMLDB_ITEMは、特定のフォーム要素を動的に生成する場合に使用可能なOracle HTML DBで提供されるパッケージです。前述の例で、p_idx
に渡される値は1であることに注意してください。後で、チェック・ボックスの値を参照するには、グローバル変数HTMLDB_APPLICATION.G_F01
を使用します。
「レポート属性」タブを選択します。
「レポート列属性」で、Del
列を検索します。
DEL
列がVIEW_PRODUCT_ID
のすぐ下になるまで、上矢印をクリックします。(図5-5を参照。)
「変更を適用」をクリックします。
チェック・ボックス配列値を送信するボタンを追加するには、次の手順を実行します。
ページ3のページ定義にナビゲートします。
「ボタン」で、「作成」アイコンをクリックします。
「ボタンのリージョンを選択してください」で、「Products 1.10」を選択して「次へ」をクリックします。
「タスク」で、「リージョン位置にボタンを作成」を選択して「次へ」をクリックします。
「アイテム属性にボタンを指定」で、次の手順を実行します。
「ボタン名」に、DELETE_PRODUCTS
と入力します。
「ラベル」に、Delete Products
と入力します。
「次へ」をクリックします。
「ボタン・テンプレート」で、デフォルトの選択内容を受け入れて「次へ」をクリックします。
「位置」で、「リージョンの上部」を選択して「次へ」をクリックします。
「ページにブランチ」で、「3」を選択して「ボタンを作成をクリックします。
「Delete Products」ボタンをクリックすると実行されるプロセスを追加するには、次の手順を実行します。
「プロセス」で、「作成」アイコンをクリックします。
「プロセス・タイプを選択」で、「PL/SQL」を選択して「次へ」をクリックします。
「名前」に、Delete Productsと入力します。
次のPL/SQLプロセスを入力して「次へ」をクリックします。
FOR i in 1..HTMLDB_APPLICATION.G_F01.count LOOP DELETE FROM demo_product_info WHERE product_id = HTMLDB_APPLICATION.G_F01(i); END LOOP;
HTMLDB_ITEM
は、特定のフォーム要素を動的に生成する場合に使用可能なOracle HTML DBで提供されるパッケージです。ページを送信すると、各列の値がグローバル・パッケージ配列に格納されます。これらの値は、PL/SQL変数HTMLDB_APPLICATION.G_F01
からHTMLDB_APPLICATION.G_F50
を使用して参照できます。この演習で、EMPNO
列のp_idx
に渡される値は1です。そのため、EMPNO
列の値は、グローバル変数HTMLDB_APPLICATION.G_F01
を使用して参照します。
「メッセージを指定」で、次の手順を実行します。
「成功メッセージ」に、次のように入力します。
Product(s) deleted.
「失敗メッセージ」に、次のように入力します。
Unable to delete product(s).
「次へ」をクリックします。
「プロセスを作成」をクリックします。
ページを実行すると、レポートの上に「Delete Products」ボタンが表示されます。(図5-6を参照。)レポートから製品を削除するには、「Del」チェック・ボックスを選択して「Delete Products」をクリックします。