ブログ

2024/07/31
【プリザンター】 第258回)テーブルをリンクしたときの子テーブルへのコピーと削除の連動設定

テーブルのリンク時のコピーと削除動作について

こんにちは、CCS田中です。

プリザンターでは、テーブルをリンクさせてマスタ参照的に親テーブルと子テーブルの関係を簡単に構築することができます。
このブログの第4回で紹介した「【プリザンター】第4回)マスタテーブルを作成して連携させてみよう
でGUIでの操作方法を説明しています。
この方法以外にも、子テーブルとなる方のマスタを参照する分類項目に、[[SiteId]] (※SiteIdは、実際のサイトIDの数字を記入)と入力することで参照させることができます。

テーブルのリンクを作成して、実際の運用を始めるとレコードのコピーや削除を行うケースが出てきます。テーブルのリンクが設定されている親レコードをコピーや削除をしたときに、一緒にレコードもコピーや削除されてほしいと思うときがあります。
プリザンターでは、この動作を行うための設定方法が用意されていますので、今回はコピー、削除、その両方を行うときの方法を説明します。

親レ―コードのコピー・削除時に子テーブルのレコードのコピー・削除の方法

今回、セミナー管理を例にして説明します。

まずは以下の準備を行います。
セミナーの一覧のテーブルA(親)セミナーごとの出席者のテーブルB(子)を用意します。
テーブルA(サイトID:10)には、セミナー名(タイトル)と開催日(日付A)を登録します。
テーブルB(サイトID:20)には、セミナー名(分類A)と出席者(担当者)と出欠(状況)を登録します。

ここで通常であれば、テーブルBの分類Aには、[[10]] と記述すればよいのですが、今回はLinkActionsを使って登録します。
なおコピーの場合は、コピーしたときにタイトルに「- コピー」というテキストを追加するように設定し、コメントはコピーしないように設定します。
またコピーの時は、コピーする子レコードを条件で絞り込むことができます。今回、出欠(状況)を以下のように設定し、「開催前」「出席」の人だけコピーするように設定します。

<出欠(状況)の選択肢一覧>
100,開催前,前,status-new
900,出席,出,status-closed
910,欠席,欠,status-rejected

<コピー時の分類Aの選択肢の設定>


[
{
"SiteId": 117093,
"LinkActions": [
{
"Type": "CopyWithLinks",
"CharToAddWhenCopying": " - コピー",
"CopyWithComments": false,
"View":{
"ColumnFilterHash":{
"Status":"[\"100,900\"]",
},
},
}
]
}
]


<削除時の分類Aの選択肢の設定>

[
{
"SiteId": 10,
"LinkActions": [
{
"Type": "DeleteWithLinks"
}
]
}
]


<コピーと削除の両方を行う設定>

[
{
"SiteId": 10,
"LinkActions": [
{
"Type": "CopyWithLinks",
"CharToAddWhenCopying": " - コピー",
"CopyWithComments": false,
"View":{
"ColumnFilterHash":{
"Status":"[\"100,900\"]",
},
},
}
]
},
{
"SiteId": 10,
"LinkActions": [
{
"Type": "DeleteWithLinks"
}
]
}
]


上記の設定が終わったら、レコードがいくつか登録された状態で、親レコードのコピーや削除を行ってみてください。
条件に従って子レコードもコピーされたり、削除されたりすることを確認できると思います。

まとめ

いかがでしたか?

今回の内容はオンラインマニュアルにもありますが、一部詳細が記載されていなかったり、両方同時に実行できるとの記載はありますが、その記載方法がなかったりして分からない人もいるかと思いますので、今回の記事を参考に試してみてください。

弊社ではプリザンターをご使用中、または、これからご使用になられる方向けに、運用ノウハウ集、プリザンター逆引き辞典、スタイル・スクリプトサンプル集の販売を行っております。
また、 プリザンターからのExcel帳票出力・PDF帳票出力の支援パック販売 も行っております。
プリザンター導入の支援や、スクリプト開発などの支援も行っておりますので、まずは気軽にご相談ください。
※ご相談の内容によっては有料となる場合がございます。予めご了承ください。
☆☆☆
ブログ内容への質問や追加説明をご希望の方は【 問い合わせフォーム 】からお気軽にお問い合わせください
☆☆☆

PAGE TOP