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

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

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

You are not logged in.

Announcement

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


#1 2019-01-21 16:52:29

bosom
Member

複数の条件

FileMaker Pro 11 Advanced
Macです。よろしくお願いします。

1レコード = 一人の患者についてひと月分のデータです。
「 」内は,フィールド名
” ” 内は,入力されるデータ

−−−−−−−−−−−−−−−−−−−−−−−
フィールドが,31個あります。(01〜31は,日にちです)
「往療日01○」 … 往療に行った日に「○」を入力しました。
「往療日02○」 …     〃

「往療日31○」 …     〃
があります。

−−−−−−−−−−−−−−−−−−−−−−−
新しく,フィールドを作りました。
「往療日01施術選択」 …   ”施術①” か ”施術②” か ””(空欄)と自動入力させたい。
「往療日02施術選択」 …      〃

「往療日31施術選択」 …      〃


「往療日01」と「往療日01施術選択」が対応します。

−−−−−−−−−−−−−−−−−−−−−−−
フィールド
「同意期間開始日」
「同意期間終了日」
に数字を入力しております。

同意期間が,3〜25日の場合,
「同意期間開始日」  ”3”
「同意期間終了日」  ”25”
と入力されています。
この場合,
1, 2, 26, 27, 28, 29 30, 31 日が 同意期間外
他の日は 同意期間内 となります。

−−−−−−−−−−−−−−−−−−−−−−−
【やりたいこと】
「往療日01」に ”○” がつき,かつ,1日が同意期間内であれば,
「往療日01施術選択」に ”施術①” と自動入力

「往療日01」に ”○” がつき,かつ,1日が同意期間外であれば,
「往療日01施術選択」に ”施術②” と自動入力

「往療日01」に ”○” がつかない場合は,
「往療日01施術選択」は空欄

以下,「往療日31」⇔「往療日31施術選択」まで,同様。

−−−−−−−−−−−−−−−−−−−−−−−
【やってみたがうまくいかない計算式】
「往療日01施術選択」=
If ( 往療日01○ = "" ; "" ;
If ( 往療日01○ = "○" and 同意期間開始日 > "1" ; "施術②" ;
If ( 往療日01○ = "○" and 同意期間終了日 < "1" ; "施術②" ;
If ( 往療日01○ = "○" ; "施術①" ; ""
) ) ) )


いろいろ式を入れてみたのですが,思い通りの動きになりません。
わかりましたら,よろしくお願いします。

Offline

#2 2019-01-22 08:53:19

Shin
Member

Re: 複数の条件

まず、基本的な構造を大きく変更しましょう。
理論的に正しいのは、
1レコード = 一患者(患者基本テーブル)
1レコード = 一患者、1日(施術記録テーブル)
です。この2個のテーブルを、例えば、患者IDでリレーションします。

患者基本テーブルに、同意期間開始日、同意期間終了日を日付で設定し、施術記録テーブルに、往療日、施術選択 フィールドを作ります。日付で比較すれば、簡単でしょう。
もし、同意期間が複数あるのでしたら、基本情報と別のテーブルで管理することになります。

入力は、カレンダーのような形式で日付を表示してあげると、簡単な入力になるでしょうね。

Last edited by Shin (2019-01-22 08:55:14)

Offline

#3 2019-01-22 09:37:05

チポ
Member

Re: 複数の条件

> 「往療日01施術選択」=
> If ( 往療日01○ = "" ; "" ;
> If ( 往療日01○ = "○" and 同意期間開始日 > "1" ; "施術②" ;
> If ( 往療日01○ = "○" and 同意期間終了日 < "1" ; "施術②" ;
> If ( 往療日01○ = "○" ; "施術①" ; ""
> ) ) ) )

このような場合、Case関数の方が適当ですね

また、
  同意期間開始日 > "1"
こうすると、テキストの判定となってしまいますから、
数値の判定と違う結果になります。
  同意期間開始日 > 1
とします。

で、式は
  Case ( 往療日01○ = "" ; "" ;
            同意期間開始日 > 1 ;  "施術②" ;
            同意期間終了日 < 1 ;  "施術②" ;
            "施術①" )

と書けますね。
往療日01○の値が、○か空白のどちらかであることが条件です。

Offline

#4 2019-01-22 21:11:08

bosom
Member

Re: 複数の条件

>Shin様

ありがとうございます!
7,8年前,FMがよくわからないながらも,ここの方々に大変お世話になり,私にとってはとても複雑なデータベースを作り,業務で使っております。
市販のソフトもありますが,地域によって,また個人的に変更を加えたいこともあるので,作りました。
文系頭には,DB作成は難しく,無駄に複雑な部分が多いと思います。

Shin様の回答のようにすれば,スッキリしたDBになりそうですね。
しかし,今の私の知識では,他の部分・他のファイルに影響を与えず構造を変えることが,数日内にできそうにないので,もう少し勉強して時間のあるときに作り直したいと思います。

「同意期間が複数」の可能性,考えていませんでした。
あるかもしれません。考慮に入れました。
ご指摘ありがとうございました。



>チポ様

この式を考えるのに,5時間くらい格闘していました(笑)
マニュアルがどこかにいってしまって…

「同意期間が複数」の可能性を,Shin様にご指摘いただき,ちょっと違ってきたのですが,
Case関数を使うこと,
数式内の数字に ”” をつけないこと,
これで,なんとかなりました。



>Shin様
>チポ様
FMは難しいですが,素晴らしいソフトですね。
私の説明,わかりにくかったと思いますが,ご丁寧に教えていただき,ありがとうございました!
お陰様で,今回も何とかなりそうです。(まだ,いろいろ変更があり,格闘中です)
ありがとうございました!
また,よろしくお願いします m(_ _)m

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 512.07 KiB (Peak: 516.61 KiB) ]