BEMAロゴ

エンジニアの
成長を支援する
技術メディア

【第5回】Oracle APEX入門:検索条件と一覧表(アイテムとリージョン)の紐づけ

はじめに

こんにちは、株式会社メンバーズの中村です。
Oracle APEXについて、第5回目の記事となります。
今回は、前回Open in new tab作成した画面部品の各アイテム(検索条件)を、リージョン(本アプリでは表の部分)から参照・利用していくハンズオン形式で解説します。※ハンズオン的に本記事を利用したい場合は、できれば前回の記事を参考に準備していただければスムーズです。別アプリに適用したい場合も真似していただければ理解は深まるはずです。

アイテムとリージョンの紐づけのステップ

01 現状の画面確認

  • アプリを開いて、前回の参照サンプル画面を開く

  • 検索条件を入れて、検索ボタン押下

以下のように、条件に関わらずデータがすべて表示されています。

02 条件アイテムの利用

  • 参照サンプルのアプリ開発画面を開く

  • 「サンプル表」リージョンのWHERE句のエディタを開く

  • 以下のように、エディタ内でアイテムを条件に使うようにSQLを書く

  • 上部の「検証」ボタンを押して、検証成功後「OK」ボタン押下※「検証」ボタンでSQLの文法チェックをしてくれます。

(:P6_A is null or A = :P6_A)
and (:P6_DATE_FROM is null or creation_date >= TO_DATE(:P6_DATE_FROM))
and (:P6_DATE_TO is null or creation_date <= TO_DATE(:P6_DATE_TO))

SQLの解説

  1. アイテムはバインド変数(:アイテム名)の書き方で利用できます。

  2. WHERE句を抜き出した形なので、複数条件の場合はandやor等でつなぎます。(Oracle SQLの文法準拠)

  3. アイテムが入力されていない場合は全指定とするためにnullチェックを入れています。

  4. アイテムは基本文字列で来るため、TO_DATE関数でDATE型にしてます。(実際は暗黙変換で不要な場合も多いです)※バインド変数がデフォルトで使える仕組みにより、セキュリティが考慮(SQLインジェクション対策)されています。

  • アプリを保存して、再度参照サンプル画面を開く。
    以下のようにA列を指定したり、作成日の指定が表に反映されれば成功です。
    アイテムをSQLで利用する場合の基礎中の基礎なので必ず覚えておきましょう。

03 アイテムの検証

SQLの中で、nullチェックの話が出たので少しだけ話を広げて簡単な必須入力チェックのやり方を記載します。
ここまではnull許容していたものを、検索時にA列の入力を必須にします。

  • アイテム「A列」の外観の「テンプレート」を「Required - Floating」にする※上記は必須であるというのを見た目で判断しやすくするだけのものです。

  • アイテム「A列」の検証の「必須の値」をONにする※上記で検索時に自動で必須チェックが行われます。

  • 「サンプル表」リージョンのWHERE句で、「A列」のnullチェックを外す※A列がnullの状態で検索されなくなるため不要になるためです。

  • アプリを保存して、再度参照サンプル画面を開く。
    以下のようにA列を入力しないで検索ボタンを押した場合にエラーメッセージが出れば成功です。

逆にA列を入力した場合に、検索できるかも確認しましょう。※A列のテキストフィールドの左上が少し赤いマークがついてますが、これが外観の「テンプレート」変更によるものです。

補足(ログイン問題の解決)

01 ログインできなくなる原因とAPEXのユーザー種別

第1回から5回までの期間がだいぶ空いてしまったのでログインできなくなっている方がいるかもしれません。

まず、APEXのログイン先を整理すると以下の3つあります。(Oracle Cloud除く)

  • ワークスペース管理画面

  • アプリケーション開発画面

  • アプリケーション自体

有効期限が近付くとアプリログイン時にパスワードの変更が求められます。

この時に出てくる画面上で、アプリ側のパスワードを変更しても、開発画面のパスワードは変わりません。ここが混乱の元になるポイントです。
基本的には管理者、開発者、アプリユーザーは別物として考えてください。※無料のインスタンスを放置しすぎると、段階的に停止⇒削除されます。DBインスタンスが停止(または削除)されている場合はAPEXのログイン画面にもいけません。この場合はOCI側でDBインスタンスをまず起動(または作成しなおし)する必要があります。

02 アプリユーザーのロック解除とパスワード再設定

アプリ側にログイン画面でユーザー/パスワードを入力してもログインできなくなった場合の対策を記載します。
アプリ作成時にデフォルトの認証機能がついてますが、その方式は「Oracle APEXアカウント」です。
具体的には、自分(管理者)を含む、Oracle APEX側で管理されているユーザーです。

画面としては以下の手順で確認できます。

  • 開発画面から右上の管理を選択後、「ユーザーとグループの管理」を選択

以下に記載されているユーザーがアプリにログインできるユーザーとなります。

ここからが本題です。ログインできなくなったユーザーを復活させましょう。

  • 対象のユーザーを選択

  • アカウントの可用性:ロック済みの場合は「ロック解除済」にする

  • パスワード、パスワードの確認:新しいパスワードを設定

  • 右上の「変更の適用」をクリック

これでもう一度アプリにログインしてみてください。※注意として、ここで変更したパスワードは開発画面へのアクセス用パスワードにも反映されます。さきほど開発者とアプリユーザーは別物として考えるようにと記載しましたが、ここでの変更は、開発者兼アプリユーザーの場合は両方へ適用されます。

最後に

いかがでしたでしょうか?最後まで読んでいただきありがとうございます。

アイテムと、リージョンの紐づけについて少しでも理解が深まったのであれば幸いです。
Oracle APEXは非常に多機能で、まだまだほんの一部しか紹介できてません。
次回からは、今回の「補足」のような何か個別にトピックを立てて解説できることがあればまた記事にしたいと思います。
その時までお楽しみに!

Oracle APEXの関連記事はこちら

この記事が役に立ったと思ったら、
ぜひ「いいね」とシェアをお願いします!

リンクをコピーXでシェアするfacebookでシェアする

この記事を書いた人

中村 竜太
中村 竜太
2023年メンバーズ中途入社。前職もエンジニアでしたが、Webアプリ開発経験はほぼありませんでした。 Pythonを勉強しながらも、これからWeb開発経験も積んでいけたらなと思っていたら、最初の開発案件で「Oracle APEX」という未知のローコードに出会いました。 趣味はゲームとフットサルです。ガンダムとジャッキー・チェンも好きです。
詳しく見る
ページトップへ戻る