アイテムは、HTMLフォームの一部です。アイテムは、テキスト・フィールド、テキスト領域、パスワード、選択リスト、チェック・ボックスなどを示します。アイテム属性は、ページ上のアイテムの表示に影響します。たとえば、これらの属性は、ラベルの表示位置、アイテムの大きさおよびアイテムの表示位置(前のアイテムの横または下)に影響します。
アイテムには、ページ・アイテムとアプリケーション・アイテムの2つのタイプが存在します。ページ・アイテムはページ上に配置され、「表示のみ」、「ラベル」、「ラベル・テンプレート」などの関連付けられたユーザー・インタフェースのプロパティを持ちます。ページ・レベル・アイテムの例としてはチェック・ボックス、日付ピッカー、テキストとしての表示、「ファイル参照」フィールド、「ポップアップLOV」、「選択リスト」、または「テキスト領域」などがあります。アプリケーション・アイテムはページに関連付けられないため、ユーザー・インタフェースのプロパティを持ちません。アプリケーション・アイテムは、グローバル変数として使用できます。
アイテム名を指定する場合は、次の規則に注意してください。規則は次のとおりです。
アプリケーション内で一意である必要があります。
引用符を含めることはできません。
先頭は文字または数字である必要があります。その後は、文字、数字またはアンダースコア文字を使用できます。
大/小文字が区別されません。
30文字以内にする必要があります。30文字を超えるアイテムは、バインド変数構文を使用して参照できません。「バインド変数構文を使用したセッション・ステートの参照」を参照してください。
基本ASCIIキャラクタ・セット以外の文字を含めることはできません。
アイテム名を指定する場合は、ページ番号を含めることをお薦めします。デフォルトでは、ウィザードによってページ・アイテム名の先頭にP
<page no>
_
<item name>
が付けられます(たとえば、P1_NAME
)。
リージョン、計算、プロセス、検証およびブランチのセッション・ステートに格納されたアイテム値を参照できます。表 15-1に、アイテム値を参照するためにサポートされている構文を示します。
表15-1アイテム値を参照するための構文
タイプ | 構文 | 説明 |
---|---|---|
SQL |
|
名前が30バイト以下のアイテム用の標準のバインド変数構文。この構文は、SQL問合せおよびPL/SQLコード内の参照用に使用します。 |
PL/SQL |
|
この構文をSQL文で使用しないでください。使用すると、パフォーマンスの問題が発生する場合があります。 関連項目: Oracle Application Express APIリファレンス |
PL/SQL |
|
この構文をSQL文で使用しないでください。使用すると、パフォーマンスの問題が発生する場合があります。 関連項目: Oracle Application Express APIリファレンス |
静的テキスト(完全置換) |
|
静的テキスト。完全置換です。 注意: 正確な置換構文をSQLまたはPL/SQLコードで使用しないでください。使用すると、SQLインジェクションに対して脆弱になる可能性があります。 |
次のいずれかの方法を使用すると、アプリケーションのアイテム値を設定できます。
ページ・レベル・アイテムの場合、ソース属性を使用してアイテム値を設定します。
ページから、アイテム名を選択してページ・アイテムの編集ページを表示します。「ソース」までスクロールして、該当するフィールドを編集します。
次の構文を使用して、PL/SQLまたはプロセスに基づく任意のリージョンのアイテム値を設定することもできます。
BEGIN :MY_ITEM := 'new value'; END;
f?p
構文を使用してURL参照の値を渡します。次に例を示します。
f?p=100:101:10636547268728380919::NO::MY_ITEM:ABC
計算を使用して値を設定します。計算は、アイテム値を設定するように設計されています。次に例を示します。
TO_CHAR(SYSDATE,'Day DD Month, YYYY');
PL/SQL APIを使用して、PL/SQLコンテキストにアイテム値を設定します。次に例を示します。
APEX_UTIL.SET_SESSION_STATE('MY_ITEM',SYSDATE); F
アイテムを参照する場合、最も有効な方法は、IDで参照する方法です。WebブラウザでOracle Application ExpressページのHTMLソースを表示すると、すべてのアイテムにID属性が含まれていることがわかります。このIDは、アイテム・ラベルではなく、アイテム名に対応します。たとえば、P1_FIRST_NAME
という名前で、First Name
というラベルを持つアイテムを作成した場合、IDはP1_FIRST_NAME
になります。
JavaScriptファンクション$v('P1_FIRST_NAME')
と$s('P1_FIRST_NAME', 'Joe');
を使用して、アイテム属性と値を取得および設定できます。次に例を示します。
function showFirstName(){ alert('First Name is ' +$v('P1_FIRST_NAME')) }; function setFirstName(pFirstName){ $s('P1_FIRST_NAME', pFirstName); };
これらのファンクションは、他のJavaScriptファンクションにより、またはJavaScriptコードの実行動的アクションを使用してコールできます。
関連項目: 『Oracle Application Express APIリファレンス』のAPEX_JAVASCRIPTに関する説明 |
この項では、複数の選択リスト・アイテムから返された値を処理する方法について説明します。
複数選択アイテムは複数選択リストのフォーム要素としてレンダリングされ、複数選択リストまたはシャトル・アイテム・タイプのいずれかになります。送信されると、選択した値は単一のコロンで区切られた文字列に戻されます。このフォーマットの値は3通りの方法で処理できます。
INSTR
ファンクションの使用
APEX_UTIL.STRING_TO_TABLE
ファンクションの使用
シャトルの作成
たとえば、部門の複数選択リストから選択した部門によって限定されているEMP
表およびDEPT
表に関するレポートがあるとします。まず、次の問合せを使用して、複数選択アイテム「P1_DEPTNO」を作成します。
SELECT dname, deptno FROM dept
次に、次のように入力して、選択した部門内の従業員のみを戻します。
SELECT ename, job, sal, comm, dname FROM emp e, dept d WHERE d.deptno = e.deptno AND instr(':'||:P1_DEPTNO||':',':'||e.deptno||':') > 0
次に、複数選択アイテム「P1_DEPTNO」で選択した値をプログラムで処理するとします。このタスクを行うには、APEX_UTIL.STRING_TO_TABLE
ファンクションを使用して、コロンで区切られた文字列をPL/SQL配列に変換します。次の例では、選択した部門を問合せの日付が含まれている監査表に挿入する方法を示します。
DECLARE l_selected APEX_APPLICATION_GLOBAL.VC_ARR2; BEGIN -- -- Convert the colon separated string of values into -- a PL/SQL array l_selected := APEX_UTIL.STRING_TO_TABLE(:P1_DEPTNO); -- -- Loop over array to insert department numbers and sysdate -- FOR i IN 1..l_selected.count LOOP INSERT INTO report_audit_table (report_date, selected_department) VALUES (sysdate, l_selected(i)); END LOOP; END;
関連項目: Oracle Application Express APIリファレンスの「STRING_TO_TABLEファンクション」 |
この項では、シャトル・アイテム・タイプを作成する方法について説明します。まず、DEPT
表に、特定の部門に割り当てられている従業員を示すレポートおよびフォームを作成します。次に、従業員を部門に割り当てやすくするために従業員をアルファベット順に一覧表示するシャトル・アイテムを作成します。
表でレポートおよびフォームを作成するには、次のステップを実行します。
「ワークスペース」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
「ページの作成」をクリックします。
「ページの作成」で、次のステップを実行します。
ユーザー・インタフェース - 「デスクトップ」を選択します。
ページ・タイプの選択: 「フォーム」を選択します。
「次へ」をクリックします。
「レポート付きの表のフォーム」を選択して「次へ」をクリックします。
「レポート・ページ属性」で、次のステップを実行します。
必要に応じて属性を編集します。
「次へ」をクリックします。
「データ・ソース」で、次のステップを実行します。
表/ビューの所有者 - レポートを作成している表の所有者を選択します。
表/ビューの名前 - DEPTを選択します。
「次へ」をクリックします。
残りのデフォルト値を受け入れ、画面に表示されるステップに従います。
オプションの詳細は、フィールドレベル・ヘルプを参照してください。「フィールドレベル・ヘルプの表示」を参照してください。
フォーム・ページでシャトルを作成するには、次のステップを実行します。
フォーム・ページに移動して、ページ・デザイナで表示します。「フィールドレベル・ヘルプの表示」を参照してください。
「ページ・レンダリング」で、フォームを含むリージョンをクリックして「ページ・アイテムの作成」を選択します。
次に、「プロパティ・エディタ - ページ・アイテム」に属性を入力します。
「指定」で、次の項目を指定します。
名前 - PX
_EMP_LIST
を入力します。
ヒント: この例では、アイテム名(P2_EMP_LIST など)のPX はアイテムが存在するページを示しています。 |
タイプ - 「シャトル」を選択します。
「LOV」で、次のステップを実行します。
タイプ - 「SQL問合せ」を選択します。
SQL文 - 次を入力します。
SELECT ename, empno FROM emp ORDER BY 1
「ソース」で、次の項目を指定します。
タイプ - 「SQL問合せ(コロン区切りの値を返す)」を選択します。
SQL問合せ - 次を入力します。
SELECT empno FROM emp WHERE deptno = :P2_DEPTNO ORDER BY ename
「ソース」で、次の項目を指定します。
タイプ - 「SQL問合せ(コロン区切りの値を返す)」を選択します
アイテム・ソース値: 次のように入力します。
SELECT empno FROM emp WHERE deptno = :P8_DEPTNO ORDER BY ename
「保存」をクリックします。
保存と実行をクリックして、ページを表示します。
コンポーネント・ビューのフォーム・ページでシャトルを作成するには、次のステップを実行します。
フォーム・ページに移動して、コンポーネント・ビューで表示します。「コンポーネント・ビューでのページの表示」を参照してください。
「アイテム」で、「作成」をクリックします。
「アイテム・タイプ」で、「シャトル」を選択して「次へ」をクリックします。
「アイテム名」で、PX
_EMP_LIST
を入力して「次へ」をクリックします。
ヒント: この例では、アイテム名(P2_EMP_LIST など)のPX はアイテムが存在するページを示しています。 |
「アイテム属性」で、デフォルト値を受け入れ、「次へ」をクリックします。
「設定」で、デフォルト値を受け入れ、「次へ」をクリックします。
「LOV」で、次のようにします。
LOV問合せ: 次のように入力します。
SELECT ename, empno FROM emp ORDER BY 1
「次へ」をクリックします。
「LOV」で、次のようにします。
ソース・タイプ - 「SQL問合せ(コロン区切りの値を返す)」を選択します
アイテム・ソース値: 次のように入力します。
SELECT empno FROM emp WHERE deptno = :P8_DEPTNO ORDER BY ename
「アイテムの作成」をクリックします。
「実行」をクリックして、ページを表示します。シャトル・アイテムが次の図のように表示されます。