備忘録33〜FileMaker スクリプト・・・を作ってみた

別件の仕事などがあり、またまた間が開いてしまった・・・

今回は生徒の入学日から年度末までの請求金額を算出するスクリプトを頑張って作ってみました・・・・😨

生徒マスタからスクールマスタを参照する

入学日から年と月を抜き出しします。

year(日付)とmonth(日付)を使います。

月の表示は、「01」としたいが、このまま計算すると「1」となる・・・・

この日付関数には、オプション設定はない。調べてみることにしました。

Right (テキスト;文字数)でできるらしい。

Right (“00″&month(日付);2)とする。"00″&"1″となり、001の文字列の右から2文字を取るとなる。

期待する結果「01」を計算することができました。

年と月をつなげる

Year ( $day ) & Right ( “00" & Month ( $day ) ; 2 )

として202101のような計算結果を得るようにします。

何年の何月かを数字だけで表した状態になります。

前準備が整いました。

複数の生徒から入学日を取得?

年度更新に伴い、更新日がある生徒は更新日を優先し、ない場合は入学日を優先するようにします。


Let ( 

[

@kousin = Min ( 保護者_basic|生徒::次回更新日);
@nyugaku = Min(保護者_basic|生徒::入学日)

];





Case ( 
IsEmpty ( @kousin ); @nyugaku ;

@kousin

 )

 )

中級編の動画をみつつ、Let関数で作成してみました。

この計算結果を、変数に代入しておきます。

さらに、年度更新としたいので、入学月が1月から3月の人は、そのままyear関数で取得した年を使うようにします。

4〜12月はそのままyear関数で算出した年数に+1しておきます。

Case ( 

Month ( $day ) ≥ 1 and Month ( $day )  ≤ 3 ;Year ( $day );Year ( $day )+1

 )

これを基に、年度末の月にあたる〇〇年3月を算出します。

変数化した入学(更新)日を基に・・・

グローバルフィールドを用意してあるのでそちらに、入学(更新)日を基に年月を入れます。

スクールマスターとリレーションを作ってあるので、入学金(更新金額)+月額費が算出されます。

されたものを、請求テーブルの方に転記していく形にしました。

Loopで繰り返していきます。月部分を加算していきます。

終了は、年度末月になります。

最大12ヶ月分の請求レコードが作成できるようになりました。

いろいろやり方はあるのと思うのですが・・・

今の自分のスキルではこれが精一杯です・・・

もう少しスマートに組めるのかもしれません。

サブスクリプトとかサーバーサイドスクリプトなるもので実行できるように

勉強していきます。

今回はここまでです。

スポンサーリンク