マスターテーブル参照のスクリプト
まずは、従業員を選択するメインテーブル(記録テーブル)に、「従業員名」を分類A、「部署名」を説明Aとして準備し、マスターテーブル(記録テーブル)では、「従業員名」をタイトル、「部署名」を分類Aとして準備します。
マスターテーブルには、従業員名と部署名を事前に登録しておきます。
また、メインテーブルの従業員名:分類Aは、マスターテーブルのタイトルにリンクさせておきます。
(マスターテーブルにある従業員名を選択できるようにするためです)
テーブルのリンクについては、以前のブログ記事をご覧ください。
作成するスクリプトは、以下の通りです。
詳細な説明はスクリプト中に記載していますので、別途の説明は割愛します。
記載するスクリプト
//編集画面読込時のイベント
$p.events.on_editor_load = function () {
getParentData();
}
//「分類A」の値が変更されるたびに呼び出されるイベント
$(document).on('change', '#Results_ClassA', function () {
getParentData();
});
function getParentData() {
if ($('#Results_ClassA').val()) {
$p.apiGet({
//「従業員名:分類A」の値(レコードID)を指定
'id': $('#Results_ClassA').val(),
'done': function (data) {
//メインテーブル「部署名:説明A」に従業員マスターテーブル「部署名:分類A」の値をセット
$p.set($('#Results_DescriptionA'), data.Response.Data[0].ClassA);
},
'fail': function (data) {
console.log(data);
}
});
} else {
//「部署名:分類A」に値がセットされていない場合、「部署名:説明A」に空文字をセット
$p.set($('#Results_DescriptionA'), '');
}
}
スクリプトでは、「新規作成」と「編集」にチェックを入れます。
さて、メインテーブルを開いて、従業員を選択してみます。
ちゃんとマスターテーブルに従って、部署名が選択されていると思います。
ここでは、同姓同名などは考慮していませんので、細かくやろうとすると、もう少し検討が必要かも知れませんが、やり方としては上記のようになります。
ブログ閲覧者からのご要望
こんにちは、CCS田中です。
今回、ブログを閲覧していただいている方から、以下の内容をブログで記載してほしいというご要望をいただきました。
「従業員を選択した際、その所属組織名を自動入力したい」というものです。
Excelでいうところのvlookup機能と同じものですね。
従業員マスターテーブルがあることを前提に、そこに従業員名と部署名の列があり、メインテーブルで従業員名を指定するとマッチした行の部署名を引っ張ってくるということになります。
これについてはスクリプトで実現できますので、詳細を次に説明します。