カテゴリー

勤怠管理で行ってみよう! Part8(タイムカードの作成スクリプト)

FileMaker(ファイルメーカー)の実践(Tips) 実践編

タイムカードを作る

タイムカードは一日一人1レコードの紙のタイムカードを同じようなイメージで、打刻のデータを入れるものです。こちらではすでに用意していたタイムカードのレコードにデータを入れています。しかし、実際の運用では、あらかじめ用意されていませんので、タイムカードのテーブルにレコードを作成する方法を考えなければなりません。

打刻とともに作成する方法は?

打刻したときにその日のタイムカードのレコードがなければ、作成するということをもしかしたら思いつかれるかもしれません。しかし、この方法で問題になるのは、休日の扱いです。このソリューションでは、打刻のない日を休日として扱います。この方法では、休日=打刻のない日はレコードが作成されませんので、その休日が、有給なのか、通常の休日なのかが判断つきません。また、会社等によっては特別休暇(夏休み等・忌引き等)を設定している場合もあり、どれかが判断がつきません。結局、後で、レコードを作成することになります。

月の初めにまとめて作る

総務を担当している方が、月の初めまでに、作成しておくというのが一番スマートな方法でしょうか。ここではそのスクリプトについて紹介していきます。

テーブルにレコードを追加

社員マスターテーブル、アカウント名、氏名のフィールドを

まず、社員マスターテーブルを作成して、画像のようにフィールドを作ります。これがタイムカードを作成するうえでの基準となります。

社員マスターテーブルのデータイメージ

社員マスターのデータはこのような感じで入れておきます。

日付入力用のグローバルフィールドを作成

いつのタイムカードを作成するかの基準となる日付を入力するためのフィールドです。このフィールドをグローバルフィールドとして作ります。この日から1か月間のタイムカードを作成します。

メインメニューへグローバルフィールドを配置

1か月分のタイムカードを作成するためのスクリプト

タイムカードを作成するスクリプト
行数解説
1スクリプト実行中にFileMaker Proのエラーメッセージを表示させないために使用します。
2~5メインメニューへ設置した日付が入力されているかをチェックします。入力されていない場合は、カスタムダイアログを表示してスクリプトを終了します。
8タイムカードを作成する期間の最終日を計算しています。例えば2017/04/01と入力された場合は、2017/04/31が変数として保存されます。
10~25この期間ですでにタイムカードがないかをチェックします。重複して作成しないためのものです。重複すると、集計する時にダブってしまい、正しい結果が出ない場合があります。
27これから作成するタイムカードの基準となる全社員を取得しています。それぞれのアカウント名を改行区切りで取得しています。
28~40Loop処理で、タイムカードを作っていきます。例えば2017/04/01と入力された場合は、4/1の日付の全社員の行を作り、4/2の処理へ……という具合にLoopしていきます。
41最後に、処理が終わったことをカスタムダイアログで表示して終了です。
タイムカードを作成するスクリプト

これで、打刻から、集計までの一通りの基本機能を紹介していきました。