平成19年12月 3日(月):初稿 |
○「事務員給与計算システムの基本的仕組み1」で当事務所の給与支払は、前月21日以降当月20日までの基本給、時間外残業手当等を加えた金額を当月25日に支払うため、[月]をグループ項目とした一覧表フォームにおいて、例えば11月分給料計算のための11月分として、10月21日から11月20日までの1ヶ月間を表示する方法を紹介しました。 ○それは本来の[月]の他に[修正月]と言う項目を設け、[修正月]では、11月は10月21日から11月20日までを表示するもので、そのため[修正月]には #条件選択(#日([年月日])>20 .and #月([年月日])=12,1,#日([年月日])>20,#月([年月日])+1,1,#月([年月日])) と言う計算式を入れました。 #日([年月日])>20 .and #月([年月日])=12, は、12月21日から31日までの[修正月]には、1を #日([年月日])>20,#月([年月日])+1, は、21日以降の日はその月に1を加えた月を 1,#月([年月日]) その他の場合即ち20日以前の日はその月を 表示しなさいと言うもので、条件を3つに分けたものです。 ○これに対し桐師匠の【多遊】さんから #mod(#月([年月日])+#int(#日([年月日])/21)-1,12)+1 と言う計算式を紹介頂きました。 #int(num)とはnum の整数部を取り出す関数で、#mod(num1,num2)とは、数値num1を数値num2で割った余り(剰余)を求めるものです。 ○この計算式で平成19年11月25日がどのように表示されるかを検討します。 先ず#mod(num1,num2)のnum1には、 #月([年月日])+#int(#日([年月日])/21)-1が、該当します。 平成19年11月25日の#月([年月日]は11となります。 #int(#日([年月日])/21)は、#日([年月日])即ち25を21で除した1.19の整数部1となり、これは20日以前は0を、21日以降は1を取り出すもので、これがこの計算式の一番のポイントです。 そこで#月([年月日])+#int(#日([年月日])/21)-1即ちnum1とは、 11+1-1=11となります。 ○最後に#mod(num1,num2)は、11を12で割った場合、0余り11で余りは11になり、それに+1で1を加えますから12になります。 平成19年12月3日の場合、 #mod(#月([年月日])+#int(#日([年月日])/21)-1,12)+1は #mod(12+0-1,12)(=11)+1で 12になります。 以上:1,091文字
|