みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
OS:[Mac OSX ]FileMaker Ver:[15]
いつも勉強になります。
テーブルA(出勤日マスター)に
12月1日
12月2日
12月4日
12月6日
12月7日
12月10日
12月13日
というレコードが7つあります。これはマスターで、例えば出勤日として上司が決めます。
今から
テーブルB(実際の出勤日)に
12月1日
12月2日
12月6日
12月7日
12月10日
というレコードを5つ作成しました。これらは実際に出勤した日となります。
ここで、連続勤務日をカウントするのに計算式で出せないかと考えています。
即ち
12月1日・・・1(日目)
12月2日・・・2(日目)
12月6日・・・1(日目)
12月7日・・・2(日目)
12月10日・・・3(日目)
ここで、12月4日は上司指定の出勤日なのですが、出勤していないので、連続が途切れて、12月6日には1(日目)となるのがポイントです。
計算式で出すのは可能でしょうか、ご教授下さい。
出来るかできないかを目下考えてますが・・・・・
その前に、
この上司の指示の出るタイミングと計算するタイミングのタイムラグはどうなってるんですか?
それに現実何日分くらいを一気に計算させるのか?
こうした実行の上での問題点があるように思うのですが。
まだ、取り敢えずの解決案も出てない私で恐縮です。
Offline
計算で求めるには、以下を準備、
・「出勤日マスター」と「実際の出勤日」テーブルの双方に、「年月」計算(数字)フィールドを作る。
式は、 Year(日付)*100 + Month(日付) (2016/12/1 → 201612)
・この「年月」を照合キーにリレーションを2つ設定する。
1. 「実際の出勤日::年月」 = 「出勤日マスター::年月」 (日付で昇順ソート指定)
2. 「実際の出勤日::年月」 = 「実際の出勤日 2::年月」 (日付で昇順ソート指定、自己リレーション)
以上から計算で求める。その式は、
Let([
$vl0=List(出勤日マスター::日付);
$vl1=List(実際の出勤日 2::日付);
$dt=日付;
$n=ValueCount($vl0);
$i=0;
$res="";
$itm="";
$fnc="Case($i=$n or $itm=$dt; $res;
Let([
$i=$i+1;
$itm=GetValue($vl0; $i);
$res=Case(FilterValues($vl1;$itm)=\"\"; 0; $res+1)
]; Evaluate($fnc))
)"
];
Evaluate($fnc)
)
Last edited by Hiro (2016-12-01 23:47:45)
Offline
シャチ様
コメントありがとうございます。
Hiro様
コピペしたらうまくいきました。内容は今から勉強したいと思います。
頂いたリレーションや計算式のアイデアは大変味わい深いものだと感銘を受けました。
ありがとうございました。
Pages: 1
[ Generated in 0.004 seconds, 9 queries executed - Memory usage: 507.99 KiB (Peak: 514.59 KiB) ]