レポート上で行を選択して、その情報を使いたいというのはよくある要件です。簡単に実装方法をまとめてみました。
サンプルの実装には、サンプル・データセットに含まれるEMP/DEPTの表EMPのデータを使用しています。表EMPに含まれる従業員を選択し、選択された従業員の従業員番号をページ・アイテムに設定します。
対話グリッドでは動的アクションとして実装します。行セレクタや選択行の変更イベントなどが標準で実装されているため、追加で記述するコードが少なくて済みます。また、動的アクションなので、選択を確定するためにページを送信する必要がありません。
推奨は、対話グリッドを使った実装です。
クラシック・レポートでも実装できます。APEX_ITEM.CHECKBOX2を使って、チェックボックの列をレポートに追加します。
アプリケーションの作成
あらかじめサンプル・データセットのEMP/DEPTをインストールします。
SQLワークショップのユーティリティのサンプル・データセットからインストールします。
アプリケーション作成ウィザードを起動します。作成するアプリケーションの名前はサンプル・レコード選択とします。アプリケーションには、対話グリッドとクラシック・レポートのページを作成します。
最初にホーム・ページの編集を開いて、ページを削除します。
ページの追加をクリックし、対話グリッドを選択します。
ページ名を対話グリッドとし、表またはビュー、編集を許可を選択します。表またはビューとして表EMPを選択します。
以上で、ページの追加をクリックします。
ページ名をクラシック・レポートとし、表またはビュー、クラシック・レポートを選択します。表またはビューとして表EMPを選択します。
以上で、ページの追加をクリックします。
アプリケーションの作成を実行します。
対話グリッドでの実装
対話グリッドの行セレクタを使って、選択した行をページ・アイテムに設定します。
対話グリッドのページを開き、静的コンテンツのリージョンを作成します。作成したリージョンにページ・アイテムP1_SELECTED_EMPLOYEESを作成します。このページ・アイテムに選択した行、つまり複数の従業員の従業員番号を','区切りで設定します。
対話グリッドのリージョンEmployeesに動的アクションを作成します。
識別の名前は従業員の選択とします。タイミングのイベントとして選択の変更[対話グリッド]を指定します。選択タイプはリージョン、リージョンはEmployeesになります。
TRUEアクションとして、JavaScriptコードの実行を選択し、設定のコードに以下を記述します。
対話グリッドでの実装は以上で完成です。
対話グリッドのAttributesの設定を変更し、行の追加、行の更新、行の削除をできないようにしたり、ツール・バーの表示をOFFにして、行の選択以外できないようにすると、より使いやすくなるでしょう。
クラシック・レポートでの実装
クラシック・レポートでも同様に、選択した従業員を設定するページ・アイテムP2_SELECTED_EMPLOYEESを作成します。さらに、送信ボタンB_SUBMITも作成します。ボタンの動作のアクションはページの送信とします。
追加した列SelectはHTMLが生成されるため、セキュリティの特殊文字をエスケープをOFFにします。
レポート上での選択結果は、ページの送信時にAPEX_APPLICATION.G_F01としてサーバーに渡されます。それを受け取って、ページ・アイテムP2_SELECTED_EMPLOYEESに設定するプロセスを作成します。
作成したプロセスの名前を従業員の選択とし、ソースのPL/SQLコードとして以下を記述します。
今回作成したアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/sample-record-selection.sql
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完