スポンサーリンク

【pleasanter】リンクとルックアップ①リンクの基本

プリザンター
スポンサーリンク
※当サイトは広告を含みます

※おことわり
2025年8月時点の情報です。プリザンターのバージョンは 1.4.14.0 です。Google Chrome でやっています。
javascript,html,cssともに初心者です。調べながら、やってみながら、きっとこうすればいいんだ!という感じで書いていますので、間違っている、または効率的な書き方ではない可能性が大いにあります。間違ってるよ!とか、こうしたほうがいいよ!ということがありましたら、コメント等で教えていただけると大変ありがたいです。

1.はじめに

以前から、ぱらぱらと分類項目の選択肢について、これってどうやるんだ?と思った都度やってきました。

脳みそがザルの形状をしているようで、いまだに覚えられず、都度しらべて「そうそう、こうやるんだった」とやっているので、今一度総復習してまとめてみようと思います。(自分のために。。。)

2.プリザンターのリンクとは

データベースの世界には、「リレーションシップ(関連付け)」という考え方があります。複数の情報をバラバラに持つのではなく、共通の項目で関連付けることで、データの整合性を保ち、効率的に管理するための仕組みです。プリザンターの「リンク」機能は、まさにこのリレーションシップをノーコードで簡単に実現してくれる、とてもパワフルな機能です。

プリザンター内のテーブルを「リンク」させる = データベースにおける「リレーションシップ」と考えてよいと思います。
これにより、情報の参照や管理が格段に効率的になります。

少し身近なExcelで例えるなら、入力規則の「リスト」機能に近い感覚もあります。例えば、商品入力時に「商品マスタ」にある商品名だけをプルダウンで選べるように設定するようなイメージです。リンク機能を使えば、別のテーブルに登録されている項目を、入力したい場所の選択肢として表示し、手入力の手間やミスを減らすことができます。

プリザンターの「リンク」機能は、データベースの肝となる「リレーションシップ」をノーコードで実現し、複数のテーブル間での情報連携をスムーズにする強力な機能です。これにより、情報の重複入力がなくなり、データの正確性が向上し、必要な情報へ素早くアクセスできるようになります。

「データの管理がバラバラで困っている…」「もっと効率的に情報を連携させたい!」と感じているなら、ぜひプリザンターの「リンク」機能を試してみてください。きっと業務が格段に効率的になります!

3.テーブルをリンクさせる方法

(1)テーブルをリンクさせるには~準備~

例として、「商品マスタ」テーブルと「販売記録」テーブルをリンクさせてみたいと思います。

「商品マスタ」テーブルが【親】
「販売記録」テーブルが【子】
です。
「販売記録」テーブルから「商品マスタ」テーブルを参照し、商品マスタテーブルの「商品」を選択し、販売個数や販売日を記録していきます。

■商品マスタ【親】

項目表示名メモ
タイトル商品名これがキーとなります!リンク先のテーブルに表示される項目です。
分類A商品区分100,食品/200,雑貨/300,その他
数値A単価
状況状況100,有効/900,無効

■販売記録【子】

項目表示名メモ
タイトルタイトル
日付A受注日
分類A商品名ここを「商品マスタ」テーブルと連結させます!
数値A個数
数値B単価
数値C金額

親テーブルには商品をあらかじめ登録しておきます。

親テーブル「商品マスタ」イメージ

(2)テーブルをリンクさせる方法①テーブルをドラックしてリンク

さて!テーブルをリンクさせます!

リンクさせるには「子テーブル」をドラックして「親テーブル」に重ねます。

見に行く方の【子テーブル】「販売記録」を【親テーブル】「商品マスタ」の上に重ねます。
子どもを親にのっける(子亀を親亀にのっける)イメージです。🐢🐢

すると、子テーブルの、どの項目に紐づけて、何て名前にしますか?というダイアログボックスが出るので、今回は「分類A」を選択し、表示名を「商品名」としました。
(すでに「販売記録」テーブルで分類Aを「商品名」としている場合は「分類A」ではなく「商品名」として選択肢に表示されます。)

さて!「販売記録」テーブルでレコードを新規作成してみましょう!
おおっ!商品マスタの内容が選択肢として表示されました!

さて、テーブルの管理でエディタの設定を見てみると、どうなっているかというと。。。
分類A(商品名)の選択肢一覧に自動的に親テーブルのサイトIDが二重角カッコで囲われて設定されています。

販売記録>テーブルの管理>エディタ>分類A

(3)テーブルをリンクさせる方法②エディタの選択肢に親テーブルのIDを入力

実は、ドラッグしたりしなくても、子テーブルの連結させたい項目の選択肢に親テーブルのサイトIDを二重角カッコで囲って入力すれば、リンクが作成されます。
私は断然こちら派です。

やり方は
①親テーブルのIDを控えておく(今回は1414)
②子テーブルのリンクさせたい項目の選択肢一覧に二重角カッコで囲って親テーブルIDを入力する。
簡単ですね!

または、以下のようにJSON形式で入力しても同じ結果となります。JSON形式での入力はフィルターやソート、ルックアップなどのオプションも設定できるので、さらに便利です。(後日やります)

(4)開発者用ツールで見てみる

販売記録の「商品名」(分類A)の部分で 右クリック>検証 でhtmlの中身を見てみます。
選択肢として、親サイト「商品マスタ」のレコードIDが value(値)、タイトルが 表示名 として設定されているのが分かります。

(5)リンクを解除するには

リンクを解除するには、リンクを設定した項目の選択肢一覧の親サイトIDを削除すると、リンクの設定は解除されます。
すでに入力したレコードがある場合は、注意が必要です。

(6)注意事項

リンクを正しく設定しても、ログインユーザーにリンクしたテーブルの読取権限がないとリンクした項目が表示されません。選択肢から選択することもできません。結構やっちゃう凡ミスです。
なお、読取権限の有無にかかわらず、親テーブルからレコードを完全に削除すると、?IDの表示となってしまいますので、注意が必要です。ゴミ箱にあるうちは(たぶん)表示されますが、ゴミ箱からも削除してしまうと?になりました。

マスタテーブル(親テーブル)については、一般ユーザーには意識してもらう必要がない場合も多いと思います。そんな時は、マスタテーブルの「サイトのアクセス権限」で、一般ユーザー向けには「読取専用」のアクセス権限を設定し、さらに「読取専用の場合は画面に表示しない」にチェックを入れるとマスタテーブルは表示されなくなります。余計なものは見えないほうが、いいですよね。プリザンターって、あってほしい機能が用意されている。ほんと、行き届いているなぁと感心します。

4.リンクしたアイテムの作成 ボタン

(1)リンクしたアイテムの作成

親テーブルの方には、「リンクしたアイテムの作成」エリアが出ています。
リンクしたテーブル名のボタンがあり、このボタンをクリックすると、子テーブルの新規レコード登録画面が立ち上がります。

例えば親テーブル「商品マスタ」の「シャンプー」レコードでリンクしたアイテムの作成ボタンをクリックすると、子テーブル「販売記録」の新規作成画面が開きます。「商品」にはシャンプーがセットされています。

これって結構便利で、例えば「商品マスタ」にリンクさせた「発注管理」サイトを作成していた場合、この商品少なくなってきたから発注したいなーというとき、商品マスタで「発注管理」のリンクしたアイテムの作成ボタンをクリックすると、自動で「発注管理」サイトの新規作成画面が立ち上がり、発注作業に進むことができます。サイトを開きなおしたり、移動したりする手間がなくなるので、便利だし、プログラムを書いたわけでもないのに「すごいシステム作ったね!」なんて言われちゃったりして、ちょっといい気分になれたりします。

(2)リンクしたアイテムの作成ボタンの表示・非表示

逆に、親テーブルから勝手に子テーブルのレコード作成してほしくない、ということもあります。単に必要ないからジャマ、ということもあります。

リンクしたアイテムの作成ボタンを表示させないようにするには「子テーブル」の方で設定します。

子テーブルの テーブルの管理>エディタ
リンクを設定している項目の選択肢の記載に NoAddButton を追加します。
[[サイトId,NoAddButton]]

設定例(1414の部分は実際の親テーブルのサイトIDに書き換えてください)

[[1414,NoAddButton]]

json形式で記述する場合は、以下のようにします。
(1414の部分は実際の親テーブルのサイトIDに書き換えてください)

[
    {
        "SiteId": 1414,
        "NoAddbutton": true
    }
]

5.リンクの表示

リンクを設定していると、リンクエリアっていうんですかね?正式名称はわかりませんが、下の方にリンク先テーブルの項目が表示されます。

この部分は非表示にしたり、表示する場所を変えたり、表示する項目や並び順等を変えたりすることができます。

(1)リンクの表示・非表示(自テーブル:エディタタブ)

編集画面にリンクエリアを表示したくない場合は、エディタタブで「リンクを表示しない」のチェックをオンにします。

(2)リンクエリア内の表示項目を設定する(他テーブル:リンクタブ)

リンクエリアに表示される項目は、リンク元テーブルの「リンク」タブで設定します。

例えば「販売記録」の編集画面のリンクエリアに表示する親テーブル「商品マスタ」の表示項目を変更したい場合は、「商品マスタ」の「リンク」タブで設定します。

(3)リンク表示の優先順位(子テーブル:エディタタブ)

マスタのような親テーブルでは、複数の子テーブルを持つケースがよくあります。
リンクしたアイテムの作成ボタン、リンクエリアの表示順序を指定することができます。
子テーブルのエディタの設定、リンク項目の選択肢一覧で以下のように Priority オプションで優先度を指定します。Priorityに設定した値が小さい方が優先順位が高くなります。

設定例(サイトIDは実際のサイトIDに書き換えてください)

[
    {
        "SiteId": 1414,
        "Priority": 100
    }
]

例えば、親テーブル「商品マスタ」の子テーブル「販売記録」「発注管理」があり、「発注管理」を優先したい場合、「発注管理」の選択肢一覧では Priorityを100 とし、「販売記録」の選択肢一覧では Priorityを200 とします。

(4)リンクエリアを表示させる場所の変更(自テーブル:エディタタブ)

リンクエリアを表示する場所を変更したいときは、そのテーブルの「エディタ」タブで設定します。

例えば、「販売記録」テーブルの編集画面で表示する、「商品マスタ」のリンクの表示を「担当者」項目と「見出し」の間に変更したいとします。

「販売記録」テーブル>テーブルの管理>エディタ
①選択肢一覧から「リンク」を選択
②リンクテーブルを選択し「有効化」ボタンクリック
③表示させたい個所に移動

親テーブルでも「リンク」タブで表示場所を変更することができます。
下図は「状況」項目の上に「販売記録」のリンク、下に「発注管理」のリンクを表示するように指定した例です。

(5)リンクエリア内の表示にビューを利用する(ビュータブ、リンクタブ)

例えば、リンクエリアに表示するレコードを数量の大きい順に並べて表示したい!というときとか。
リンクエリアに表示されるテーブルの「ビュー」タブと「リンク」タブで設定します。

「商品マスタ」テーブルのリンクエリアに表示する「販売記録」テーブルのレコードを個数の大きい順に表示したい!という例でやってみます。

①「販売記録」テーブルの「ビュー」タブで個数を降順にするビューを設定します。
ビュー名は「リンク表示用」とします。
「更新」ボタンをクリックします。

②おなじく「販売記録」テーブルの「リンク」タブ、下部の「既定のビュー」に①で作成したビュー「リンク表示用」を指定します。
※「既定のビュー」が表示されない場合、一度一覧画面などを表示し、再度「テーブルの管理」を開いてみてください。

「商品マスタ」テーブルで、レコードを開いてみます。
リンクエリアには「販売記録」テーブルのレコードが個数の降順で表示されています!

6.注意事項

リンクしたレコード件数が上限を超えると、新規または編集画面で選択肢を表示する際に、すべての選択肢が表示されません。
上限は設定によりますが、規定値は500件です。
なお、上限を超える場合でも、エディタの設定でリンク項目の「検索機能を使う」のチェックをオンにすることで、解消されます。
設定の上限値を変更する場合等は、公式マニュアルをご参照ください。

リンクした分類項目の取得件数の上限設定方法

7.最後に

実は!リンクエリアの表示場所の変更とか、ビューを利用する方法とか、知らなかった!奥が深い!芸が細かい!隅々まで行き届いている!と、いつものことながら感心します。

リンクの表示の設定については、自分のテーブルで設定するのか、リンク元(先?)のテーブルで設定するのか、いつも迷子になっていましたが、今回で覚えたかな?

次回、リンクした選択肢をフィルタしたり、ソートしたり、をやってみたいと思います!
ほんと、奥が深い。

8.参考文献、記事

公式マニュアル
テーブルの管理:エディタ:項目の詳細設定:選択肢一覧:リンク
テーブルの管理:リンク
応用編:リンク
選択肢一覧で設定可能なJSONパラメータ

内部リンク:リンクとルックアップシリーズ
【pleasanter】リンクとルックアップ①リンクの基本
【pleasanter】リンクとルックアップ②フィルタ、ソート
【pleasanter】リンクとルックアップ③ルックアップ

もう読みました?プリザンターの概要、インストール方法から基本操作方法、導入事例、サンプル等役に立つ情報が満載!

コメント

タイトルとURLをコピーしました