標準レポートとして使用している次の select ステートメントがあります。
select id,
name,
telephone,
apex_item.checkbox2(10,id) as "Tick when Contacted",
apex_item.text(20,:P2_DATE) as "Date Contacted",
apex_item.textarea(30,:P2_COMMENT,5,80) as "Comment"
from my_table
私の質問は、これを正しく行っているかどうかわからない領域は、このステートメントが 10 行を返し、それらの 10 行から 5 つのレコードのみを選択/チェックしてから送信ボタンを押すことです。選択したレコードを別のテーブルに挿入する PL/SQL ページ プロセスが検出されず、ページ上の非表示アイテムであり、純粋にプレースホルダーとして使用さ:P2_DATE
れ:P2_COMMENT
、my_table 内の実際の列ではありませんか?
これを正しく行っていますか、それとも頂点コレクションを使用する必要がありますか?
私のページのプロセスは次のようになります。これは正しいです?
DECLARE
v_row BINARY_INTEGER;
BEGIN
FOR i IN 1..APEX_APPLICATION.G_F10.COUNT LOOP
v_row := APEX_APPLICATION.G_F10(i);
INSERT INTO MY_OTHER_TABLE
( DATE_CONTACTED,
COMMENTS
)
VALUES ( APEX_APPLICATION.G_F20(v_row),
APEX_APPLICATION.G_F30(v_row)
);
END LOOP;
COMMIT;
END;
ユーザー入力を含むレポートの例は次のとおりです。
ID/CHECKBOX DATE CONTACTED COMMENTS
=====================================================
1 21/08/2012 Comment 1
2 21/08/2012 Comment 2
3 21/08/2012 Comment 3
4 21/08/2012 Comment 4
5 21/08/2012 Comment 5
ユーザーがこれらの 5 つのコメントを手動で入力したこのレポートに基づいて、これらの 5 つのレコードはチェック済みであるため、MY_OTHER_TABLE に挿入されると予想されます。
残念ながら、私がチェックした 5 つのレコードに対して MY_OTHER_TABLE が入力されることはありません。
何かを見逃してしまったのか、それともこれら 2 つのプレースホルダー アイテムの使用に関して元の選択を完全に間違えたのか、よくわかりません。