2022年6月27日月曜日

ページ・アイテムのリフレッシュを代替する方法

タイプ表示のみで、ソースタイプSQL問合せ(単一の値を返す)としたページ・アイテムの表示をリフレッシュしたい、との相談がありました。

動的アクションリフレッシュがあり設定すればできそうなのですが、リフレッシュに対応しているコンポーネントは限定されています。

タイプが表示のみのページ・アイテムはリフレッシュに対応していないようです。

ページ・アイテムのタイプ表示のみソースタイプSQL問合せ(単一の値を返す)SQL問合せは以下としています。

select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual

ボタンをクリックしたときに、ページ・アイテムにそのときの時刻を表示します。


ボタンのアクションとして、動的アクションで定義を選択します。


動的アクションが実行されるタイミングは、ボタンのデフォルトであるクリックです。


リフレッシュ表示のみのページ・アイテムには効きません。


今回の例であればTRUEアクションとして、サーバー側のコードを実行に置き換えることで実現できます。

設定PL/SQLコードに以下を記述します。

select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') into :P1_DATE from dual;

戻すアイテムとしてP1_DATEを設定します。


今回の例であればページ・アイテムにソースの設定があるため、初期化時に実行OFFでも問題ありません。ページが表示されるときにページ・アイテムに値が設定されない場合は、初期化時に実行はONにすることも検討が必要です。

以上になります。

簡単なアプリですが、今回作成したAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/refresh-page-item.sql

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