初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2022-12-02 20:18:34

ステラおじさん
Guest

時間ごとに変わる時給

お世話になります。質問お願い致します。
環境:Filemaker 19

夜勤スタッフの勤怠管理を作っているのですが
時給が4部制となっていて
①18:00~22:00 時給A
②22:00~25:00 時給B
③25:00~27:00 時給C
④27:00~33:00 時給D

という形で以下のスレを検索で見つけて参考にしてやってみたのですが、
こちらは2部制のみでしたので、4部制にする方法が解りませんでした。
https://fm-aid.com/bbs2/viewtopic.php?id=8998

どのようにしたら時間給に4部制の時間給の結果を出せるでしょうか?
ご教授のほど宜しくお願い致します。

#2 2022-12-03 08:59:37

Shin
Member

Re: 時間ごとに変わる時給

Let (
[
	sta = GetAsTime ( 出勤 ) ;
	end = GetAsTime ( 退勤 ) ;
	t0 = Time ( 18 ; 0 ; 0 ) ;
	t1 = Time ( 22 ; 0 ; 0 ) ;
	t2 = Time ( 25 ; 0 ; 0 ) ;
	t3 = Time ( 27 ; 0 ; 0 ) ;
	t4 = Time ( 33 ; 0 ; 0 ) ;
	s1 = Max ( sta ; t0 ) ;
	e1 = Min ( end ; t1 ) ;
	s2 = Max ( sta ; t1 ) ;
	e2 = Min ( end ; t2 ) ;
	s3 = Max ( sta ; t2 ) ;
	e3 = Min ( end ; t3 ) ;
	s4 = Max ( sta ; t3 ) ;
	e4 = Min ( end ; t4 )
] ;
	Case ( not ( sta > t1 or end < t0 ) ; e1 - s1 ) * 秒給A
	 + Case ( not ( sta > t2 or end < t1 ) ; e2 - s2 ) * 秒給A
	 + Case ( not ( sta > t3 or end < t2 ) ; e3 - s3 ) * 秒給A
	 + Case ( not ( sta > t4 or end < t3 ) ; e4 - s4 ) * 秒給A
)

でいいかも。検証できていません。

Last edited by Shin (2022-12-03 10:29:43)

Offline

#3 2022-12-03 18:47:14

ステラおじさん
Guest

Re: 時間ごとに変わる時給

ご回答ありがとうございます。
PC環境にないため、まだ確認が出来ていないのですが、

Case ( not ( sta > t1 or end < t0 ) ; e1 - s1 ) * 秒給A
     + Case ( not ( sta > t2 or end < t1 ) ; e2 - s2 ) * 秒給A
     + Case ( not ( sta > t3 or end < t2 ) ; e3 - s3 ) * 秒給A
     + Case ( not ( sta > t4 or end < t3 ) ; e4 - s4 ) * 秒給A
)

とありますが、上から時給A 時給B 時給C 時給D
ということで宜しいでしょうか?

#4 2022-12-03 20:55:23

Shin
Member

Re: 時間ごとに変わる時給

概ねそうです

Offline

#5 2022-12-03 22:37:44

ステラおじさん
Guest

Re: 時間ごとに変わる時給

試したところ莫大な数字が出ましたが

Case ( not ( sta > t1 or end < t0 ) ; e1 - s1 ) * 1000 / 3600
     + Case ( not ( sta > t2 or end < t1 ) ; e2 - s2 ) * 1500 / 3600
     + Case ( not ( sta > t3 or end < t2 ) ; e3 - s3 ) * 2000 / 3600
     + Case ( not ( sta > t4 or end < t3 ) ; e4 - s4 ) * 2500 / 3600

としたところ正確な時間給が出てきました。だから時給じゃなくて秒給だったんですね。

解決です。ありがとうございました。

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 552.25 KiB (Peak: 579.03 KiB) ]