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

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

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

You are not logged in.

Announcement

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


#1 2016-07-11 20:04:05

LITT
Member

case関数でうまくいきません

マルチポストで失礼します

Win7 pro 64bit, FM pro13使用しています

あるフィールド「ア」にA、B、C、Dとチェックボックスセットで用意しました
A-Dは単語です
このうち、A or B or Dのどれかをチェックしたら
別のフィールド「イ」に「あり」を、どれも選ばないないしはCを選択した場合は「なし」と設定したいのです

case関数でトライしてみたのですが
ある方にご指導いただき

Case (
FilterValues ( ア ; "A" ) ; "あり" ;
FilterValues ( ア ; "B" ) ; "あり" ;
FilterValues ( ア ; "D" ) ; "あり" ;
IsEmpty ( ア ) ; "なし"
)

としたのですがうまく行きませんでした
非常に初歩的な質問ですが解決法をご存知の方いらっしゃいましたら教えて下さい

Offline

#2 2016-07-11 20:29:50

calcer
Guest

Re: case関数でうまくいきません

FilterValues の結果は論理値でなくテキストですから、そのままでは条件になりません。
Case ( FilterValues ( List ( "A" ; "B" ; "D" ) ; ア ) = "" ; "なし" ; "あり" )

#3 2016-07-11 20:40:10

LITT
Member

Re: case関数でうまくいきません

ありがとうございます

calcer wrote:

FilterValues の結果は論理値でなくテキストですから、そのままでは条件になりません。
Case ( FilterValues ( List ( "A" ; "B" ; "D" ) ; ア ) = "" ; "なし" ; "あり" )


A,B,Dを再度チェックしなおしたら(こちらの数は少ないので)ありと表示されました
しかし、残りの大半(400ちかく)のなしが表示されず空欄のままです
何か良い解決策はあるでしょうか?

Offline

#4 2016-07-11 20:57:28

Shin
Member

Re: case関数でうまくいきません

値が、"A"  "B"  "D" で無い物があるのでしょうね。例えば、"A "

Offline

#5 2016-07-11 21:13:48

LITT
Member

Re: case関数でうまくいきません

ありがとうございます

Shin wrote:

値が、"A"  "B"  "D" で無い物があるのでしょうね。例えば、"A "


一応慎重にコピーしたので、余分なスペースは入っていませんでした
過去のなしに反応しないのはどうしてなのでしょうかね・・

Offline

#6 2016-07-11 21:21:28

Hiro
Member

Re: case関数でうまくいきません

●チェックボックスは複数値選択可能ですが、その場合の式は、
   Case(
      FilterValues(ア; List("A";"B";"D"))=FilterValues(ア;ア); "あり";
      "なし"
   )

   ※ □式内の全フィールドの値が空欄の時、計算しない → デフォルトチェックを外す

●ラジオボタンなら択一値選択ですが、その場合の式は、
(上のチェックボックスの式は、ラジオボタンでも汎用で使えますが、一応専用式は)
   Case(
      FilterValues(ア; List("A";"B";"D"))<>""; "あり";
      "なし"
   )

   ※ □式内の全フィールドの値が空欄の時、計算しない → デフォルトチェックを外す

Offline

#7 2016-07-11 21:43:59

LITT
Member

Re: case関数でうまくいきません

ありがとうございます

Hiro wrote:

●チェックボックスは複数値選択可能ですが、その場合の式は、
   Case(
      FilterValues(ア; List("A";"B";"D"))=FilterValues(ア;ア); "あり";
      "なし"
   )

   ※ □式内の全フィールドの値が空欄の時、計算しない → デフォルトチェックを外す

●ラジオボタンなら択一値選択ですが、その場合の式は、
(上のチェックボックスの式は、ラジオボタンでも汎用で使えますが、一応専用式は)
   Case(
      FilterValues(ア; List("A";"B";"D"))<>""; "あり";
      "なし"
   )

   ※ □式内の全フィールドの値が空欄の時、計算しない → デフォルトチェックを外す

A,B,Dをチェックするとありになりますが、その後、チェックを外すとなしになりませんでした
また、過去のなしも反映されず新規のデータはありになりました

Offline

#8 2016-07-11 22:13:05

Hiro
Member

Re: case関数でうまくいきません

LITT wrote:

A,B,Dをチェックするとありになりますが、その後、チェックを外すとなしになりませんでした

検証不足すみません。
では、データ削除のケースも加味した式、

  Case(
      IsEmpty(ア)=0 and FilterValues(ア; List("A";"B";"D"))=FilterValues(ア;ア); "あり";
      "なし"
   )

   ※ □式内の全フィールドの値が空欄の時、計算しない → デフォルトチェックを外す



LITT wrote:

また、過去のなしも反映されず新規のデータはありになりました

計算フィールドなら通常考えられませんが、
●入力の自動化(+既存値書換え)で計算値代入しているなら、入力済みデータには発火しません。
   その場合は、自フィールド値で自フィールドを「全置換」してデータ上書きすることで、発火させます。
●計算フィールドなら、Shinさんが言われたように旧データに規定外の文字列が含まれているとしか?
   その場合、フィルターでクリーニングして最適化を試みるとか、

Last edited by Hiro (2016-07-11 22:54:13)

Offline

#9 2016-07-11 23:17:49

LITT
Member

Re: case関数でうまくいきません

ありがとうございます

Hiro wrote:
LITT wrote:

A,B,Dをチェックするとありになりますが、その後、チェックを外すとなしになりませんでした

検証不足すみません。
では、データ削除のケースも加味した式、

  Case(
      IsEmpty(ア)=0 and FilterValues(ア; List("A";"B";"D"))=FilterValues(ア;ア); "あり";
      "なし"
   )

   ※ □式内の全フィールドの値が空欄の時、計算しない → デフォルトチェックを外す

LITT wrote:

また、過去のなしも反映されず新規のデータはありになりました

計算フィールドなら通常考えられませんが、
●入力の自動化(+既存値書換え)で計算値代入しているなら、入力済みデータには発火しません。
   その場合は、自フィールド値で自フィールドを「全置換」してデータ上書きすることで、発火させます。
●計算フィールドなら、Shinさんが言われたように旧データに規定外の文字列が含まれているとしか?
   その場合、フィルターでクリーニングして最適化を試みるとか、




チェックを外すと「なし」にすることが出来ました
大変助かります

やはり過去の分は反映されませんでした
地道に全置換してみることにします
ありがとうございました

Last edited by LITT (2016-07-11 23:20:05)

Offline

#10 2016-07-12 09:01:31

calcer
Guest

Re: case関数でうまくいきません

>計算フィールドなら通常考えられません
と書いているように、私が書いてた最初の式は必ずどっちかの値になるので「空欄のままです」の原因は計算されてないということです。
「計算」タイプのフィールドに設定すればよいのでは。

#11 2016-07-12 11:35:15

LITT
Member

Re: case関数でうまくいきません

ありがとうございます
返信遅くなり申し訳ありません

calcer wrote:

>計算フィールドなら通常考えられません
と書いているように、私が書いてた最初の式は必ずどっちかの値になるので「空欄のままです」の原因は計算されてないということです。
「計算」タイプのフィールドに設定すればよいのでは。


イのフィールドを「計算」にして教えていただいた式を入力したら
過去分も「なし」となりました
これでズバッと解決できました
ありがとうございました

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 545.7 KiB (Peak: 566.23 KiB) ]