みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつも参考にさせていただき、ありがとうございます。
Filemaker16のwindows環境で今現在の時間帯によってメッセージを変化させたいと思い、
下記のようにしてますがどうにも思ったように動作してくれません。
時刻が変化してもメッセージは変わらないままです。
このフィールドは非保存にしているのですが、他に直すところがあるでしょうか?
Case(
GetAsTime ( "08:00:00") < Filter ( GetAsTime ( Get(タイムスタンプ) ) ;"0123456789;:")< GetAsTime ( "11:59:59");"午前です";
GetAsTime ( "12:00:00") < Filter ( GetAsTime ( Get(タイムスタンプ) ) ;"0123456789;:")< GetAsTime ( "16:59:59");"午後です";
GetAsTime ( "17:00:00") < Filter ( GetAsTime ( Get(タイムスタンプ) ) ;"0123456789;:")< GetAsTime ( "19:59:59");"残業です"
)
> GetAsTime ( "08:00:00") < Filter ( GetAsTime ( Get(タイムスタンプ) ) ;"0123456789;:")< GetAsTime ( "11:59:59")
これは成り立ちません。
あえて書くなら、
GetAsTime ( "08:00:00") < Filter ( GetAsTime ( Get(タイムスタンプ) ) ;"0123456789;:")
and
Filter ( GetAsTime ( Get(タイムスタンプ) ) ;"0123456789;:")< GetAsTime ( "11:59:59")
ですが、
Filter ( GetAsTime ( Get(タイムスタンプ) ) ;"0123456789;:")
このFilterは意味ないでしょう。
さらに、
そのフィールドを非保存にしても
Get(タイムスタンプ)
がその瞬間を繰返し返す訳ではありません。
そのフィールドが表示させるときに再評価されます。
ですから
ご希望はスクリプトで繰返し再計算させるようなことをしないと無理では。
Offline
Case(
Get(時刻) < GetAsTime ( "11:59:59");"午前です";
Get(時刻) < GetAsTime ( "16:59:59");"午後です";
Get(時刻) < GetAsTime ( "19:59:59");"残業です"
)
でいいのでは。検証はしていませんが
Offline
早速のご回答ありがとうございます!
>チポさん
Filemakerの仕様を読み違えていました。
たしかに A< B< C は計算式として受け付けていないようです・・・
また、Filter関数をかませたのはGetAsTimeでは「午前」とか「午後」と値が返ってくるのでこれに対処するためのつもりでした。
なくてもよかったんですね。FMは不思議です。
>Shinさん
シンプルな計算式をありがとうございます。確かにこれできちんと動作しました。
可読性もはるかにあがりました
解決
しちゃっている様ですが、
前レスで書いた通り、
その時刻が来ても表示は切り替わりませんよ。
Offline
Pages: 1
[ Generated in 0.004 seconds, 9 queries executed - Memory usage: 511.23 KiB (Peak: 518.43 KiB) ]