BETA

Oracle APEXで検温結果を記録・共有するウェブアプリを作ってみた その5

投稿日:2020-05-19
最終更新:2020-05-19

Oracle APEXで検温結果を記録・共有するウェブアプリを作ってみた その4 の続きです。

今回は、検温した結果を記録するページを作っていきます。

事前準備

Oracle APEXの開発環境を作ってみた
Oracle APEXで検温結果を記録・共有するウェブアプリを作ってみた その1
Oracle APEXで検温結果を記録・共有するウェブアプリを作ってみた その2
Oracle APEXで検温結果を記録・共有するウェブアプリを作ってみた その3
Oracle APEXで検温結果を記録・共有するウェブアプリを作ってみた その4

バージョン

Oracle Application Express 20.1.0

前提

シンプルな仕組みにしたいので、ユーザー/日単位での検温を記録し、すでに検温済の場合は上書きするようにします。削除機能は消しときます。

手順

アプリケーションのページ一覧から、「ページの作成」ボタンをクリックします。

ページの作成画面で、フォームを選択。

次の画面も、フォームを選択。

ページ番号に 4、名称に「検温記録」と入力します。
「送信後に~」と、「取り消して~」にも、4 を入力します。

次のナビゲーション・メニューは何もせずに次を押します。

データソースですが、ソースタイプに「SQL問い合わせ」を選択し、SQLを入力します。

SELECT   
 user_id,    
 temp_date,   
 temperature  
FROM temperatures  

主キーと二次キーに、ユーザーIDと検温日を選択し、「作成」ボタンを押します。

ページ・デザイナに切り替わります。
今回は、1. ページアイテムのプロパティ設定 2. カスタムのPL/SQLで登録・更新処理 の順に作っていきます。

ページアイテムのプロパティ設定

左ペインよりページアイテムを選択し、右ペインのプロパティを入力・変更していきます。

P4_USER_ID

識別 → タイプ:表示のみ
ラベル → ラベル:ユーザーID
デフォルト → タイプ:PL/SQL式
デフォルト → PL/SQL式::APP_USER

P4_TEMP_DATE

識別 → タイプ:表示のみ
ラベル → ラベル:検温日
デフォルト → タイプ:PL/SQL式
デフォルト → PL/SQL式:to_char(sysdate,'yyyy/mm/dd')

それぞれ、PL/SQL式で初期値を設定しリードオンリー項目にしています。
ユーザーIDは、Oracle APEXの置換文字列を使い、ログインユーザーのユーザーID。
検温日は、システム日付をセットしています。

P4_TEMPERATURE

ラベル → ラベル:体温
設定 → 最小値:34.0
設定 → 最大値:42.0

最小値、最大値を設定すると、Oracle APEX側で勝手にバリデーションしてくれます。

続いて、リージョン・ボタンにあるボタンにも設定していきます。

CREATE

右クリックし、削除。

DELETE

右クリックし、削除。

SAVE

識別 → ラベル:登録

CANCEL

識別 → ラベル:取消

項目、ボタンはこれでオッケーです。
続いて、登録・更新・削除処理を実装していきます。

登録・更新のプロセスを作る

実はページ作成時に登録、更新、削除の機能は出来上がっていますが、今回は登録か更新についてはシステム内で判断するようにしたいので、自前で処理を作ります。

左ペインのタブ(アプリケーションなんちゃらの下にある4つのアイコン)より、右から2番目の「プロセス」をクリックします。
「プロセス」の上で右クリックし、「プロセスの作成」を選択します。

新規のプロセスが作成されるので、プロパティを設定していきます。

識別 → 名前:データ登録・更新
識別 → タイプ:PL/SQLコード
ソース → PL/SQLコード:下をコピペ

DECLARE  
  err    EXCEPTION;  

BEGIN  

  INSERT INTO temperatures (  
    user_id,   
    temp_date,  
    temperature  
  ) VALUES (  
    :P4_USER_ID,   
    :P4_TEMP_DATE,  
    :P4_TEMPERATURE  
  );  

EXCEPTION  
  WHEN DUP_VAL_ON_INDEX THEN  
    UPDATE temperatures  
    SET    temperature = :P4_TEMPERATURE  
    WHERE  user_id = :P4_USER_ID  
    AND    temp_date = :P4_TEMP_DATE;  

  WHEN OTHERS THEN  
    ROLLBACK;  
    raise err;  

END;  

PL/SQLの内容としては、temperatures表に登録、キー違反となる場合は更新といった処理です。
なお、:P4_USER_IDのように記載することで、ページアイテムをバインドすることができます。

これで、ツリー上には二つプロセスがあると思いますが、「プロセス・フォーム検温記録」は使わないので削除します(ページ作成時に自動で作られたプロセス)。

これで、検温結果を登録するフォームができました。

今回はここまで。
次回は、登録した検温履歴のダッシュボードを作ろうと思います。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

Oracle APEX というローコード開発ツールのネタが中心です

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう