2024年2月6日火曜日

ファセット検索の検索結果をAPEX_REGION.OPEN_QUERY_CONTEXTを呼び出してCSV形式でダウンロードする

ファセット検索の検索条件が適用された状態で、クラシック・レポートをCSV形式でダウンロードする方法について、以前に以下の記事を書いています。

ファセット検索の結果をCSV形式でダウンロードする

上記では、クラシック・レポートの問合せコンテキストを取得し、パイプライン表関数を作っています。

最近のAPEXではAPIとして、APEX_REGION.OPEN_QUERY_CONTEXTが提供されています。このファンクションを使用することにより、面倒なパイプライン表関数の作成が不要になります。

サンプル・データセットEMPから作成できるDemonstration - EMP / DEPT のアプリケーションに含まれているファセット検索のページに、CSV形式のダウンロードを行うボタンを実装してみます。

ファセット検索のページはページ番号です。

ファセット検索のフィルタ済みリージョンとして指定されているクラシック・レポートのリージョンに静的IDを設定します。APEX_REGION.OPEN_QUERY_CONTEXTの引数p_region_idとして与えるリージョンIDを、ビューAPEX_APPLICATION_PAGE_REGIONSから取り出すために使用します。

今回はEMPLOYEESとしています。


Ajaxコールバックとして、CSV形式のダウンロードを実行するプロセスを作成します。識別名前CSVDOWNLOADとします。

PL/SQLコードとして以下を記述します。



作成したAjaxコールバックを呼び出すボタンDOWNLOADを作成します。

ボタンはどこにおいても動作します。今回はブレッドクラムの右端に配置しています。

動作アクションとしてこのアプリケーションのページにリダイレクトを選択します。


ターゲットページとして現在開いているページ番号である&APP_PAGE_ID.、AjaxコールバックCSVDOWNLOADを呼び出すために、リクエストに以下を記述します。

APPLICATION_PROCESS=CSVDOWNLOAD


以上で、CSVダウンロードが実装できました。

Oracle APEXのアプリケーション作成の参考になれば幸いです。