空白・改行の除去
文字列型の「備考 (note)」項目に含まれる文字列から余分なスペース(半角、全角)、タブ、改行文字を取り除くには、次の式を設定します。
詳細はTRIMの説明をお読み下さい。
加入日からの経過月数
日付型の「加入日 (joinday)」項目に入力された日から現在までの経過月数を計算します。
DATEDIF(${joinday}, TODAY(), "M")
詳細はDATEDIFの説明をお読み下さい。
生年月日から年齢
「顧客(customer)」モデルにおいて、「生年月日(birth)」項目と「年齢(age)」項目を用意した例を示します。
年齢項目(整数型)の自動計算式を次のように記載します。
DATEDIF(${birth}, TODAY() ,"Y")
「何年何ヶ月」という表記を行なわせることもできます。この場合、年齢項目は文字列型とします。
DATEDIF(${birth}, TODAY() ,"Y") +
"年" +
DATEDIF(${birth}, TODAY() ,"YM") +
"ヶ月"
詳細はDATEDIFの説明をお読み下さい。
所要時間 (1)
サポートモデルの「開始時間(date1)」と「終了時間(date2)」から、「所要時間」を自動算出させる例を示します。
ここで「所要時間」の方は時刻型としてください。なお、24 時間を超過した分は切り捨てられます。
BETWEENTIME(${date1}, ${date2})
詳細はBETWEENTIMEの説明をお読み下さい。
所要時間 (2)
退勤時間(endtime)と出勤時間(starttime)の差を求めます。ただし、休憩時間(breaktime)を考慮します。
各項目はすべて時刻型として定義しています。
TIMEVALUE(
TEXT(
TIME(${endtime})-
TIME(${starttime})-
TIME(${breaktime}),
"HH:mm:ss"
)
)
所要時間 (3)
上の計算式は、次のように記述することもできます。
BETWEENTIME(
TOTIME(
MOVEMINUTE(${starttime},
HOUR(${breaktime})*60 +
MINUTE(${breaktime})
)
),
${endtime}
)
所要時間 (4)
繰り返しコンテナ内の項目同士で所要時間を求める例を示します。
用意する項目
次のように繰り返しコンテナを定義します。
「時間差分」(kks/keisan)項目に次の式を設定します。
TIMEVALUE(
TEXT(
TIME(${kks/komoku2})-
TIME(${kks/komoku1}),
"HH:mm:ss"
)
)
日付から曜日
日付型項目「出荷日 (syukka_date)」の曜日を求める例を示します。
CHOOSE(WEEKDAY(${syukka_date}),
"日","月","火","水","木","金","土")
詳細はWEEKDAYの説明をお読み下さい。
日付から年、月、日を切り出す
日付型項目「出荷日 (syukka_date)」から、年、月、日の部分をそれぞれ文字列として別項目に格納する例を示します。
TEXT(${syukka_date},"{1,number,00}")
TEXT(${syukka_date},"MM")
TEXT(${syukka_date},"dd")
ゼロ詰め文字の作成
製品モデルの整数型項目「製品ID (productid)」(主キー)をゼロ詰めの 4 桁と定義する例を示します。
PADDING("0", 4, ${productid})
詳細はPADDINGの説明をお読み下さい。
条件によって算出値を変える
数値型項目 source の値により、同モデル内の数値型項目 cvalue を変えるという例を紹介します。
次のようなルールを実現するものとします。
source の値 |
cvalue の値 |
10より小さい |
100 |
20より小さい |
200 |
それ以外 |
300 |
このとき、項目 cvalue の式は次のように記述することができます。
IF(${source}<10,
100,
IF(${source}<20,
200,
300
)
)
計画日と実績日の差異
「計画日(plandate)」と「実績日(realdate)」を含むモデル定義があるものとします。ここで、「遅延」(整数型)の値を次のルールによって算出するものとします。
条件 |
遅延の算出ルール |
実績日が未入力 |
今日の日付と、計画日(plandate)との差 |
実績日が入力済 |
実績日(realdate)と、計画日(plandate)との差 |
このとき、遅延項目(整数型)の式は次のように記述することができます。
IF(${realdate}==null,
DATEDIF(${plandate},TODAY(),"D"),
DATEDIF(${realdate},${plandate},"D")
)
ここで "${realdate}==null" とは、この値がセットされていないという意味です。
null と比較できる項目の型は文字列型、日付型、時刻型、日付時刻型です。
文字列の連結
文字列項目 sitem1 と sitem2 を連結した、sitem3 を自動計算として記述することもできます。
次のような式になります。
ところで上記式の場合、sitem1 または sitem2 の値が未設定(null)の場合や、空白の場合を考慮していません。
sitem1 と sitem2 のいずれもが有効(未設定でなく、空白でもない)の場合にのみ sitem3 を出力する場合は、次のような式になります。
IF(
AND(
!ISBLANK(${sitem1}), !ISBLANK(${sitem2})
),
${sitem1}+":"+${sitem2},
""
)
条件付きSUM関数
繰り返しコンテナ payment 内に、日付型項目 pdate と金額 amount が用意されています。
このとき、payment/amount の合計値を(この繰り返しコンテナではない)total 項目にセットするようにします。
ただし、次のルールを適用します。
- payment/pdate が本日の日付より前であれば payment/amount の値を用いる。
- そうでなければ 0 とする。
集計値を格納する項目 total に条件付き SUM 関数を適用します。
SUM(${payment/amount},
"DATE(${payment/pdate})<=DATE(TODAY())")
日付の比較を行う場合、DATE 関数を使って日付を数値化する必要があります。
以上を整理すると、次のような定義になります。(必要な項目のみ抜粋しています。)
項目名(日本語) |
項目名(英語) |
項目の型 |
自動計算式 |
集計 |
total |
8バイト整数 |
SUM(${payment/amount}, "DATE(${payment/pdate})<=DATE(TODAY())") |
支払 |
payment |
繰り返しコンテナ |
|
支払回数 |
payment/pid |
繰り返しコンテナID |
|
支払日 |
payment/pdate |
日付 |
|
支払金額 |
payment/amount |
8バイト整数 |
|
数値の按分
「売上」項目(数値)を、繰り返しコンテナに按分する方法を説明します。
ただし、余りが生じた場合は先頭の繰り返しコンテナに加えるというルールとします。
例えば売上値が"100"のとき、繰り返しコンテナが二つなら "50","50" になります。三つなら "34","33","33" になります。八つに分割したときの例を図1に示します。
売上項目を uriage とし、繰り返しコンテナの数を記憶する項目を count とします。
count 項目には次の式を適用します。
繰り返しコンテナ項目「各売上」の式を次のように設定します。
IF(CID()==1,
ROUND(${uriage}/${count},0)+MOD(${uriage},${count}),
ROUND(${uriage}/${count},0)
)