view.AddColumnPlaceholder
概要¶
viewオブジェクトの「AddColumnPlaceholderメソッド」です。サーバスクリプトで拡張SQLのOnSelectingWhereのプレースホルダに動的なカラム名を指定する際に使用します。
制限事項¶
- カラム名以外の文字列を指定することはできません。
構文¶
パラメータ¶
| No | パラメータ | 型 | 必須 | 概要 |
|---|---|---|---|---|
| 1 | placeholder | string | ○ | プレースホルダ |
| 2 | columnName | string | ○ | カラム名 |
戻り値¶
戻り値はありません。
使用例¶
以下の例では、ユーザID 3 以外のユーザに Name が SelectingWhereName の拡張SQLを適用します。また、SQL内にある {{DynamicColumn}} のプレースホルダ文字列を ClassA に置換して実行します。
拡張SQL¶
JavaScript¶
サンプルコード¶
Note
コード内の【 ... 】は適宜修正してください。
1. ビューごとに、比べる2つの項目を拡張SQLに差し込んで絞る
「左の項目 > 右の項目」の拡張SQL「ColumnGreaterThan」を1つ置き、選んだビューに応じて、比べる項目をview.AddColumnPlaceholderで差し込みます。「予定超過」ビューでは実績工数 > 予定工数、「納期遅れ」ビューでは実績完了日 > 期限のタスクに絞ります。
実務での使いどころ¶
一覧のフィルタでは、項目どうしを比べる条件は作れません。比べ方が同じで項目のみ違う条件ごとに拡張SQLを書くと、ファイルが増え、変えるたびにプリザンターの再起動が要ります。項目をサーバスクリプトから差し込めば、拡張SQLは1つのまま、ビューを足すときはサーバスクリプトの定数を足すのみで済みます。
事前準備¶
1:プリザンターのサーバのApp_Data/Parameters/ExtendedSqlsの下に、下記の拡張SQLのJSONファイルを置き、プリザンターを再起動してください(拡張SQL)。拡張SQLは、画面からは設定できません。
JSON(ExtendedSqls/ColumnGreaterThan.json)¶
{
"Name": "ColumnGreaterThan",
"Description": "左の項目が右の項目より大きいレコード。項目はサーバスクリプトの view.AddColumnPlaceholder で指定する",
"SpecifyByName": true,
"OnSelectingWhere": true,
"CommandText": "({{LeftColumn}} > {{RightColumn}})"
}
2:「タスク管理」テーブル(期限付きテーブル)で、以下の項目を有効化してください。
| 項目コード | 内容 |
|---|---|
| 数値A(NumA) | 実績工数 |
| 数値B(NumB) | 予定工数 |
| 日付A(DateA) | 実績完了日 |
| 日付B(DateB) | 期限 |
3:「ビュー」タブで「予定超過」ビューと「納期遅れ」ビューを作成し、ビューのIDを控えてください。
4:サーバスクリプトを登録します。
4-1:「テーブルの管理 > サーバスクリプト」タブで「新規作成」を選択する。
4-2:タイトル: 任意の名前(例:compareColumnsByView)
4-3:スクリプト: 下記サンプルコードを貼り付け、【 】を3で控えたビューのIDにする
4-4:条件: 「ビュー処理時」にチェック
JavaScript¶
// ビューごとに、比べる2つの項目(左の項目が右の項目より大きいレコードを出す)
// ビューのIDは、テーブルの管理の「ビュー」タブで確かめる
const COMPARISONS = {
【「予定超過」ビューのID】: ['NumA', 'NumB'], // 実績工数 > 予定工数
【「納期遅れ」ビューのID】: ['DateA', 'DateB'], // 実績完了日 > 期限
};
// 選んだビューに比べる項目があれば、拡張SQL「ColumnGreaterThan」の
// {{LeftColumn}}・{{RightColumn}} をその項目に置き換えて絞り込む
const pair = COMPARISONS[view.Id];
if (pair) {
view.OnSelectingWhere = 'ColumnGreaterThan';
view.AddColumnPlaceholder('LeftColumn', pair[0]);
view.AddColumnPlaceholder('RightColumn', pair[1]);
}
注記¶
{{LeftColumn}}・{{RightColumn}}は、"Issues"."NumA"のようにテーブル名を付けた項目に置き換わります(PostgreSQLの場合)。拡張SQLの中でもテーブル名を付けると、SQLが正しくなくなり、エラーが返ります。- 置き換えられるのは項目名(カラム名)のみです。値を差し込むことはできません。
SpecifyByNameをtrueにした拡張SQLは、view.OnSelectingWhereで名前を指定したときのみ当たります。拡張SQLのJSONを変えたときは、プリザンターの再起動が必要です。
対応バージョン¶
| 対応バージョン | 内容 |
|---|---|
| 1.2.2.0 以降 | 機能追加 |
