みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FM11利用です。
( フィールドA = "S" and フィールドT = "20:00” )
+
( フィールドA = "S" and フィールドT = "20:30” )
+
( フィールドA = "S" and フィールドT = "21:00” )
+
( フィールドA = "A" and フィールドT = "20:00” )
+
( フィールドA = "A" and フィールドT = "20:30” )
+
( フィールドA = "A" and フィールドT = "21:00” )
+
( フィールドA = "B" and フィールドT = "20:00” )
+
( フィールドA = "B" and フィールドT = "20:30” )
+
( フィールドA = "B" and フィールドT = "21:00” )
+
( フィールドA = "C" and フィールドT = "20:00” )
+
( フィールドA = "C" and フィールドT = "20:30” )
+
( フィールドA = "C" and フィールドT = "21:00” )
という式を短くしたいのですが、どうしたらいいでしょうか?
よろしくお願いします。
フィールドA と フィールドT は Let を使えば何度も参照しなくてよくなりますが、この計算式の目的は何でしょう?
括弧内の式を満たしたら 1 が返るので 1 を足すか 0 を足すかだと思いますが......。
Last edited by Moz (2015-06-27 07:56:54)
Offline
+でなくORなら変形できますがねえ。
Tは30分単位の値しかないという条件?
Offline
書かれた式は、1行ずつ見て、
2行以上真になることは有りえませんから、
必ず1か0しか返しませんよね。
0を返すのは、書かれた値にならない場合ですから、
Case ( フィールドA = "S" or フィールドA = "A" or フィールドA = "B" or フィールドA = "C" ) *
Case ( フィールドT = "20:00" or フィールドT = "20:30" or フィールドT = "21:00" )
でいいんじゃないかな。
Offline
>2行以上真になることは有りえません
あ、そこまで考えませんでしたが、それならORと一緒ですね。
チポさんのは*を使ってますが、ANDにすれば論理式の変形です。
FM関数でさらに書き換えると、前半は値が1文字なので
Case ( フィールドA = Filter ( フィールドA ; "ABC" ) ) *
Offline
式おかしかったです。
単に
( フィールドA = "S" or フィールドA = "A" or フィールドA = "B" or フィールドA = "C" ) *
( フィールドT = "20:00" or フィールドT = "20:30" or フィールドT = "21:00" )
こうすべきでした。
waderさんのをお借りすれば
PatternCount ( "SABC" ; フィールドA ) and
PatternCount ( "20:00¶20:30¶21:00" ; フィールドT )
これでいいですね。
フィールドTが時刻フィールドだと問題かな。
Offline
Pages: 1
[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 508.67 KiB (Peak: 515.44 KiB) ]