テーブルの管理:計算式(既定)
## 概要
「計算式(既定)」は、[数値項目](/ja/manual/table-management-num)に入力されたデータを対象として**四則演算**を行う機能です。画面表示が更新された際、およびレコードが追加、変更、削除された際に、設定した計算式に基づいて、自動計算されます。
### 計算式(既定)作成のポイント
1. 「計算式(既定)」では、[表示名](/ja/manual/table-management-label-text)、項目名、[カラム名](/ja/manual/dev-column-name)、数値、四則演算子(+、-、\*、/)と半角の丸括弧を使えます。
1. 演算子の前後には、半角スペースを入力してください。
1. [計算式(拡張)](/ja/manual/table-management-formula-extended)または[サーバスクリプト](/ja/manual/table-management-server-script)を使うと、関数を使った計算や、日付の計算が可能です。
## 前提条件
1. 計算式を設定するには「サイトの管理権限」が必要です。
## 操作手順
「単価」項目と「数量」項目にデータを入力すると、「小計」項目を自動計算するように設定する手順です。
1. ナビゲーションメニューから「管理」→[テーブルの管理](/ja/manual/table-management)を選択してください。
1. [エディタ](/ja/manual/table-editor)タブを開き、3つの[数値項目](/ja/manual/table-management-num)を有効化してください。[表示名](/ja/manual/table-management-label-text)をそれぞれ「単価」、「数量」、「小計」と変更してください。変更後、コマンドボタンエリアの「更新」ボタンをクリックしてください。

1. [計算式](/ja/manual/table-management-formula)タブを開き、「新規作成」ボタンをクリックしてください。

1. 「計算方法」で「既定」を選択してください。「対象」で「小計」を選択してください。[計算式](/ja/manual/table-management-formula)に「単価 \* 数量」と入力します。入力後「追加」ボタンをクリックしてください。
```
単価 * 数量
```

1. 以下の画面が表示されれば成功です。

1. レコードの編集画面で、「単価」と「数量」を入力し、「作成」ボタンをクリックしてください。

1. 「作成」または「更新」ボタンを押したタイミングで自動的に計算式が処理され、小計項目に計算結果が入ります。

## 作成済みのレコードに計算式を適用する、既存の計算式を変更する
作成済みのレコードに対して新たに計算式を設定した場合や、既存の計算式を更新した場合は、「計算式の一覧」で対象の計算式にチェックを入れ、「同期」ボタンをクリックすると再計算されます。

## 計算対象の表示名に半角丸括弧が含まれる場合
たとえば「消費税(10%)」のように、半角括弧を含む表示名を使用している場合は、NumAのような[カラム名](/ja/manual/dev-column-name)を指定してください。
[表示名](/ja/manual/table-management-label-text)に半角括弧を使用した項目を指定するとエラーが発生します。

その場合、下図のようにカラム名で指定してください。

計算式の一覧では、表示名に置き換えて表示されます。

## 計算式のログ出力
計算式が意図通りに動かない場合、ログ出力が役に立つことがあります。ここでは「粗利=売上-仕入合計」を計算した場合のログ出力を例に説明します。
1. 次のように3つの項目を用意してください。
|項目名|カラム名|表示名|役割|
|:--|:--|:--|:--|
|数値A|NumA|粗利|計算結果の格納|
|数値B|NumB|売上|計算対象の記入|
|数値C|NumC|仕入合計|計算対象の記入|
1. [計算式](/ja/manual/table-management-formula)タブを開き、下表のように計算式を設定してください。
|計算方法|対象|計算式|
|:--|:--|:--|
|既定|粗利|売上 - 仕入合計|
1. 「ログを出力する」にチェックを入れてください。
1. コマンドボタンエリアの「更新」ボタンをクリックしてください。
1. Webブラウザの「開発者ツール」を開き、「コンソール」を開きます。
1. 新規レコード作成画面を開き、「売上」と「仕入合計」に、下記の値を入力して「作成」ボタンをクリックしてください。
|売上|仕入合計|
|--:|--:|
|1000000|500000|
1. コマンドボタンエリアの「更新」ボタンをクリックすると、「コンソール」に以下のようなログが出力されます。
### 整形後のログ
整形すると、3つのオブジェクトが出力されていることが分かります。
```json
formulaSet: {
"CalculationMethod": "Default",
"Target": "NumA",
"Formula": {
"OperatorType": 0,
"Children":[
{"ColumnName": "NumB", "OperatorType": 0},
{"ColumnName": "NumC", "OperatorType": 2}
]
},
"Id":1
}
formulaSource: {
"NumA": 500000.0000,
"NumB": 1000000.0000,
"NumC": 500000.0000
}
formulaResult: {
"NumA": 500000
}
```
## ログの読み方
3つのオブジェクトの詳細は以下の通りです。
| JSONオブジェクト | 意味 |
| :--------------- | :--------------------------- |
| formulaSet | 計算式の設定 |
| formulaSource | 計算の対象になる各カラムの値 |
| formulaResult | 計算結果 |
formulaSetオブジェクトの詳細は以下の通りです。
| formulaSetオブジェクトの値 | 意味 |
| :------------------------- | :----------------------------------------------------- |
| Target | 対象項目 |
| Formula | 計算式 |
| Children | 計算内容 |
| OperatorType | 演算子(0:なし、1:加算、2:減算 、3:乗算、4:除算) |
| ColumnName | カラム名 |
| Id | 計算式のID |
## 関連情報
<div id="ManualList"><ul><li><a href="/ja/manual/table-editor">テーブル機能:レコードのエディタ画面</a><span>2023/04/12 up</span></li></ul></article>
<ul><li><a href="/ja/manual/table-management">テーブルの管理</a><span>2024/05/24 up</span></li></ul></article>
<ul><li><a href="/ja/manual/table-management-num">テーブルの管理:項目:数値</a><span>2023/04/21 up</span></li></ul></article>
<ul><li><a href="/ja/manual/table-management-editor">テーブルの管理:エディタ</a><span>2024/04/09 up</span></li>
<li><a href="/ja/manual/table-management-editor-columns">テーブルの管理:エディタ:エディタの項目の設定</a><span>2024/12/19 up</span></li>
<li><a href="/ja/manual/table-management-label-text">テーブルの管理:エディタ:項目の詳細設定:表示名</a><span>2023/04/25 up</span></li></ul></article>
<ul><li><a href="/ja/manual/table-management-formula">テーブルの管理:計算式</a><span>2024/12/10 up</span></li>
<li><a href="/ja/manual/table-management-formula-extended">テーブルの管理:計算式(拡張)</a><span>2024/06/07 up</span></li></ul></article>
<ul><li><a href="/ja/manual/table-management-server-script">テーブルの管理:サーバスクリプト</a><span>2025/05/13 up</span></li></ul></article>
<ul><li><a href="/ja/manual/dev-column-name">項目名とデータベース上のカラム名の対応</a><span>2024/12/19 up</span></li></ul></article>
<ul><li><a href="/ja/manual/server-script">開発者向け機能:サーバスクリプト</a><span>2023/06/01 up</span></li></ul></article>
<ul><li><a href="/ja/manual/faq-server-script-log">FAQ:サーバスクリプトのエラーログを出力したい</a><span>2024/04/29 up</span></li></ul></article></div><input id="SearchTextHidden" type="hidden" value="" />