「今年度」という言葉を聞いて、「めんどくさ」と思う方が大半なのではないでしょうか?
今回は、この「めんどくさ」に対応していきます。
この記事の対象者
FileMakerで「今年度」の集計をしなければならなくなった人
この記事を読むと得られること
FileMakerで今年度の集計をするための構築方法
この記事のテスト環境
Claris FileMaker 20.3.1.31
記事執筆時の最新バージョンで行なっていますが、すごく新しい技術を使っているわけではないので、お気軽に試してみてください。
目指すゴール
事例
今回は、図書の貸し出しをしている施設で、年度末に月ごとの利用人数の集計をする事例で実装を行なっていきます。
この施設での年度は、以下になります。
4月1日〜翌年3月31日
実装
では、やっていきましょう。
テーブル設計
貸出帳
図書貸し出しをするたびに登録する、貸出帳です。
計算式を拡大します。
年度は、貸出日を元に、どの年度になるかを計算しています。
1月〜3月の場合は貸出日の年をYear関数で取得し、マイナス1をします。
4月〜12月の場合は、そのまま貸出日の年をYear関数でfセットします。
年月は、月ごとの集計をするために用意します。
月をセットする際は、2桁になるようにRight関数を使っています。
年月は、202312のような6桁になります。
その他、抽出した人数の集計をするフィールドです。
フィールド名 | 設定 |
---|---|
件数 | 主キーをカウントする集計タイプ |
グローバル関数は、主にリレーションシップグラフで使う用です。
フィールド名 | 設定 |
---|---|
g年度 | 年度集計をするレコードを、1年度で1レコード作る際に活用 |
g年月 | 図書貸出の年月集計をする際に活用 |
年度集計
年度ごとに1レコードを追加し、集計結果をまとめます。
1年に1レコードなので、月ごとの集計を、利用人数フィールドの12個の配列に格納します。
配列にセットされた人数の合計を計算するフィールドを拡大します。
単純に配列に入っている数字を12回回して加算するだけの単純構造です。
この計算をスクリプトで行う例も紹介しています。
どちらも同じ結果になるので、現場のボリューム感や運用に合わせてチョイスしてください。
リレーションシップグラフ
図書貸出テーブルに設置したグローバルフィールドと、年度集計の年度、図書貸出の年月を結びます。
レイアウト
図書貸出帳
図書貸出帳は、貸出日に入力があれば集計できるので、今回は最低限のリスト表示にしています。
右側の「年度」は、自動で計算されるので、何もタッチしないです。
実際の運用では、出さないフィールドですが、今回は確認のために表示しています。
年度集計
年度集計のレイアウトでは、配列の利用人数フィールドを縦に並べ、合計として「利用人数_合計」フィールドを置きます。
スクリプト
では、集計のスクリプトを作っていきましょう。
全体
解説
解説です。
2〜8行目は、年度集計テーブルに集計する年度のレコードがあるかどうかを確認しています。
レコードがなければ、新規作成し、年度をセットして準備完了です。
月ごとの集計は、年度の検索をしたり図書貸出レコードをLoopで回して1個1個集計したりはしません。
年月でリレーションシップを構築したので、そのリレーションシップを活用して「件数」フィールドの集計結果を取得するのみです。
そのために、14行目では、集計する年をあらためて計算し直しています。
1月〜3月の場合は、集計年度にプラス1、4月〜12月の場合は、年度のままで図書貸出テーブルの年月を集計します。
取得した件数を、年度集計のフィールドの配列にセットします。
この時、年度であることに注意です。
4月始まりなので、4月が配列のトップになります。
あー、めんどい。
考え方としては、下の図のようになります。
4月〜12月は、月から-3、1月〜3月は、月に+9すると、配列の順番を求められます。
配列の指定の仕方、初学者だとちょっとわからなかったりする人もいるかと思うので、「ここだよー!」と図を貼っておきます。
テストしてみる
では、集計してみましょう。
最初は、今年度のレコードがありません。
スクリプトを実行すると、今年度のレコードが出来上がり、集計も行われます。
今回のやり方は、配列の順番の計算を変更するだけで会社の会計年度など(例えば年度始まりが9月とか)にも応用がききますので、現場に合わせてやってみてください。
今年度の集計をしたい人にこの記事が届きますように。