4 返信 最新の回答 日時: May 6, 2011 11:35 PM ユーザー:YukioTakaoka

    日付のことについて

    takekoubou

      タイトル

      日付のことについて

      フォーラムに投稿

      例えば、「配達日」のフィールドに、入力した日から近い月曜日を入力した新レコードを作成することはどうすればいいのでしょうか?

      なかなかわからず、投稿してみました

        • 1. Re: 日付のことについて
          YukioTakaoka

          こんにちは、

          手法としては、入力した日付の曜日番号を「DayOfWeek」関数で取得して、その番号と月曜日の番号である「2」との差を考慮した計算式を構築すれば良いかと思います。

          たとえば、こんな感じではどうでしょう。

          「入力日付」フィールドに日付が入力されている日付を元にして、次の月曜日を計算しています。「入力日付」フィールドに入力した日付が月曜日だった場合には、その日が採用されます。

          Choose(DayOfWeek ( 入力日付 );""; 入力日付 +1; 入力日付 +0; 入力日付 +6; 入力日付 +5; 入力日付 +4; 入力日付 +3; 入力日付 +2)

          この計算をする計算フィールドを用意して、計算結果を「日付」にすれば、次の月曜日の日付を得ることが出来ます。

          「Choose」関数に関する説明はヘルプをご覧頂ければ詳しく書いてありますので、御参考に確認してみて下さい。

          以上、御参考になれ場幸いです。

          • 2. Re: 日付のことについて
            Shin

            Takaさんの式を数学的に処理すると、

            入力日付 + Mod ( 9 - DayOfWeek ( 入力日付 ) ; 7 )

            という式でも計算できます。

            • 3. Re: 日付のことについて
              takekoubou

              ありがとうございます。これだけのために結構苦労しました。

              ちなみに数式の、数字の「9」と「7」はどのような意味ですか?

              • 4. Re: 日付のことについて
                YukioTakaoka

                では、解説は私から。

                「7」は1週間7日の7です。


                「9」は....
                DayOfWeek()で得られる値である「日=1」「月=2」「火=3」・・・という値に関連しています。
                たとえば、今回は「次の月曜日」を求めることが目的となっているので、日曜日基準で考えると

                1週間+2日目ということで「9」になります。

                入力した日付が土曜日だとすると、DayOfWeek(入力日)は「7」を返します。
                それを計算式に当てはめると...

                日曜日基準で翌週の月曜日を示す「9」から「7」を引いた値を7で割ったあまり、すなわち「2」を入力した日付に足すことになります。

                Shinさんの計算式を使用すると、「9」の部分別の値に変えることで、求めたい曜日を変えることも可能なのですね。