【キントーン】年齢自動計算 不具合

現在、和暦から西暦に変換をする為のコードと年齢を自動計算させる2つを組み合わせて利用しています。

和暦から西暦変換は正常に動作しますが、年齢自動計算が昭和44年(1969年)以降に設定すると正常にYMD1へピックアップされず、計算が出来ない不具合が発生していまいます。

改善策を見つけることが出来ていません。アドバイスを頂けると幸いです。

宜しくお願い致します。

 

生年月日 日付 フィールドコード:誕生日

和暦から西暦変換コードはJavascriptで下記の様に組んでいます。

(function() {

    ‘use strict’;

    var tri = [

      ‘和暦’,

      ‘和暦年’,

      ‘和暦月’,

      ‘和暦日’

    ];

    kintone.events.on([‘app.record.create.show’,‘app.record.edit.show’] ,(event)=> {

      let events = [];

      tri.forEach(target=>{

        events.push(‘app.record.create.change.’+target);

        events.push(‘app.record.edit.change.’+target);

      });

      kintone.events.on(events,event=>{

        const record = event.record;

        if(record[‘和暦’].value && record[‘和暦年’].value && record[‘和暦月’].value && record[‘和暦日’].value){

          let nen;

          if(record[‘和暦’].value === “大正”){

            nen = parseInt(record[‘和暦年’].value) + 1911;

          }else if(record[‘和暦’].value === “昭和”){

            nen = parseInt(record[‘和暦年’].value) + 1925;

          }else if(record[‘和暦’].value === “平成”){

            nen = parseInt(record[‘和暦年’].value) + 1988;

          }else{

            nen = parseInt(record[‘和暦年’].value) + 2018; 

          }

          record[‘誕生日’].value = nen + “-” + record[‘和暦月’].value + “-” + record[‘和暦日’].value;

        }

        return event;

      });

      return event;

    });

   })();

 

年齢自動計算は下記の様に連動させています。

 

生年月日 ⇔ YMD1

更新日時 ⇔ YMD2

YMD1,YMD2 ⇒ 年齢

 

計算式は以下の通りです。

【YMD1】

IF(誕生日<0,0

DATE_FORMAT(誕生日,“YYYYMMdd”,“system”)

)

【YMD2】

IF(更新日時<0,0

DATE_FORMAT(更新日時,“YYYYMMdd”,“system”)

)

【年齢】

ROUNDDOWN((YMD2-YMD1)/10000.0)

N.Takayamaさん

お世話になっております。

> 年齢自動計算が昭和44年(1969年)以降に設定すると正常にYMD1へピックアップされず
こちら、1969年以前でしょうか?1969年以前ですと、YMD1が0となることを確認できました。

計算式のIF関数で「誕生日<0」とありますが、1970年1月1日以前は負の数となるのかと思います。
(おそらくUNIX時間の関係上)

誕生日の空チェックを「誕生日=“”」としてみてはいかがでしょうか?

江田篤史さん

ご回答頂きましてありがとうございます。

申し訳ございません、1969年以前での不具合でございます。

IF(誕生日=“”
DATE_FORMAT(誕生日,“YYYYMMdd”,“system”)
)

上記の計算式に訂正した際、「文法が正しくない」と表示がされてしまいました…

N.Takayamaさん

お世話になっております。

IF関数の引数が足りないのかと思います。

IF(誕生日="",0,DATE_FORMAT(誕生日,"YYYYMMdd","system"))

で動作しないでしょうか?

江田篤史さん

ご教授頂きありがとうございます。

1969年以前も正常に動作させることが出来ました。

まだまだ勉強不足なので精進していきたいと思います。

この度はありがとうございました。