おはようございます!
今回の記事ではプリザンターの拡張SQL機能を使ってテーブルに連番を振っていこうと思います。
参考サイト
自動連番のイメージ
現在、プリザンターのレコードは以下のように3つ存在しています。
レコードの一つを覗いてみると・・・
赤枠で囲まれている自動連番という項目がありますね。
作り方は「テーブルの管理」→エディタで作成できます。
(あまりイメージが湧かない方は公式ページを参照しましょう!)
Pleasanter ユーザーマニュアル テーブルの管理
こちらの番号がテーブル作成時に自動で振られていくというイメージになります。
拡張SQLの実装
それでは拡張SQLの実装をしていきます。
拡張SQLを書く上で大切なのはまず自動連番を実装したいテーブルのサイトIdとフォームの列名(データベースの列名)です。
まずはSQL Server Management Studioを開き、それぞれの列名を確認します。
今回連番を振りたいSiteIdは「62」、フォームの列名は「ClassA」ということが分かりますね!
連番を振るSQLは以下になります。
UPDATE Results SET ClassA =
(SELECT MAX(ClassA) FROM Results WHERE SiteId = 62) + 1
WHERE ResultId = {{Id}};
※{{Id}}はレコードのIDに置換されます。
また、今回は記録テーブルで連番を実装するのでWhere句にResultIdを設定していますが、期限付きテーブルの際はIssueIdで設定を行ってください。
次に上記に掲載した「プリザンター 拡張SQL書き方の例」に倣ってjsonファイルを作成していきます。
{
"Description": "Sample",
"SiteIdList": [62],
"IdList": null,
"OnCreating": false,
"OnCreated": true,
"OnUpdating": false,
"OnUpdated": false,
"OnDeleting": false,
"OnDeleted": false,
"OnBulkDeleting": false,
"OnBulkDeleted": false,
"OnImporting": false,
"OnImported": false,
"OnSelectingWhere": false,
"CommandText": "UPDATE Results SET ClassA = (SELECT MAX(ClassA) FROM Results WHERE SiteId = 62) + 1 WHERE ResultId = {{Id}};"
}
"SiteId"は「62」に設定し、新しくテーブルを作成したときに連番を振りたいので"OnCreated"を「true」としています。
拡張SQLは"CommandText"欄にコピーしてください。
作成したjsonファイルは\pleasanter\App_Data\Parameters\ExtendedSqlsに置いてください。
それでは、新しくレコードを作ってみましょう!!
先ほどまでに3つのレコードを作っているので次に作られるレコードには「4」が振られればOKです!
無事に「4」が振られました!
おわりに
ということで、プリザンターの拡張SQL機能を使って自動連番を実装する方法を書きました!
拡張SQLは凄く便利な機能なのでぜひ利用してみてください!
ではでは!