みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Win10 Ver19 超初心者です。
深夜時間計算についてです。
今まで夜中1:00は25:00として計算してきましたが、夜勤時間が増えるとのことでタイムスタンプを利用しようと修正しているところです。
タイプスタンプのフィールドを作成して日付&""&時間で設定しました。
勤務時間や残業時間はうまくいったのですが、深夜時間だけうまくいかずすべて0になってしまいます。
If ( 従業員区分 = "社員" ; "";
Let(
[
#出社時刻=開始時間+Time((開始時間<Time(5;0;0))*24;0;0);
#退社時刻=終了時間+Time((#出社時刻>終了時間)*24;0;0);
#深夜始点=Time(22;0;0);
#深夜終点=Time(5+24;0;0);
#is深夜=(#出社時刻<#深夜終点) and (#退社時刻>#深夜始点);
#深夜休息=Max(0; Min(GetAsTime(休憩*60*60); GetAsTime(休憩*60*60)-(#深夜始点-#出社時刻)) );
#深夜勤務=Case(#is深夜; Min(#退社時刻;#深夜終点) - Max(#出社時刻;#深夜始点) - #深夜休息)
];
(Div(Max(0;#深夜勤務);15*60)*15*60) / (60*60)
)
)
というのをネットで見つけてやってみたのですが・・・
どのように修正したらいいのでしょうか?
式に不備はなさそうなので、フィールドタイプなどが原因でしょうか。書かれていないので正確ではありませんが。
例えば休憩フィールド。1時間の休憩を60分と入力すると0になりますし
返信ありがとうございます。
休憩時間は1時間の場合は1:00と入力しています。
式に不備はないとのことで、設定や入力のしかたかもしれませんね・・・
休憩時間は1時間の場合は1:00と入力しています。
これのせいでは。。。?
休憩フィールドタイプを数字にして、表示だけ時刻にすればできそうですが?
計算式全体を理解していませんが、、
> GetAsTime(休憩*60*60)
この休憩の値が
1:00
だと、
休憩が
数字なら100*60*60
となり
時間なら3600:0:0
となってしまいますよ。
Offline
休憩時間のフィールドタイプ設定は時刻です。
入力はできれば1:00というふうにしたいのですが、
どのように修正すればいいのでしょうか?
休憩フィールドが時刻タイプなら
#深夜休息=Max(0; Min(GetAsTime(休憩); GetAsTime(休憩)-(#深夜始点-#出社時刻)) );
に変えれば可能かと。
#深夜休息=Max(0; Min(GetAsTime(休憩); GetAsTime(休憩)-(#深夜始点-#出社時刻)) );
にかえてみましたが、やはり0のままでした。
丸めは必要ない場合は
(Div(Max(0;#深夜勤務);15*60)*15*60) / (60*60)
はカットしてもいいのでしょうか?
検証してみましたが、GetAsTime(休憩*60*60) を 休憩 に変更するだけで、計算できましたよ。
タイムスタンプで入力して、時刻を抜き出してから計算されているのでしたら、かえって面倒ですよ。タイムスタンプそのままで計算された方が楽ですよ。
Offline
検証ありがとうございます。
タイムスタンプそのままで計算された方が楽ですよ。
>>休憩は時刻なのですがタイムスタンプにしたほうがよいということでしょうか?
式も難しくてあまり理解できていません
式の開始時間のところを出勤のタイムスタンプを使うということですか?
>Shin様
そもそも休憩が時刻タイプならGetAsTimeも不要でしたね。見落としてました。
>かっぷー様
丸めは必要ない場合は
(Div(Max(0;#深夜勤務);15*60)*15*60) / (60*60)
はカットしてもいいのでしょうか?
結果自体は#深夜勤務だけでも表示できますが、20000とかになるかも。
深夜休息=Max(休憩; Min(0;休憩; 休憩-(深夜始点-出社時刻)) )
これなら如何ですか?
mimami様
試してみましたがすべてに0:00が入ってしまいました。
開始時間や終了時間はタイムスタンプを使うのでしょうか?
開始時間や終了時間をタイムスタンプに変えてみましたがダメでした。
社員のみ入力された状態でも深夜時間0:00と出てしまうのは何か関係があるのでしょうか?
0だったら表示しないようにもしたいのですが。。。
検証したファイルです。ご自分のものと比較してみてください。
https://www.dropbox.com/scl/fi/qyknx9y3 … 85h1c&dl=0
Offline
Shin様
ありがとうございます。
コピーして貼り付けしてみましたが、結果は変わりませんでした。
すべて0:00になってしまいます。
入力もしてみましたが0:00のまま変化なしです。
サンプルファイルを表示した時にも、0になっていましたか?
Offline
サンプルファイルを表示した時にも、0になっていましたか?
いいえ、きちんと表示されていました。
以前、なにかで使っていた計算式をいれてみたら動いたのですが
これだと深夜の拘束時間になっています。
休憩もマイナスしていないですよね
If ( 社員番号 = "" ; "";
Let(
[
#出社時刻=出勤時間+Time((出勤時間<Time(5;0;0))*24;0;0);
#退社時刻=退社時間+Time((#出社時刻>退社時間)*24;0;0);
#深夜始点=Time(22;0;0);
#深夜終点=Time(5+24;0;0);
#is深夜=(#出社時刻<#深夜終点) and (#退社時刻>#深夜始点)
];Case(#is深夜; Min(#退社時刻;#深夜終点) - Max(#出社時刻;#深夜始点))))
いろいろ試してみたのですが、やはりうまくいきません。
サンプルでいただいたものは計算のところは数字ですか?
時刻にしたら0:00:06となりました。
0になってしまうのはこれが原因でしょうか?
深夜時間も時刻タイプにしていますので。
結果は0:00のように時刻で表示させたいのですが、可能でしょうか?
Shin様のサンプルとの違いはどこですか?
Let関数内の変数が少なく、代わりに計算に使われるフィールドが多いなど。(明らかに無関係なものは除外して大丈夫です)
深夜時間も時刻タイプにしていますので。
深夜時間というフィールドがあるとか?
計算結果は、時間単位の数字ですね。自国表示にするのでしたら、最後の計算式を変更するといいでしょう。まるめが不要でしたら、#深夜勤務 をそのまま時刻として返せばいいはずです。
Offline
みなさま、いろいろありがとうございます。
最後の計算式を変更するといいでしょう。まるめが不要でしたら、#深夜勤務 をそのまま時刻として返せばいいはずです。
>>どのように変更するのか?
深夜勤務をそのまま時刻に返すとはどんなふうにすればいいのでしょうか?
まるめは不要で時刻表示(0:00)にしたいです
12行目を、#深夜勤務 だけにして、時刻フォーマットにしておけばいいです
Offline
If ( 社員番号 = "" ; "";
Let(
[
#出社時刻=出庫時間+Time((出庫時間<Time(5;0;0))*24;0;0);
#退社時刻=帰庫時間+Time((#出社時刻>帰庫時間)*24;0;0);
#深夜始点=Time(22;0;0);
#深夜終点=Time(5+24;0;0);
#is深夜=(#出社時刻<#深夜終点) and (#退社時刻>#深夜始点);
#深夜休息=Max(休憩時間;Min(0;休憩時間;休憩時間-(#深夜始点-出庫時間)))
];
Case ( #is深夜;Min ( #退社時刻;#深夜終点)-Max(#出社時刻;#深夜始点)-#深夜休息)))
としてみたのですが、深夜時間がマイナスになってしまいます
If ( 社員番号 = "" ; "";
Let(
[
#出社時刻 = 出勤時間 + Time ( ( 出勤時間 < Time ( 5;0;0 ) ) * 24 ; 0 ; 0 ) ;
#退社時刻 = 退勤時間 + Time ( ( #出社時刻 > 退勤時間 ) * 24 ; 0 ; 0 ) ;
#深夜始点 = Time ( 22 ; 0 ; 0 ) ;
#深夜終点 = Time ( 5 + 24 ; 0 ; 0 ) ;
#is深夜 = ( #出社時刻 < #深夜終点 ) and ( #退社時刻 > #深夜始点 ) ;
#深夜休息 = Max ( 0 ; Min ( 休憩時間 ; 休憩時間 - ( #深夜始点 - #出社時刻 ) ) ) ;
#深夜勤務 = Case ( #is深夜 ; Min ( #退社時刻 ; #深夜終点 ) - Max ( #出社時刻 ; #深夜始点 ) - #深夜休息 )
];
#深夜勤務
)
)
でもやってみましたが、正しく表示される場合もあるのですがやはり深夜時刻がマイナスになりました。
Pages: 1
[ Generated in 0.011 seconds, 9 queries executed - Memory usage: 615.94 KiB (Peak: 632.84 KiB) ]