2012-08-27 17 views
5

oracle apex_application.gfnnの動作と、Oracle ApExの標準SQLレポートまたはSQL(更新可能なレポート、つまり表形式)のみで動作するかどうかはかなり混乱しています。Oracle Apex_Application.G_Fnnとその使用方法の理解

基本的に私はつまり、私が達成しようとしていますが、このタイプまたはレポートで可能である場合にだけ、標準SQLレポートで、このサンプルSQLを使用したが、不明な点が次のことを達成しようとしています:

select id, 
     name, 
     telephone, 
     apex_item.checkbox2(10,id) as "Tick when Contacted", 
     apex_item.text(20,my_date) as "Date Contacted", 
     apex_item.textarea(30,my_comment,5,80) as "Comment" 
from my_table 

上記のSQLに基づいて、このSQLクエリが10行を返すと仮定します。今私の運転IDとしてチェックボックスを使用して、私はすべての奇数レコード/行、すなわち行1,3,5,7,9のチェックボックスをチェックし、これらの行のそれぞれについて、私はまた、コメントと共に日付値(f20)を入力する(f30)

これを覚えておいて、ユーザーが[保存]ボタンを押したときに呼び出されるページプロセスを作成して、これらのチェックされた行を繰り返し、レコード、日付、コメント私が選択した行だけが表示されます。

だから、上記に基づいて、私は次の列で私のテーブルに5つのニュースの行を持っていることを期待するには:

ID  MY_DATE  MY_COMMENT 
1  26/08/2012 Comment A 
3  27/08/2012 Comment B 
5  28/08/2012 Comment C 
7  29/08/2012 Comment D 
9  30/08/2012 Comment E 

残念ながら、私はこの使用してapex_application.G_F10.COUNT

を達成する方法がわかりませんよ

私はチェックボックスにチェックを入れた各行に対して、これらの配列要素(f20)とf(f30)のそれぞれの内容にアクセスしたいと思っています。

これは可能ですか、apex_application.G_Fnnがどのように機能するのか誤解しましたか?

上記が不可能な場合は、私がこれをどのように達成できるか教えてください。

表形式のレポートが必要ですか?

ご協力いただければ幸いです。

ありがとうございました。

+0

扁桃腺、あなたの新しい質問http://stackoverflow.com/q/12163564/814048私は私のコードで私は非常にばかな間違いをしたことを実感しました。私は私の答えを修正した。申し訳ありません。 – Tom

+0

こんにちはトム - 問題ありません。あなたの答えを修正したことを感謝します。 Checboxのシナリオをもう一度使用する必要があるとき、私はこの心を維持します。 BTWでは、この修正された回答は、表形式のSQL Updateable SQLレポートまたは標準レポートに関連していますか? – tonyf

+0

標準レポートの意味にかかっています!表形式の場合:これは私たちがここで作業している種類なので、間違いなくはいです。 – Tom

答えて

8

あなたは非常に近いです。

select apex_item.checkbox2(10, empno) select_me, 
apex_item.text(20, empno) empno, 
apex_item.text(30, ename)||apex_item.hidden(50, empno) ename 
from emp 

私は、自身のコラムでそれをしたくないので、私は隠されたアイテムを連結しています。レイアウトがうまくいきません。
また、チェックボックスの働きにより、隠しアイテムが表示されます。チェックボックスは、チェックされた項目の値のみを送信します。これは、配列10に3つの値があることを意味します。他の配列にはすべての行の値が含まれます。
これは、隠しempnoをもう一度追加した理由です。チェックされた値を他の行に一致させることができます。

上のプロセスを提出:

DECLARE 
    v_empno emp.empno%TYPE; 
    v_ename emp.ename%TYPE; 
BEGIN 
    --f10: checkbox 
    --f20: empno 
    --f30: ename 
    --f50: empno again 
    for i in 1..apex_application.g_f10.count 
    loop 
     for j in 1..apex_application.g_f50.count loop 
     if apex_application.g_f10(i) = apex_application.g_f50(j) 
     then   
      -- access values for the selected rows in the other arrays 
      v_empno := apex_application.g_f20(j); 
      v_ename := apex_application.g_f30(j); 

      apex_debug_message.log_message('Employee: '||v_empno||' - '||v_ename); 
     end if; 
     end loop; 
    end loop; 
END; 

ランページ、デバッグを有効にする、レコードの2を選択し、4と6、提出します。

record selection and query output

デバッグ出力:

debug output: BLAKE, JONES, FORD

あなたが今やらなければならないことは、そのループの中で、あなたの処理を入れています。

+0

Tomはおかげで何かを確認したいだけで、作業にスパナを投げるかもしれませんが、f20とf30に関して、f20はユーザーが実際に入力する日付フィールドであり、データベーステーブルの列ではなくf30これは、ユーザがコメントを入力できるテキストエリアであり、データベーステーブルのカラムからのコメントではありません。あなたの処理はまだこのシナリオでは機能するのでしょうか、または変更が必要ですか? – tonyf

+0

これは、実際に何を意味するかによって異なります。標準の表形式に使用する標準の複数行処理を使用する予定がある場合、それはできません。また、マニュアルの表形式では、表形式の検証(検証処理ポイントで宣言されたもの)はできません。チェックサムと最適なロックは取得できません。これは同時ユーザーのシステムでは重要です。 – Tom

+0

ああ、ちょっと、あなたは日付フィールドにapex_item.date_popup2を使うことができました! – Tom

関連する問題