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

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

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

You are not logged in.

Announcement

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


#1 2018-07-24 17:09:56

yadashitanaka
Member

条件によって値を自動で入力する。

FMP16 Macです。
フィールドAにチエック項目をチエックボックスで表示し、その答えによってフィールドBに値を入力する方法を教えてください。

フィールドA
□痛みがない  □動作ができない □膝は足の上 □棒は足の上 □上半身は地面に対して □肩か平行 □上半身は脛骨と平行

フィールドB
「動作ができない」以外全てチエックの場合は3点
「痛みがない」と「動作ができない」以外に一つでも空欄がある場合は2点
動作ができないにチエックがある場合は1点
痛みがないにチエックがついていない場合は0点

今までこのようなケースはcaseを使用していましたが複雑である為困っています。
よろしくお願いいたします。

Last edited by yadashitanaka (2018-07-24 17:17:39)

Offline

#2 2018-07-24 18:31:12

Hiro
Member

Re: 条件によって値を自動で入力する。

説明理解も動作検証も甘々ですが、一応こんな事?

Case(
   PatternCount(フィールドA; "痛みがない")=0 ; 0 ;
   PatternCount(フィールドA; "動作ができない") ; 1 ;
   FilterValues(List("痛みがない"; "動作ができない"); フィールドA)=FilterValues(List("痛みがない"; "動作ができない"); List("痛みがない"; "動作ができない"))
      and ValueCount(フィールドA)<7 ; 2 ;
   PatternCount(フィールドA; "動作ができない")=0 and  ValueCount(フィールドA)=6 ; 3
)

考えてみたら、上のような逆順ではなく、説明通りの順が正しいのかな?

Case(
   PatternCount(フィールドA; "動作ができない")=0 and  ValueCount(フィールドA)=6 ; 3 ;
   FilterValues(List("痛みがない"; "動作ができない"); フィールドA)=FilterValues(List("痛みがない"; "動作ができない"); List("痛みがない"; "動作ができない"))
      and ValueCount(フィールドA)<7 ; 2 ;
   PatternCount(フィールドA; "動作ができない") ; 1 ;
   PatternCount(フィールドA; "痛みがない")=0 ; 0
)

Last edited by Hiro (2018-07-24 19:53:28)

Offline

#3 2018-07-25 08:28:57

yadashitanaka
Member

Re: 条件によって値を自動で入力する。

Hiroさま

ありがとうございます。
ご提示頂いた内容で確認してみましたが、

Case(
   PatternCount(フィールドA; "動作ができない")=0 and  ValueCount(フィールドA)=6 ; 3 ;
   FilterValues(List("痛みがない"; "動作ができない"); フィールドA)=FilterValues(List("痛みがない"; "動作ができない"); List("痛みがない"; "動作ができない"))
      and ValueCount(フィールドA)<7 ; 2 ;
   PatternCount(フィールドA; "動作ができない") ; 1 ;
   PatternCount(フィールドA; "痛みがない")=0 ; 0
)

痛みがない=空欄
痛みがない+動作ができない=2
動作ができない=1
痛みがない・動作ができない以外=0
となってしまいました。動作ができない=1だけが望んだ結果でした。

説明に1点入力ミスがありました。申し訳ありません。
整理しますと
0点の場合=「痛みがない」にチエックがつかない  (痛みがある)にチエックをつけ0点の方がわかりやすいでしょうか?
1点の場合=「動作ができない」のみにチエック
2点の場合=「痛みがない」「膝は足の上」「棒は足の上 」「上半身は地面に対して」「肩か平行」 「上半身は脛骨と平行」の中でひとつでも空欄があるとき
3点の場合=「動作ができない」以外にチエックです。

重ねてすみません。
「痛みがない」ではなく「痛みがある」とした方が簡便になりますでしょうか?
0点の場合=「痛みがある」にチエック
1点の場合=「動作ができない」のみにチエック
2点の場合=「痛みがある」「動作ができない」以外でひとつでも空欄があるとき
3点の場合=「痛みがある」「動作ができない」以外が全てにチエック

私なりにご提示頂いた内容を考え簡便にと考えました。
ご教授いただけると幸いです。

Offline

#4 2018-07-25 09:18:08

チポ
Member

Re: 条件によって値を自動で入力する。

Case ( PatternCount ( A ; "痛みがある" ) ; 0 ;
           Case ( A = "動作ができない" ; 1 ;
                      Case ( PatternCount ( A ; "動作ができない" ) ; Case ( ValueCount ( A ) <= 5 ; 2 ; 3 ) ; Case ( ValueCount ( A ) <= 4 ; 2 ; 3 ) ) ) )

検証不十分です-_-

Offline

#5 2018-07-25 19:23:15

yadashitanaka
Member

Re: 条件によって値を自動で入力する。

チポ さま

ありがとうございます。
実際に検証してみました。
チエックがひとつもない時=2
「痛みがある」にチエックが入った時はどのパターンでも=0
「膝は足の上 」「棒は足の上 」「上半身は地面に対して 」「肩か平行 」「上半身は脛骨と平行」全てにチエック=3
「膝は足の上 」「棒は足の上 」「上半身は地面に対して 」「肩か平行 」「上半身は脛骨と平行」にひとつでも空欄=2
「動作ができない」にチエック=2
となり、1点が出てきません。

Case ( PatternCount ( A ; "痛みがある" ) ; 0 ;
Case ( A = "動作ができない" ; 1 ;             
Case ( PatternCount ( A ; "動作ができない" ) ;
Case ( ValueCount ( A ) <= 5 ; 2 ; 3 ) ;
Case ( ValueCount ( A ) <= 4 ; 2 ; 3 ) ) ) )

ご教授いただけますでしょうか?

Offline

#6 2018-07-25 20:35:32

Hiro
Member

Re: 条件によって値を自動で入力する。

未だに説明の理解が自信ありませんが、
一応、こんな式ではどうでしょう?


Case(
   PatternCount(Aフィールド; "痛みがある"); 0;
   Aフィールド="動作ができない"; 1;
   Choose(
      ValueCount(FilterValues(Aフィールド;List("膝は足の上";"棒は足の上";"上半身は地面に対して";"肩か平行";"上半身は脛骨と平行")))
         ; 2
         ; 2
         ; 2
         ; 2
         ; 2
         ; 3
   )
)



【補足】
こちらも、上式の短縮例をば、補足してみます。

Case(
   PatternCount(Aフィールド; "痛みがある"); 0;
   Aフィールド="動作ができない"; 1;
   2 + (ValueCount(Substitute(Aフィールド;["動作ができない";""]))=5)
)

Last edited by Hiro (2018-07-26 11:48:08)

Offline

#7 2018-07-26 08:56:48

チポ
Member

Re: 条件によって値を自動で入力する。

> チエックがひとつもない時=2
計算式指定のオプションで、
  式内の全フィールドの値が空欄の時、計算しない
にチェックが入っていますか?

> 1点が出てきません
  Case ( A = "動作ができない" ; 1 ;
ここで評価していますから、
1点にならないのは式が間違えているのでは。

後が正しいのか間違っているのか書き込みからは理解できません。


前式、冗長すぎました、訂正です。
  Case ( PatternCount ( A ; "痛みがある" ) ; 0 ;
            A = "動作ができない" ; 1 ;
            PatternCount ( A ; "動作ができない" ) ; Case ( ValueCount ( A ) <= 5 ; 2 ; 3 ) ;
            Case ( ValueCount ( A ) <= 4 ; 2 ; 3 ) )

式のロジックは前式と変わりません。

Offline

#8 2018-07-26 16:36:59

yadashitanaka
Member

Re: 条件によって値を自動で入力する。

チポ さま
Hiro さま

ありがとうございます。
再起動しましたら1点が出ました。

Case ( PatternCount ( A ; "痛みがある" ) ; 0 ;
            A = "動作ができない" ; 1 ;
            PatternCount ( A ; "動作ができない" ) ; Case ( ValueCount ( A ) <= 5 ; 2 ; 3 ) ;
            Case ( ValueCount ( A ) <= 4 ; 2 ; 3 ) )

Case(
   PatternCount(Aフィールド; "痛みがある"); 0;
   Aフィールド="動作ができない"; 1;
   2 + (ValueCount(Substitute(Aフィールド;["動作ができない";""]))=5)
)

の場合どちらも3点になりません。

お忙しい中恐縮ですがご確認いただけますでしょうか。

http://firestorage.jp/download/b76ea09c … 26817d8569

Offline

#9 2018-07-26 16:59:23

チポ
Member

Re: 条件によって値を自動で入力する。

私のテストでは、

  痛みがある  のチェックはなし
かつ
  動作ができない  のチェックは問わず
かつ
  他の5項目全てにチェック

で3点になりますよ。


私はここでのファイルのアップダウンはできません。

Offline

#10 2018-07-26 18:19:08

Hiro
Member

Re: 条件によって値を自動で入力する。

サンプルを診て、即 原因が分かりましたよ!
当初説明の「他の5項目」は、サンプルでは「肩か平行」項が抜けて「他は4項」になっているからです。

もし、他は4項が正しいなら、>#6式の最後の行は、以下としなければ、
   2 + (ValueCount(Substitute(Aフィールド;["動作ができない";""]))=4)

Offline

#11 2018-07-26 19:57:59

yadashitanaka
Member

Re: 条件によって値を自動で入力する。

チポ さま
Hiro さま

申し訳ありませんでした。
無事解決いたしました。
ありがとうございます。今後ともよろしくお願いいたします。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.009 seconds, 9 queries executed - Memory usage: 594.81 KiB (Peak: 611.72 KiB) ]