4 返信 最新の回答 日時: Nov 4, 2014 7:50 PM ユーザー:nkk47

    前月の値を返させるには?

    nkk47

      タイトル

      前月の値を返させるには?

      フォーラムに投稿

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

      作業環境
      Windos Vista HP SP2
      FileMaker PRO 11 0v3

      ●テーブルA
      ・年
      ・月
      ・メーター値
      ・前月メーター値

      前月メーター値のところを計算で入力させるにはどうしたらよいのでしょうか?

      月=1 の時は、
      年-1 で、月=12 のメーター値。

      それ以外の場合は
      年=年、月=月-1 のメーター値が返されるようにしたい。

      以上を実現するには「年」「月」で自己リレーションを組んで・・・となるのかなと思いましたが、前月メータ値の計算をどうしたらよいのか悩んでいます。


      ご教示の程宜しくお願い致します。

        • 1. Re: 前月の値を返させるには?
          sago350@未来Switch

          年月とフィールドを分けるんじゃなくて、日付タイプのフィールドを使ったほうが日付が扱いやすくなりますよ。

          やりたいことは、こんな感じですかね。

          サンプルファイル

          • 2. Re: 前月の値を返させるには?
            nkk47

            sago35さん

            早々にご教示頂き、ありがとうございます。

            1月の前月は前年の12月という計算をさせなくても、日付タイプのフィールドにする事によって、12月の前月は 1月と判断してくれるようになる訳ですね。

            ところで、「年月」フィールドのタイプを計算ではなく日付にして、フィールドオプションの「入力値の自動化」の計算値によって日付を求めていますが、フィールドタイプ自体を計算にして日付を求めるのとでは、何か違いがあるのでしょうか?

            また、self# の意味も理解出来ていません。
            self(倫理関数)をヘルプで見てみますと『計算式が定義されているオブジェクトの内容を返します』とありますが・・・ # は変数設定で見かけますが、この場合はどういった意味をするのかまだ分かりません。


            ご教示の程宜しくお願い致します。

            • 3. Re: 前月の値を返させるには?
              sago350@未来Switch

              ■入力値の自動化と計算フィールドの違い
              そのフィールドを計算フィールドにしてしまうと、日付の入力が出来ません。
              もう一つ別のフィールドを用意する必要があります。
              それを省略する為に、入力値の自動化で、入力された日付の値を、その月の1日にしています。

              ■self#
              これは、テーブルオカレンスの単なる名前で、マイルールみたいなもんです。命名規則とかそういうもんです。
              私のルールでは、[親側のテーブル名]_[子側のテーブル名]#[リレーションのキーとか、意味とか]
              というルールで名前を付けています。
              今回だと

              [親側のテーブル名]→前月の値を反映
              [子側のテーブル名]→前月の値を反映
              [リレーションのキーとか、意味とか]→前月

              となっています。
              で、親側と子側が同じですよね。なので、同じテーブル名になりますし、自己リレーションと一目でわかるようにテーブル名をselfとしています。

              • 4. Re: 前月の値を返させるには?
                nkk47

                sago35さん

                早々にご教示頂き、ありがとうございます。
                すべて理解出来ました。

                これからも、宜しくお願い致します。