テーブルの管理:計算式(拡張)
## 概要
四則演算の他、専用の関数を利用した計算式を登録します。出力先は数値項目だけでなくそのほかの項目も選択可能です。
## 前提条件
1. 「サイトの管理権限」が必要です。
## 操作手順
1. [計算]タブを開き、「新規作成」ボタンをクリックしてください。
1. 「計算方法」で「拡張」を選択してください。
1. 「対象」から出力先の項目を選択してください。
1. 計算式の設定を行います。詳細は「計算式の記述方法」を参照ください。
1. 「追加」ボタンをクリックしてください。
1. 画面下の「更新」をクリックしてください。画面下に「"(タイトル)" の更新が完了しました。」とメッセージが表示されたら完了です。
## 計算式の記述方法
計算式は下記の記述方法で設定できます。
1. 項目の表示名を使用して四則演算の計算を登録できます。
![image](/binaries/54907d302cef4068909b7190b8e24553)
1. 専用の関数を利用できます。使用できる関数は「[計算式(拡張)の関数一覧](/manual/formula-function-list)」を参照ください。
![image](/binaries/18c83a5aa1d44a45b9c083a741b71591)
1. 表示名ではなくカラム名を角括弧([])で囲んだ記述が可能です。カラム名を角角括弧([])で囲んだ記述を行った場合、追加時点で表示名に自動的に変換します。
#### 追加前
![image](/binaries/f084bc93a2214a419b796d0195e92838)
#### 追加後
![image](/binaries/f8503bf5f1c943698ffa4a4d46797795)
## 表示名を使用しない
「表示名を使用しない」をチェックONにすると計算式にカラム名を角角括弧([])で囲んだ記述をしても表示名に変換されずに登録できます。
#### 追加前
![image](/binaries/ae0f090f016841aa9bc25778fe26af74)
#### 追加後
![image](/binaries/c6cfc409fc9d49b8b1dde3eccc3661ce)
## エラーを表示する
計算式でエラーが発生した場合はシステムログにエラー内容が記録されます。
例) 計算式を以下のように設定し、数値A:-10、数値B:12、数値C:11と入力後、作成ボタンをクリック
![image](/binaries/b35656dfff6e45688d86aa0abaa942fb)
計算式でエラー発生するため、結果が表示しない。(登録処理は正常終了する)
![image](/binaries/1f73d5e036f04b3893c358edfc0d2231)
「管理」-「[システムログの管理](/manual/syslog)」よりエラーログを確認できます。
![image](/binaries/df7fb29189564cb8b1c27b7150d8b29c)
「エラーを表示する」チェックONにした場合は、システムログにエラー内容が記録されるとともに、画面上に「アプリケーションエラー」のメッセージが画面下部に表示します。
![image](/binaries/7d3aa82d272341b78f3f5db27d70f8d2)
![image](/binaries/397cab297f9f4581b72df1f99b75251c)
## 計算式のログ出力
1. [計算]タブを開き、「ログを出力する」にチェックを入れてください。
1. 画面下の「更新」をクリックしてください。
1. F12キー等でブラウザの開発者ツールのコンソールで作成や更新後に以下のようなログが出力されていることを確認してください。
例)
【計算式】
対象:日付A(DateA)
計算式:$DATE(数値A,数値B,数値C)
【項目の値】
数値A:2023
数値B:12
数値C:11
【ログ】
```
formulaSet: {"CalculationMethod":"Script","Target":"DateA","NotUseDisplayName":false,"IsDisplayError":false,"FormulaScript":"$DATE(model.NumA,model.NumB,model.NumC)","FormulaMapping":"{\"NumA\":\"数値A\",\"NumB\":\"数値B\",\"NumC\":\"数値C\"}","Id":1}
formulaSource: {"IssueId":51366,~途中省略~,"NumHash":{"NumA":{"Value":2023.0000},"NumB":{"Value":12.0000},"NumC":{"Value":11.0000}},~以下略~}
formulaResult: {"DateA":2023/12/11}
```
### ログの内容について
ログで出力される内容は以下の通りです。
・formulaSet:計算式の設定
・formulaSource:計算のもととなる項目の値
・formulaResult:計算結果
「formulaSet」で出力される内容については以下の通りです。
・Target:対象項目
・FormulaScript:計算式
・FormulaMapping:項目
・Id:計算式ID
## 動作イメージ
「生年月日」「年齢算出基準日」という日付項目、「満年齢」という数値項目を追加します。
![image](/binaries/1b8d874804f847b2a84df0027f04de4f)
「対象」は「満年齢」を選択し、「[計算式](/manual/table-management-formula)」は「$DATEDIF(生年月日, 年齢算出基準日,'Y')」と入力します。
![image](/binaries/06cceeeab151412a8cd619bbdabbae5b)
実際にエディタ画面で「生年月日」「年齢算出基準日」を入力して計算してみます。
![image](/binaries/67a764893a9942e7a487a4341f5c4497)
「作成」または「更新」ボタンを押したタイミングで自動的に計算し、保存されます。
![image](/binaries/bd740bccca124257bfd9cc8fb653ad37)
すでに保存済みのレコードに対しての計算や、計算式の変更を行った場合は「同期」ボタンを押して再計算を行います。
---
## 関連情報
<div id="ManualList"><ul><li><a href="/manual/table-management-formula">テーブルの管理:計算式</a><span>2023/12/11 up</span></li>
<li><a href="/manual/formula-function-list">計算式(拡張)の関数一覧</a><span>2024/01/16 up</span></li></ul></article>
<ul><li><a href="/manual/syslog">システムログ管理機能</a><span>2024/01/16 up</span></li></ul></article></div><input id="SearchTextHidden" type="hidden" value="" />