暗黙条件
最終更新日: 2022年3月4日
R8 | R9
商品モデルの「価格」が「0より大きい」ものだけを検索対象とする、という暗黙条件を加えた例です。
検索画面を開きます。
0円のデータが検索結果に表示されません。これは隠れた検索条件項目「価格」が用意されており、「0より大きい」という条件が常に有効になっているためです。
暗黙条件を設定すると、条件に漏れたデータはどのアカウントでも閲覧できなくなります。(※システム管理者を除く)
このプリンシパルをもったアカウントでログオンした場合、商品データはすべて検索されます。
暗黙条件を適用したいモデル項目の詳細定義ダイアログを開きます。「暗黙条件」タブで、条件式を設定します。
図5の例では、「0より大きい」と指定しています。
暗黙条件は複数、指定することができます。すべての条件を満たすデータだけが検索対象になります。
図5の設定では、どのアカウントも(条件に適合しなかったデータを)検索することはできません。これを回避するために、「適用外の権限」を同時に指定することができます。[後述]
ここではパーミッションを設定します。プリンシパルではありません。
暗黙条件は、データベース問合せ時に SQL の where 句に自動的に付与されます。
このため、データベース自体にはデータが格納されます。システム利用時には、検索されることはありません。(適用外の権限を除く)
文字列型項目の場合、条件値の部分に項目を参照せずに計算結果を取得できる関数を利用することができます。
USERINFO関数の戻り値は文字列型です。整数型の値を使いたい場合は、TOINTなどの関数と併用してください。
暗黙条件には、関数の引数に特定モデルの項目が紐付かないものは利用できます。
例えば絶対値をとる ABS という関数を例にとって説明します。
は利用できますが
は利用できません。
「日付」「時間」「日付と時間」項目の暗黙条件に "now" 表記を使用することができます。
関数の結果が NULL または 空文字となる場合は、暗黙条件による絞込は行われません。
システム管理者には暗黙条件が適用されません。
暗黙条件と、通常の検索条件を併用することはできません。この場合は暗黙条件が優先され、検索条件に値を入力しても無視されます。
そのモデルの検索・一覧表示画面を用意しなかった場合、暗黙条件は利用できません。(設定は無効となります。)
暗黙条件が効かないという場合の確認方法を説明します。
例
価格が0円の商品を登録します。
暗黙条件が適用されない権限を用意する
そこで、この条件が適用されない権限を設定することができます。
図3では「商品管理者」というプリンシパルを用意した例を示します。
定義方法
シンプルな定義
注意
適用外の権限を設定する
「権限」タブを開きます。
ここでは「除外 (p_except)」という名前の権限を用意しました。
「環境 > 権限 > プリンシパル」を開き、ギアアイコンから「新規」を選択します。
カテゴリは「アカウント」とし、「選択肢表示」を有効にします。
先の手順で追加したプリンシパルを追加します。ギアアイコンから「プリンシパル追加」を選択します。
作成した「p_except」パーミッションを「適用外の権限」欄に設定します。
これにより、このプリンシパルを持たせたアカウントは、暗黙条件がスキップされます。
注意
暗黙条件の仕組み
関数を利用する
ログオンアカウントを暗黙条件とする
USERNAME()
履修年度を暗黙条件とする
FISCALYEAR(NOW())
USERINFO関数を使ってjuserの値を取得する
USERINFO("name")
TOINT(USERINFO("age"))
利用できない関数の考え方
ABS(-1)
ABS(${item1})
特別表記nowを利用する
関数を利用した場合
OR検索
仕様・制約
システム管理者の扱い
通常の検索条件との併用は不可
範囲検索との併用は不可
検索・一覧表示画面が必要
トラブルシューティング