みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
環境:mac yosemite filemaker 14 server, advance, Go 使用
時間フィールドの分によってかけ数を割り出す計算フィールドがあります。
計算式は現在以下のようになっています。
Case
(
時間フィールド < Time ( 18 ; 0 ; 0 ) ; 0 ;
時間フィールド < Time ( 18 ; 10 ; 0 ) ; 1 ;
時間フィールド < Time ( 18 ; 20 ; 0 ) ; 2 ;
時間フィールド < Time ( 18 ; 30 ; 0 ) ; 3 ;
時間フィールド < Time ( 18 ; 40 ; 0 ) ; 4 ;
時間フィールド < Time ( 18 ; 50 ; 0 ) ; 5 ;
時間フィールド < Time ( 19 ; 0 ; 0 ) ; 6 ;
時間フィールド < Time ( 19 ; 10 ; 0 ) ; 7 ;
時間フィールド < Time ( 19 ; 20 ; 0 ) ; 8 ;
時間フィールド < Time ( 19 ; 30 ; 0 ) ; 9 ;
時間フィールド < Time ( 19 ; 40 ; 0 ) ; 10 ;
時間フィールド < Time ( 19 ; 50 ; 0 ) ; 11 ;
時間フィールド < Time ( 20 ; 0 ; 0 ) ; 12 ;
)
ご覧の通り、式が長いのです。計算式の知識を深めたいので簡略化できる他のやり方がありましたら、どなたかご指導いただけないでしょうか
Offline
( 時間フィールド - 18 * 60 * 60 ) / 600
で求められますが、
18:00:00以前と
20:00:00以降の処理をしなければなりませんね。
Offline
細かい事ですが、
Int ( ( 時間フィールド - 18 * 60 * 60 ) / 600 )
または、
Div ( 時間フィールド - 18 * 60 * 60 ; 600 )
にした方が良いでしょうね。
Offline
18:00:00以前は0で定義されてるが、20:00:00以降は空欄でいいのかな?
式の最後が;なので、長いというよりエラーになるはず。0の入れ忘れ?
>チポさん、shinさん、calcerさん
いつもありがとうございます。計算式にそれなりの法則だったパターンがあれば、時間や日付フィールドをうまく数式の計算に戻すと計算式をシンプルにできるんですね。今までのアドバイスと今回のご指導を参照に、
Case
(
時間フィールド < Time ( 18 ; 0 ; 0 ) ; 0 ;
時間フィールド ≧ Time ( 21 ; 0 ; 0 ) ; 16 ;
Ceiling ( ( 時間フィールド - 18 * 60 * 60 ) / 600 )
)
で18:00~21:00までの10分毎のかけ数とそれ以前と以降の時間に関するかけ数を割り出すことができました。
いつもありがとうございます。
Offline
Min ( Max ( Div ( 時間フィールド - 18 * 60 * 60 ; 600 ) ; 0 ) ; 16 )
でもいいかも。(見通しは悪くなりますが)
Offline
>shinさん
返信遅れてすいません。さらに簡略化できるんですね。いろいろ計算式を試すことができるようになったおかげで、最近では解説も腑に落ちるようになってきました。(見通しは悪くなりますが、等)
計算式奥が深くてなかなか難しいですが頑張って知識を広げたいと思います。いつもありがとうございます!
Offline
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 509.12 KiB (Peak: 515.88 KiB) ]