はじめに
Pleasanterのルックアップは、リンクを指定した上で、リンク先の特定の項目を転記することができる機能です。いわゆる、Excelのvlookupとかと同じイメージです。
このルックアップ、オプションがいろいろありますが、少々理解が難しいこともあり、改めて、オプション指定で何が起こるのか、可能な限りわかりやすくまとめてみたいと思います。
注意
- ルックアップを使うためには、リンク機能を知っておく必要がありますが、こちらについては理解している前提で整理しています。
- 以下に示したサイトは、基本的に自動ポストバックを設定、選択の都度、値が転記されるような設定を前提としています。
基本
参照するマスタサイト
「分類A(ClassA)」を転記します。分類A(ClassA)は単純にテキストを入力しています。
ルックアップで転記する側
分類I(ClassI)にルックアップを指定、分類J(ClassJ)にルックアップしてきた値を転記します。
[
{
"SiteId": 315196,
"Lookups": [
{
"From": "ClassA",
"To": "ClassJ"
}
]
}
]
"SiteId"にルックアップ参照するサイトIDを指定します。
"Lookups"の"From"にルックアップ参照するサイトの転記したい項目(=ClassA)を指定、"To"に転記させたい項目(ClassJ)
ルックアップした結果
分類I(ClassI)に"マスタ2-1-1"を選択すると、同レコードの分類A(ClassA)の値"データ1"が、転記先の分類J(ClassJ)が転記されました。
Typeの指定
実際に試してみます。
参照するマスタサイト
基本の時と同じく、分類A(ClassA)を転記します。今回はこの分類A(ClassA)を以下のように設定します。
テーブルの管理
値と表示名を定義する形で設定します。
ルックアップで転記する側が"Type" : 0 のとき
転記先イメージ
こちらも同じように、分類A(ClassA)にルックアップを指定、分類B(ClassB)に転記します。
分類A(ClassA)の選択肢一覧の設定
[
{
"SiteId": 315180,
"Lookups": [
{
"From": "ClassA",
"To": "ClassB",
"Type": 0
}
]
}
]
ルックアップした結果
ルックアップで転記する側が"Type" : 1 のとき
ルックアップ参照するサイトは、"Type":0 のと同じです。
分類C(ClassC)を以下のように設定します。
[
{
"SiteId": 315180,
"Lookups": [
{
"From": "ClassA",
"To": "ClassD",
"Type": 1
}
]
}
]
ルックアップした結果
"Type" : 0 の応用
転記先の項目を、転記元と同じように選択肢を指定、値と表示名を定義する形で設定します。
転記先項目の分類H(ClassH)は以下のように設定
転記元と同じ選択肢一覧を設定します。
分類G(ClassG)の選択肢一覧の設定は以下のとおり
[
{
"SiteId": 315180,
"Lookups": [
{
"From": "ClassA",
"To": "ClassH",
"Type": 0
}
]
}
]
"Type": 0 を指定します。
ルックアップした結果
Overwrite/OverwriteForm
OverwriteとOverwriteFormは、転記先の項目に値が入力済だった場合、どのような動きになるか、を制御します。
Overwriteの指定
trueの場合
基本で使用したサイトで確認します。未設定のため、規定値Trueの動作になります。
パターン1
実施前 → まだ、値は保存されていない状態
ここで、分類J(ClassJ)に任意の値を入力します。
そこから、分類I(ClassI)を変更します。
分類J(ClassJ)は変更されません。
パターン2
実施前 → 画面を開いた時点で、値が表示される。すでに値は保存済の状態。ここから、分類I(ClassI)を変更します。
ここから、分類I(ClassI)を変更します。
値が転記されました。
falseの場合
以下のように設定を変更します。
[
{
"SiteId": 315196,
"Lookups": [
{
"From": "ClassA",
"To": "ClassJ",
"Type": 0,
"Overwrite": false
}
]
}
]
パターン1
実施前 → まだ、値は保存されていない状態
ここで、分類J(ClassJ)に任意の値を入力します。
そこから、分類I(ClassI)を変更します。
分類J(ClassJ)は変更されません。trueのパターン1と変わりません。
パターン2
実施前 → 画面を開いた時点で、値が表示される。すでに値は保存済の状態。ここから、分類I(ClassI)を変更します。
ここから、分類I(ClassI)を変更します。
今度は値が転記されませんでした。
"OverwriteForm"の指定
falseの場合
既定値のため、"Overwrite"の"true"のパターンで示したものと挙動は同じ。
trueの場合
以下のように設定を変更します。
[
{
"SiteId": 315196,
"Lookups": [
{
"From": "ClassA",
"To": "ClassJ",
"Type": 0,
"OverwriteForm": true
}
]
}
]
パターン1
実施前 → まだ、値は保存されていない状態
ここで、分類J(ClassJ)に任意の値を入力します。
そこから、分類I(ClassI)を変更します。
今度は値が転記されました。
パターン2
実施前 → 画面を開いた時点で、値が表示される。すでに値は保存済の状態。ここから、分類I(ClassI)を変更します。
ここから、分類I(ClassI)を変更します。
値が転記されました。こちらは変わりません。
整理してみる。
少々ややこしいので整理してみました。
No | Overwrite | OverwriteForm | DB保存済の状態で、選択肢を変更した場合 | 値を画面から入力後、選択肢を変更した場合 |
---|---|---|---|---|
1 | TRUE | FALSE | 上書きする | 上書きしない |
2 | FALSE | FALSE | 上書きしない | 上書きしない |
3 | TRUE | TRUE | 上書きする | 上書きする |
4 | FALSE | TRUE | 上書きしない | 上書きする |
ひとことでまとめると・・
- Overwriteは、DB保存済の値を上書きするか否かを制御する
- OverwriteFormは、画面入力値を上書きするか否かを制御する
終わりに
選択肢一覧に設定できるオプションとしては、「選択肢一覧を他の項目の値で絞り込む」というのがありますが、こちらはさらに難しくなるため、また別の機会に整理したいと思います。