計算
計算項目について
計算項目は、他の数値項目の値を参照して、自動で計算を行い結果を表示する項目になります。
計算項目は、項目定義時に計算式を定義しておくことで
計算式に含まれる数値項目が設定されたときに自動で計算が行われます。
追加手順
例として、以下のように商品の売上を計算する項目を考えてみます。
項目名 | 項目種類 |
---|---|
価格 | 数値 |
数量 | 数値 |
売上 | 計算 |
以下のように価格と、数量の項目を数値項目(整数)として追加します。
「計算」をクリックします。
以下のように計算式に数式を入力し、必要であれば「追加設定オプション」を
設定後、「追加する」を押下します。
※「項目名」については、項目名の前後に『全角スペース』/『半角スペース』を含めた場合 自動削除されます。
※「項目名」の入力文字の中に全角スペースを含めた場合は、半角スペースへ自動変換されます。
<追加オプション設定>
必要に応じて「追加設定オプション」を行います。
設定項目 | 内容 |
---|---|
表示条件設定 | 表示条件を設定することができます。条件設定は複数設定することができます。 |
表示設定 | 表示設定することができます。表示設定は「一覧に表示」/「詳細に表示」の2パターンあります。「一覧に表示」にチェックを入れた場合、レコード一覧画面に本項目が表示されます。「詳細に表示」にチェックを入れた場合、レコード詳細画面に本項目が表示されます。 |
一覧の表示幅(px) | レコード一覧に表示する際の表示幅の指定が可能です。単位はピクセルになります。 |
一覧画面スタイル指定 | レコード一覧画面に表示される際のスタイル指定を行う事ができます。スタイル指定を行う場合、「スタイルを指定」にチェックを入れ「文字サイズ」/「フォント」/「文字色」/「位置」の指定を必要に応じて行います。 |
詳細画面スタイル指定 | レコード詳細画面に表示される際のスタイル指定を行う事ができます。スタイル指定を行う場合、「スタイルを指定」にチェックを入れ「文字サイズ」/「フォント」/「文字色」/「位置」の指定を必要に応じて行います。 |
説明用テキスト | フォーム画面に表示の際に項目の下に表示するテキストを設定することができます。項目の説明文などに利用することができます。 |
ヘルプテキスト | フォーム画面に表示の際にツールチップに表示するテキストを設定することができます。項目の説明文などに利用することができます。 |
**検索高速化(インデックス) ** | 検索高速化を行う場合、「検索高速化(インデックス)する」にチェックを入れます。 |
テーブルを保存し、データを登録します。
「売上」が自動で計算されます。
計算項目の数式について
基本的な数式のルールは下記となります。
- 参照する項目名を{}で囲む
- 他のテーブルを参照する場合は::をつける
- 四則演算は+-*/の記号を使います。
例えば、「売上」という計算項目で「価格」と「数量」から計算を行う場合、以下のような数式となります。
{価格}*{数量}
数式で関数を使う場合
関数を使う場合は例えば以下のような式となります。
ROUND({価格}*1.1)*{数量}
計算式で使用可能な関数は下記となります。
名前 | 引数の数 | 説明 | 設定例 | 備考 |
---|---|---|---|---|
ABS() | 1 | 絶対値を返します | ABS(数値) |
()内で指定された数値が絶対値で表示されます |
ACOS() | 1 | アークコサインを返します | ACOS(数値) |
()の数値は求める角度の逆余弦の値を、-1 ~ 1の範囲で指定します。 |
ASIN() | 1 | アークサインを返します | ASIN(数値) |
()の数値は求める角度の正弦(サイン)の値を-1~1の範囲で指定します。 |
ATAN() | 1 | アークタンジェントを返します | ATAN(数値) |
()の数値はタンジェントを表す数値を指定 |
ATAN2(), ATAN() | 1 | 2 つの引数のアークタンジェントを返します | ATAN2(数値),ATAN(数値) |
()の数値はタンジェントを表す数値を指定 |
CEIL() | 1 | 引数の数値以上で最小の整数値を返します | CEIL(1.05) |
設定例では2を返します |
CEILING() | 1 | 引数の数値以上で最小の整数値を返します | CEILING(1.11) |
設定例では2を返します |
CONV() | 3 | 数値を異なる基数間で変換します | CONV(100,mi,km) |
設定例では100マイルをキロメールへ変換します |
COS() | 1 | コサインを返します | COS(数値) |
数値ラジアンのコサインを返します |
COT() | 1 | コタンジェントを返します | COT(数値) |
数値の角度の子タンジェントを返します |
COUNT() | 1 | テーブルのレコード数を数えます | COUNT(式) |
引数の式には、行数を取得する列名(カラム名)や条件式を指定します。また*(アスタリスク)を指定すると、すべてのレコードの行数をカウントします。 |
CRC32() | 1 | 巡回冗長検査値を計算します | CRC32(数値) |
数値の巡回冗長検査値を計算します |
DEGREES() | 1 | ラジアンを角度に変換します | DEGREES(数値) |
数値のラジアンを角度に変換します |
EXP() | 1 | 累乗します | EXP(数値) |
数値を累乗します |
FLOOR() | 1 | 引数以下のもっとも大きな整数値を返します | FLOOR(1.03) |
設定例では1を返します |
LN() | 1 | 引数の自然対数を返します | LN(1) |
設定例では0を返します |
LOG() | 1 | 最初の引数の自然対数を返します | LOG(10) |
設定例では2.30を返します |
LOG10() | 1 | 引数の底 10 の対数を返します | LOG10(145.175642) |
設定例では2.16を返します |
LOG2() | 1 | 引数の底 2 の対数を返します | LOG2(2) |
設定例では1を返します |
MOD() | 2 | 第1 引数に指定した値を第 2 引数の値で割った余りを返します | MOD(8,3) |
設定例では2を返します |
PI() | - | pi の値を返します | PI() |
- |
POW() | 2 | 第1引数に指定した値を 第2引数の値だけ累乗した値を返します | POW(5,3) |
設定例では125を返します |
POWER() | 2 | 指定した指数で累乗された引数を返します | POWER(10,2) |
設定例では100を返します |
RADIANS() | 1 | ラジアンに変換された引数を返します | ADIANS(180) |
設定例では3を返します |
RAND() | - | ランダムな浮動小数点値を返します | RAND() |
設定例では0.0~1.0の間の乱数を返します |
ROUND() | 2 | 引数を四捨五入します | ROUND(3.55,1) |
設定例では3.6を返します |
SIGN() | 1 | 引数の符号を返します | SIGN(999) |
設定例では1を返します |
SIN() | 1 | 引数のサインを返します | SIN(1) |
設定例では0.8414709848078965を返します |
SQRT() | 1 | 引数の平方根を返します | SQRT(100) |
設定例では10を返します |
TAN() | 1 | 引数のタンジェントを返します | TAN(1) |
設定例では1.5574077246549023を返します |
TRUNCATE() | 2 | 指定された小数点以下の桁数に切り捨てます | TRUNCATE(17.745,0) |
設定例では17を返します |
MAX() | 1 | 最大値の数値、日付けの値を返します | MAX(列名) |
設定例では指定した列名の最大値を返します |
MIN() | 1 | 最小値の数値、日付けの値を返します | MIN(列名) |
設定例では指定して列名の最小値を返します |
LEFT() | 2 | 第1引数で指定した文字列のうち左から第2引数で指定した桁数の値を取得します | LEFT('ABCDEFG', 3) |
設定例ではABCを返します |
RIGHT() | 2 | 第1引数で指定した文字列のうち右から第2引数で指定した桁数の値を取得します | RIGHT('ABCDEFG', 3) |
設定例ではEFGを返します |
REPLACE() | 3 | 値の置換を行います | REPLACE('SATOU','S','K') |
設定例ではKATOUを返します |
SUBSTRING() | 3 | 値の部分抽出を行います | SUBSTRING('12345678', 3, 3) |
設定例では345を返します |
SUM() | 1 | 指定したカラムのレコードの合計を取得します | SUM({明細::金額}) |
設定例では明細と金額のレコードの合計を取得します |
LEAST() | - | 最小値を取得します | LEAST() |
- |
GREATEST() | - | 最大値を取得します | GREATEST() |
- |
CONCAT() | - | 文字列を結合します | CONCAT() |
- |
DATE_ADD() | 3 | 日付値に時間値 (間隔) を加算します | DATE_ADD({日付},'year',1) |
設定例では日付項目に対して1年加算した情報を取得します。設定例の第2引数のyearと記載してある箇所は「year」「month」「day」「hour」「minute」「second」の指定が可能です。 |
DATE_SUB() | 3 | 日付から時間値 (間隔) を引きます | DATE_SUB(current_date(),'month',4) |
設定例では現在日付けより4カ月減算した日付け情報を取得します |
DATEDIFF() | 2 | 2 つの日付の差を求めます | DATEDIFF(CURRENT_DATE(),"2021-07-01") |
設定例では現在日付けと2021年7月1日との日付けの差情報を取得します |
CURRENT_DATE() | - | 現在日付けを取得します | CURRENT_DATE() |
- |
IF() | 3 | 論理式の条件(IF文)によって処理を分岐します。IF条件 (第一引数がtrueの場合第2引数、falseの場合第3引数を表示する)IF文ではORまたはANDの指定も可能です。 | IF({居住者}>0,"已滿","空室") |
設定例では項目名(居住者)が0より大きい場合は已滿を取得します。IF文の条件文が空の場合を指定する場合、次のように指定します。IF({居住者}=null,"空室","已滿") |
LPAD() | 3 | 指定した桁数になるまで文字列の左側に文字列を埋め込みます。 | LPAD('abc', 6, 'XYZ') |
設定例では元の文字列を「abc」で指定し6桁の文字列で且つ埋め込む文字列を「XYZ」としているので、「ZYZabc」を取得します |
SUMIF() | 2 | 特定の条件を満たすレコードの値を選択し、それらの値の総和を計算します。 | SUMIF({売上明細::売上種別}="BPO",{売上明細::売上金額}) |
設定例では「売上明細」テーブル内の「売上種別」がBPOとなっているレコードの「売上金額」の総和を取得します |
DATE_FORMAT() | 2 | 引数に指定した日付を表す値を指定のフォーマットで整形した文字列を取得することができます。 | DATE_FORMAT('2015-03-02', '%Y %M %d') |
設定例では、「2015 March 02」を取得します |
TIME_FORMAT() | 2 | 時刻を表す値を指定のフォーマットで整形した文字列を取得することができます。 | TIME_FORMAT('2015-01-03', '%b-%e(%W)') |
設定例では、「Jan-3(Staurday)」を取得します |
他テーブルの数値を使う場合
例えば、以下のように他のテーブルを参照している構成で考えてみます。
テーブル | 項目名 | 項目種類 |
---|---|---|
商品テーブル | 商品名 | 文字列(一行) |
商品テーブル | 価格 | 数値 |
売上テーブル | 商品 | 他テーブル参照 |
※商品テーブルの商品名を参照 | ||
売上テーブル | 数量 | 数値 |
売上テーブル | 売上 | 計算 |
このような場合、「売上」項目上の数式では以下のように、「商品」項目を使って商品テーブルの価格を参照します。
{商品::価格}*{数量}
フォーム上の自動計算リアルタイム表示について
計算項目の設定を行うと、フォーム上では自動計算され以下のようにリアルタイム表示されます。
計算値の種類が「日付」または「日時」指定時のフォーマット指定について
計算値の種類が「日付」または「日時」を指定している場合、計算結果に対して表示フォーマットを指定することができます。
子テーブルから親テーブルの項目データの取得について
以下の通り子テーブル上の計算項目に設定することで、他テーブル参照設定(子テーブル設定)されている子テーブルから
親テーブルの項目データの取得が可能です。
{親テーブル名::項目名}