2011-11-11 4 views
1

を提出せずにSQLクエリレポートの中に隠されたページアイテムを使用するには:OracleのAPEX 3.0.1どのように使用

私は、「where句」の一環として、隠されたページアイテムを含むSQLレポート領域を有します。私の問題は、ユーザーが入力した値に基づいて、私はこの値を自分の隠しアイテムに割り当てて、SQLのwhere条件内で使用できるようにする必要がありますが、これは実際にフォームを送信せずに行う必要があります。

現時点では、オンデマンドプロセスで値を設定できますが、クエリ内の非表示ページアイテムが設定されていないため(ページがまだ送信されていないため)、SQLでは値は保持されません。

これを行う方法がわからないし、実際にはこれが可能であるかどうかは、ページを送信せずに誰でも助けてください。

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

+0

クラシックまたはインタラクティブレポート?あなたのプロセスの後、レポートを更新しますか? – Tom

答えて

2

あなたはApex 3を使用しているため、ダイナミックアクションはありませんが、あまり妨げになることはありません。 apex.oracle.comに例を設定しました。ワークスペースに入るには、ワークスペース 'tompetrusbe' + apex_demo/demoを使用します。 そこには動的なアクションがありますが、これもできますが、無効にしました。あなたはそれを動作させるために必要なもの

: AJAXコールバック・プロセスは、次の行で:

apex_util.set_session_state('P2_PAR_ENAME', apex_application.g_x01); 

、レポートの地域に静的IDを付けて、私は「report_emp」鉱山と呼ばれます。これは簡単に検索できます

ページのjavascript領域では、アプリケーションプロセスを呼び出して、領域を更新する必要があります。また、このアクションを引き起こす必要のあるイベントをバインドします。私はここでパラメータのテキストフィールドのonchangeイベントを通してそれを行った。

function refresh_report(oTrgEl){ 
    //alert('refresh: ' + $v(oTrgEl)); 
    //calling the application process which sets the session state of P2_PAR_ENAME 
    var oGet = new htmldb_Get(null, &APP_ID., 'APPLICATION_PROCESS=set_session_state', &APP_PAGE_ID.); 
    oGet.addParam("x01", $v(oTrgEl)); 
    oGet.get(); //the app process just sets something, it returns nothing 

    //refresh the report region 
    $("#report_emp").trigger("apexrefresh"); 
}; 

function bind_events(){ 
    //call this onload 
    $("#P2_PAR_ENAME").change(function(){refresh_report(this);}); 
}; 

私はwhere ename like '%'||UPPER(:P2_PAR_ENAME)||'%'を使用しています。 'bl'を入力して(onchangeをトリガするために)タブアウトすると、その領域がリフレッシュされ、フィルタリングされます。

あなたはソリューションに適応する必要があります。

+0

もう一度、優秀な答えトム。これは私が後にしたものです。あなたの助けに感謝。 – tonyf

関連する問題