初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2017-11-23 15:32:48

if【閏年なら】は求められますか?

いつもお世話になっております
windows10 64bit/fm16 advanced  16.0.2.205(06-06-2017)
です

標題の件ですが
サーバー実行のスクリプトで
毎月28日くらいに(2月を考慮して)
来月のチェックリストを自動作成しようと考えております

チェックリストは日数分だけ、レコードがある作りです

スクリプトで作成するレコードの数は
get日付の月部分をくり抜いて、判断しようと思っていましたが
閏年が立ちはだかりました
閏年であれば、2月は28ではなく29レコードを新規作成せねばなりません

パッと思いついたのが
【年部分を4で割って、整数なら】とか、もっとシンプルに【年部分が閏年なら】
みたいなif文ですが、そんなものは調べても分かりませんでした。。

get日付から、閏年を判別する方法を教えて頂けますでしょうか
いつも質問ばかりで申し訳ございません。よろしくお願いします

Offline

#2 2017-11-23 15:54:04

Moz
Member

Re: if【閏年なら】は求められますか?

日付を0にすると前月末日が取得できます。
Date ( 3 ; 0 ; 2017 )
で閏年ならば 2/29 が返ってきます。上記式(2017)は閏年ではないので 2/28 です。

Offline

#3 2017-11-23 16:00:05

Re: if【閏年なら】は求められますか?

Moz wrote:

日付を0にすると前月末日が取得できます。
Date ( 3 ; 0 ; 2017 )
で閏年ならば 2/29 が返ってきます。上記式(2017)は閏年ではないので 2/28 です。

MOZ様
お世話になっております。ありがとうございます

という事は
①毎月28日にサーバー実行スクリプトを走らせる
②get日付+月を2つ足して、再来月の月と年取得
③再来月の月と年を変数にして(ここでは$Aと$Bとして)、date($A; 0 ; $B )で、本当に調べたい来月の末日を取得
④この末日の数だけ、新規レコード作成

という考え方でしょうか?私の知識だとこうなります。。

Offline

#4 2017-11-23 16:00:55

Shin
Member

Re: if【閏年なら】は求められますか?

閏年は、
Day ( Date ( 3 ; 0 ; year ) ) = 29
で簡単に求められます。
それよりも、日付、というフィールドを作っておき、自動入力で、 self + 1 にしておきます。日付以外のフィールドを空にして(または入力する前にあらかじめ、)レコードを複製していき、月が変われば停止という loop のスクリプトを作る、または、毎日1日ずつ複製するのが、もっと簡単でしょう。

Offline

#5 2017-11-23 16:06:36

Re: if【閏年なら】は求められますか?

Shin wrote:

閏年は、
Day ( Date ( 3 ; 0 ; year ) ) = 29
で簡単に求められます。
それよりも、日付、というフィールドを作っておき、自動入力で、 self + 1 にしておきます。日付以外のフィールドを空にして(または入力する前にあらかじめ、)レコードを複製していき、月が変われば停止という loop のスクリプトを作る、または、毎日1日ずつ複製するのが、もっと簡単でしょう。

Shin様
お世話になっております。ありがとうございます

self関数でしょうか?使った事がないので早速調べてみます
Day ( Date ( 3 ; 0 ; year ) ) = 29

これは理解出来ました。こんな簡単に求められるのですね。。
何とかなりそうです。ありがとうございました!

Offline

#6 2017-11-23 16:18:40

Moz
Member

Re: if【閏年なら】は求められますか?

解決していますが......
閏年関係なく翌月1ヶ月分のレコードを作成すればよいのでは?

翌月末日を取得して翌月1日〜末日まで Loop で新規レコードに日付をフィールド設定するのが簡単確実です。
複製も良いですがフィールドの消し忘れや UUID で主キー作っていたりすると面倒です。
Self + 1 はスタートをどうするか考える必要があります。

Offline

#7 2017-11-23 16:23:07

Shin
Member

Re: if【閏年なら】は求められますか?

先行して作っておいて問題無いのでしたら、最終日付が翌々月になるように、レコードを足していけば良いのでは。それを、毎日チェックさせておけば良いですよ。自動ですし。

Offline

#8 2017-11-23 17:02:45

Re: if【閏年なら】は求められますか?

Moz wrote:

解決していますが......
閏年関係なく翌月1ヶ月分のレコードを作成すればよいのでは?

翌月末日を取得して翌月1日〜末日まで Loop で新規レコードに日付をフィールド設定するのが簡単確実です。
複製も良いですがフィールドの消し忘れや UUID で主キー作っていたりすると面倒です。
Self + 1 はスタートをどうするか考える必要があります。

Moz様
お世話になっております。ありがとうございます

そうですよね。。翌月分をloopすれば良いのですよね。
毎回のクセなのですが、分かるなくなると、複雑(というか回り道と言うか)な方へ方へと
ロジックが進む傾向にあります

もっと引き出しを増やして、シンプルな解決方法が自分で浮かぶと良いのですが。。
ありがとうございました!

Offline

#9 2017-11-23 17:04:54

Re: if【閏年なら】は求められますか?

Shin wrote:

先行して作っておいて問題無いのでしたら、最終日付が翌々月になるように、レコードを足していけば良いのでは。それを、毎日チェックさせておけば良いですよ。自動ですし。

Shin様
お世話になっております。ありがとうございます。

そうですね。これでもスムーズに動きますね。
全く考えの外でした。。

一人で考えていると、解決方法なんか無いな。。と思うのですが
聞くとこれでもかとでてきて、毎回恥ずかしい限りです。。

今後も(絶対)お世話になると思います
ありがとうございました!

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 8 queries executed - Memory usage: 565.86 KiB (Peak: 570.74 KiB) ]