暗黙条件

最終更新日: 2022年3月4日
R8 | R9

商品モデルの「価格」が「0より大きい」ものだけを検索対象とする、という暗黙条件を加えた例です。
価格が0円の商品を登録します。

価格が0円の商品を登録する

検索画面を開きます。 0円のデータが検索結果に表示されません。これは隠れた検索条件項目「価格」が用意されており、「0より大きい」という条件が常に有効になっているためです。

価格が0円の商品は検索されない。

暗黙条件が適用されない権限を用意する

暗黙条件を設定すると、条件に漏れたデータはどのアカウントでも閲覧できなくなります。(※システム管理者を除く)
そこで、この条件が適用されない権限を設定することができます。
図3では「商品管理者」というプリンシパルを用意した例を示します。

商品管理者プリンシパルを用意する

このプリンシパルをもったアカウントでログオンした場合、商品データはすべて検索されます。

すべての商品データ(暗黙条件を適用しない)

定義方法

シンプルな定義

暗黙条件を適用したいモデル項目の詳細定義ダイアログを開きます。「暗黙条件」タブで、条件式を設定します。

図5の例では、「0より大きい」と指定しています。

暗黙条件は複数、指定することができます。すべての条件を満たすデータだけが検索対象になります。

暗黙条件の設定

注意

図5の設定では、どのアカウントも(条件に適合しなかったデータを)検索することはできません。これを回避するために、「適用外の権限」を同時に指定することができます。[後述]

適用外の権限を設定する

  1. はじめに、このモデルに新しい権限(パーミッション)を作成します。
    「権限」タブを開きます。
    「権限」タブ
  2. ギアアイコンから「パーミッション追加」を選択します。
    ここでは「除外 (p_except)」という名前の権限を用意しました。
    パーミッションの作成(1)
    パーミッションの作成(2)
  3. 続いて、追加したパーミッションを管理するためのプリンシパルを作成します。
    「環境 > 権限 > プリンシパル」を開き、ギアアイコンから「新規」を選択します。
    プリンシパルの追加(1)
  4. 英語名を「Product manager」、日本語名を「商品管理者」、IDは「product_mgr」としました。
    カテゴリは「アカウント」とし、「選択肢表示」を有効にします。
    プリンシパルの追加(2)
  5. 商品モデルの権限タブに戻ります。
    先の手順で追加したプリンシパルを追加します。ギアアイコンから「プリンシパル追加」を選択します。
    プリンシパルの作成(1)
  6. プリンシパルは先の手順で追加した「商品管理者」を選択します。
    プリンシパルの作成(1)
  7. 「商品管理者」では「除外」だけ有効にします。
    プリンシパルの作成(2)
  8. 「価格」項目の詳細から「暗黙条件」タブを開きます。
    作成した「p_except」パーミッションを「適用外の権限」欄に設定します。
    これにより、このプリンシパルを持たせたアカウントは、暗黙条件がスキップされます。
    適用外の権限を指定する

    注意

    ここではパーミッションを設定します。プリンシパルではありません。

暗黙条件の仕組み

暗黙条件は、データベース問合せ時に SQL の where 句に自動的に付与されます。 このため、データベース自体にはデータが格納されます。システム利用時には、検索されることはありません。(適用外の権限を除く)

関数を利用する

文字列型項目の場合、条件値の部分に項目を参照せずに計算結果を取得できる関数を利用することができます。

ログオンアカウントを暗黙条件とする

USERNAME()

履修年度を暗黙条件とする

FISCALYEAR(NOW())

USERINFO関数を使ってjuserの値を取得する

USERINFO("name")
TOINT(USERINFO("age"))

USERINFO関数の戻り値は文字列型です。整数型の値を使いたい場合は、TOINTなどの関数と併用してください。

利用できない関数の考え方

暗黙条件には、関数の引数に特定モデルの項目が紐付かないものは利用できます。 例えば絶対値をとる ABS という関数を例にとって説明します。

ABS(-1)

は利用できますが

ABS(${item1})

は利用できません。

特別表記nowを利用する

「日付」「時間」「日付と時間」項目の暗黙条件に "now" 表記を使用することができます。

関数を利用した場合

関数の結果が NULL または 空文字となる場合は、暗黙条件による絞込は行われません。

OR検索

暗黙条件で OR 検索を利用する場合、暗黙条件の設定に代わってスクリプトで実現します。WDN

仕様・制約

システム管理者の扱い

システム管理者には暗黙条件が適用されません。

通常の検索条件との併用は不可

暗黙条件と、通常の検索条件を併用することはできません。この場合は暗黙条件が優先され、検索条件に値を入力しても無視されます。

範囲検索との併用は不可

検索制御の「範囲検索」と暗黙条件は同時に指定できません。

検索・一覧表示画面が必要

そのモデルの検索・一覧表示画面を用意しなかった場合、暗黙条件は利用できません。(設定は無効となります。)

トラブルシューティング

暗黙条件が効かないという場合の確認方法を説明します。

  • システム管理者(admin)でログオンしていませんか? システム管理者には暗黙条件が適用されません。
  • "適用外の権限" を定義したときは "権限 > 機能権限" の設定で、これを同名のパーミッションとして用意する必要があります。