みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
初めて投稿させていただきます。
Filemaker12の頃まではいくつかのデータベースを作成していましたが、その後触れなくなってしまったために色々なことを忘れてしまっています。
現在病院勤務で、以前自分が作成した血液検査データベースにおいて、来年度から基準値の変更をする項目が発生し、
今月中は検査項目Aの測定値が0.4未満はLow表示、1.0よりも大きい場合はHigh表示になるようにしているのですが、
来月からは下限を0.4から0.6に、上限を1.0から1.1に変更することとなり、
Case(
検査年月日 < 2023/04/01 and 検査項目A < 0.4 ; "Low" ;
検査年月日 < 2023/04/01 and 検査項目A > 1.0 ; "High" ;
検査年月日 >= 2023/04/01 and 検査項目A < 0.6 "Low" ;
検査年月日 >= 2023/04/01 and 検査項目A > 1.1 ; "High" ; "○" )
といった関数式を作ってみたのですが正常に動作してくれず
悩んでいるところです。
何か初歩的なミスを犯してるとは思うのですが、皆様のお力をお貸しいただけないでしょうか。
よろしくお願いいたします。
検査年月日
これが日付フィールドなら、、
> 2023/04/01
これは単にテキストですから、。
これを日付にしないとだめです。
GetAsDate(テキスト)
Date ( 月 ; 日 ; 年)
で日付データになりますね。
Offline
日付のところは、チポさんの指摘どおりです。
今後も同じようなことが起こるでしょうから、ベタな式にすると、将来メンテナンスが難しくなっていきます。そのために、検査項目、設定日、上限値、下限値を保存するテーブルを作り、そこへのリレーションをはり、判定していくのがベストです。
それが難しければ、次のような式に書き換えると、少しましになるでしょう。(2〜8行目を複製して、上側に新しい日付条件を設定)
Case (
検査年月日 >= Date ( 4 ; 1 ; 2023 ) ;
Case (
検査項目A > 1.1 ; "High" ;
検査項目A ≥ 0.6 ; "○" ;
"Low"
)
) ;
Case (
検査項目A > 1.0 ; "High" ;
検査項目A ≥ 0.4 ; "○" ;
"Low"
)
)
ちょっと凝った式にすると、
Let (
i = 検査年月日 >= Date ( 4 ; 1 ; 2023 ) ;
Case (
検査項目A > Choose ( i ; 1.0 ; 1.1 ) ; "High" ;
検査項目A ≥ Choose ( i ; 0.4 ; 0.6 ) ; "○" ;
"Low"
)
)
Last edited by Shin (2023-03-21 09:46:17)
Offline
お二方、丁寧な解説ありがとうございました。
無事に問題はクリアできました。
今日早速データベース内の変更を行ってみます。
特に、リレーションをというのは今後とても楽な運営にしていけそうなので、今後時間を見つけて大幅に変更をかけてみようかと思います。
今後もわからないことなど出てくるかとは思いますので、その時はまたご教授いただけますと幸いです。
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 553.95 KiB (Peak: 582.01 KiB) ]