4 返信 最新の回答 日時: May 2, 2016 2:15 AM ユーザー:user14047

    レコード毎の計算をcase関数で行う

    user23884

      いつもお世話になります。

       

      今回計算フィールドを使用し、レコード毎の値によって計算結果を変更したいと思っています。

      現在の状況

      ・使用するテーブルは1つで特にリレーションは関係ありません

      ・フィールド:区分(数字)・数値1(数字)・数値2(数字)・単位1(テキスト)・計算フィールド(計算)

      ・計算式

      Case(区分 = 101;数値1 ≠ "" or 数値2 ≠ "" ;1;

      区分 = 102;数値1 ≠ "";1;

      区分 = 103;単位1 = "◯";1;

      )

       

      というようにしてあります。

       

      計算結果として、そのレコードの区分フィールドが101の時は数値1か数値2に何か入っていれば1、区分が102の時は数値1に何か入っていれば1,区分が103の時単位1に”◯”が入っていれば1

      としたいです。

       

      これを実行すると現在は区分が101の時のみ正確に計算してくれるのですが、それ以降のcaseの区分になると全く反映されません。(102だったら数値に関係なく全て1になっていたり、103だったら何故か全てに0がはいっていたりします)

       

      使用している環境

      FilemakerAdvanced14(ver14.0.1)

      MAC OSX

      すいませんがご教授お願いいたします

        • 1. Re: レコード毎の計算をcase関数で行う
          user14047
          Case (
            区分 = 101 ;
              // 区分 = 101 の時の結果(論理式なので結果は 1 か 0 )
              数値1 ≠ "" or 数値2 ≠ "" ;
            1 ;
              // 1 = true なので区分 = 101以外は全部これ
              区分 = 102 ;
            数値1 ≠ "" ;
              1 ;
            区分 = 103 ;
              単位1 = "◯" ;
            1 ;
            ・ 
            ・ 
            ・
          )
          

          計算式が根本的に間違っているかと思います。

          改行やインデントを入れて条件と結果がわかりやすくなるように整形してみると間違いが減るかと思います。

          • 2. Re: レコード毎の計算をcase関数で行う
            user23884

            ありがとうございます。

            指導して頂いたように整形し、例で作成したものと同じ形にもしてみましたがなぜかうまく行きません。

            また例の計算式をコピペさせてもらいましたがそれでもダメでした。

            • 3. Re: レコード毎の計算をcase関数で行う
              user23884

              すいません

              おっしゃてる事がわかりました

               

              Case (

                区分 = 101  and 数値1 ≠ "" or SL区分 = 101 and 数値2 ≠ "" ;   

                1 ;

                区分 = 102  and  数値1 ≠ "" ;

              1;

                区分 = 103  and     単位1 = "◯" ;

              1  

              )

               

              このように計算式を変更したらうまくいきました

              ありがとうございました!

              • 4. Re: レコード毎の計算をcase関数で行う
                user14047

                例の計算式はインデントを変えただけなので間違ったままですよ。

                 

                条件1 : [区分] が 101 の時

                結果1 : [数値1] が "" ではないか、[数値2] が "" ではない。(結果は 1 か 0 か)

                 

                条件2 : 1 の時(条件1以外すべて当てはまる)

                結果2 : [区分] が 102と等しいかどうか(結果は 1 か 0 か)

                 

                こんな計算式になっていますよ。