3 返信 最新の回答 日時: Mar 13, 2015 8:40 AM ユーザー:sago350@未来Switch

    計算式うまくできない、教えてください

    fumitopapa

      タイトル

      計算式うまくできない、教えてください

      フォーラムに投稿

      初心者の質問です、複数条件で計算値の取得でうまくいかず、やり方をおしえてください。

      A B C のフィールドによって、Dに値をセットする処理です。

      問題は Case文を使うと、1番の評価しかできない、2番処理対象にならず

      自分作ったものは以下通り

      Case (
       not IsEmpty ( 下限時間 );If ( 当月時間    <   下限時間; 当月時間    -   下限時間 ; "" );
       not IsEmpty ( 上限時間 );If ( 当月時間  >上限時間; 当月時間 - 上限時間; "" );""
       )

      なぜか 下限しか評価しないかよくわからないです。

        • 1. Re: 計算式うまくできない、教えてください
          sago350@未来Switch

          まず、何がしたいのかこの説明では良く解りません。
          A,B,Cのフィールドと書いていますが、どれがどのフィールドに対応しているか不明な上に解ってもあまり意味がなさそう。
          タイトルが適切でない。後から同じ問題に遭遇した人の事を考えていない。「Case文がの条件が上手く書けない」ぐらいが適切かと。

          という前提で回答します。

          Case文は上から順番に判定していくので、1つ目の条件が満たされているんじゃないですかね。例えば、

          Case (
           not IsEmpty ( 上限時間 );If ( 当月時間  >上限時間; 当月時間 - 上限時間; "" );""
           not IsEmpty ( 下限時間 );If ( 当月時間    <   下限時間; 当月時間    -   下限時間 ; "" );
           )

          と、1番目と2番目の条件を入れ替えたら今度は1番目の条件 しか評価されなくなりませんか?
          だとすると、判定する条件に問題があるのかも。


          途中、If文を使わなくても、下記のように書けばOKです。
          また、インデントを揃えると見易くなります。

          Case (
           not IsEmpty ( 下限時間 )and 当月時間 < 下限時間 ; 当月時間 - 下限時間 ;
           not IsEmpty ( 上限時間 )and 当月時間 > 上限時間 ; 当月時間 - 上限時間 ;
           ""
           )

          • 2. Re: 計算式うまくできない、教えてください
            fumitopapa

            sago35 さん

            大変助かりました。問題解決しました。ありがとうございます。

            Case文の使い方はよくわかりました。最初if を使うつもりですが、申し訳なく

            同じ結果でifを利用することで実現可能でしょうか?

            • 3. Re: 計算式うまくできない、教えてください
              sago350@未来Switch

              「最初IFを使うつもりだった」
              「申し訳ありませんが、IFを使って同じ結果を出すことは実現可能ですか?」

              とおっしゃっていると仮定すると、実現可能です。
              ただ、Ifを使うと計算式がややこしくなるので、Caseを使うことをおすすめします。
              というか、Ifを使わなくて構いません。