【プリザンター】拡張SQL機能を使って自動連番を実装するよ!


おはようございます!

今回の記事ではプリザンターの拡張SQL機能を使ってテーブルに連番を振っていこうと思います。

参考サイト

プリザンター システム機能:拡張SQL

プリザンター 拡張SQL書き方の例

Pleasanter ユーザーマニュアル-拡張SQL

自動連番のイメージ

現在、プリザンターのレコードは以下のように3つ存在しています。

レコードの一つを覗いてみると・・・

赤枠で囲まれている自動連番という項目がありますね。

作り方は「テーブルの管理」→エディタで作成できます。

(あまりイメージが湧かない方は公式ページを参照しましょう!)
Pleasanter ユーザーマニュアル テーブルの管理

こちらの番号がテーブル作成時に自動で振られていくというイメージになります。

拡張SQLの実装

それでは拡張SQLの実装をしていきます。

拡張SQLを書く上で大切なのはまず自動連番を実装したいテーブルのサイトIdとフォームの列名(データベースの列名)です。

まずはSQL Server Management Studioを開き、それぞれの列名を確認します。



今回連番を振りたいSiteIdは「62」、フォームの列名は「ClassA」ということが分かりますね!

連番を振るSQLは以下になります。

自動連番.sql
UPDATE Results SET ClassA = 
(SELECT MAX(ClassA) FROM Results WHERE SiteId = 62) + 1
WHERE ResultId = {{Id}};

※{{Id}}はレコードのIDに置換されます。

また、今回は記録テーブルで連番を実装するのでWhere句にResultIdを設定していますが、期限付きテーブルの際はIssueIdで設定を行ってください。

次に上記に掲載した「プリザンター 拡張SQL書き方の例」に倣ってjsonファイルを作成していきます。

自動連番.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は凄く便利な機能なのでぜひ利用してみてください!

ではでは!