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

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

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

You are not logged in.

Announcement

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


#1 2023-06-08 17:01:37

fmnovis
Member

loop関数について

よろしくお願いいたします。
loop関数を使って年月を指定して日付を自動で用意したフィールドに入力するスクリプトを組みたいと考えています。
以下のようにスクリプトを考えたのですが、うまくいきません。
Loop関数を抜ける際にExit Loop Ifを使って月末日になったらLoopから抜けるようにしたいです。
お知恵をお貸しいただけると幸いです。

ーーーー
変数を設定 [ $年 ; 値: 2023 ]
変数を設定 [ $月 ; 値: 6 ]
変数を設定 [ $開始日 ; 値: Date ( $月 ; 1 ; $年 ) ]
変数を設定 [ $終了日 ; 値: Date ( $月 + 1 ; 1 ; $年 ) - 1 ]
変数を設定 [ $現在の日 ; 値: $開始日 ]

Loop
    フィールド設定 [ テーブル::日付フィールド [$現在の日]: $現在の日 ]
    変数を設定 [ $現在の日 ; 値: $現在の日 + 1 ]   
End Loop

Offline

#2 2023-06-08 17:44:11

himadanee
Guest

Re: loop関数について

このLoopは関数でなくスクリプトステップです。

繰り返しフィールドに入れるつもりなら、
[$現在の日]
がおかしいでしょう。
繰り返しなら計算フィールドにすればスクリプトがいらないですが。

$終了日を計算しているなら、それと比較すればいいので、「月末日になったか」みる必要はないのでは。
「月末まで入れて終わり」にしたいなら、フィールド設定後に日付を+1した後で「Day(日付)が1なら終わる」、でいいでしょう。

#3 2023-06-09 08:38:25

himadanee
Guest

Re: loop関数について

年月の指定は毎回変わるだろうからフィールドに入れるとして、繰り返し計算フィールドにすれば
Let ( d = Date ( 月[1] ; Get ( 計算式繰り返し位置番号 ) ; 年[1] ) ; If ( Month ( d ) = 月[1] ; d ) )
とかで1か月分の表示になります。

#4 2023-06-09 08:55:57

チポ
Member

Re: loop関数について

毎日のレコード
とも考えられますが、どちらでしょう?

どちらにせよ、
年と月はフィールドにしたほうが使い勝手がいいでしょう。

Offline

#5 2023-06-09 11:50:24

Shin
Member

Re: loop関数について

日付の設定だけなら Himadaneeさんの計算式がいいでしょうが、おそらく一番の問題はその次です。
なんらかのデータを入れるのでしょうが、それも繰り返しフィールドに入力するつもりなのだと思いますが、それは、絶対にしないほうがいいです。
通常の方法は、1日1レコードにして、日付と入力内容をそれぞれのレコードにします。表示するときに、それを表のように見せます。
繰り返しフィールドに入力してしまった情報は、利用がかなり難しくなります。

Offline

#6 2023-06-09 13:13:06

fmnovis
Member

Re: loop関数について

皆様アドバイスありがとうございます。
皆様のアドバイスを元に以下のようにスクリプトを修正したところ思った動きにはなっているのですが
どうしても月末にLoopを抜けることができず、固定値で31としています。
この点をどうにかできればと思っており、再度お知恵をお借りできればと思います。
また、繰り返しフィールドの欠点をご指摘いただきありがとうございます。
現在、アドバイスいただいているものですが、部屋に最初に入った人間と最後に出た人間を記録するもので
日付とそれに対応する曜日をファイルメーカーで入力できていればそれを印刷して運用していくので、現状では問題ないかと思います。
ご心配ありがとうございます。
度々で申し訳ございませんが、よろしくお願いいたします。

ーーーー
変数を設定 [ $年 ; 値: テーブル::年]
変数を設定 [ $月 ; 値: テーブル::月 ]
変数を設定 [ $日 ; 値: 1 ]
変数を設定 [ $開始日 ; 値: Date ( $月 ; 1 ; $年 ) ]
変数を設定 [ $終了日 ; 値: Date ( $月 + 1 ; 1 ; $年 )  ]

Loop
    フィールド設定 [ テーブル::日付フィールド [$日]: Date ( $月 ; $日 ; $年 ) ]
    変数を設定 [ $日 ; 値: $日 + 1 ]   
    Exit Loop If [ $日 > 31]
End Loop

Offline

#7 2023-06-09 15:26:36

Shin
Member

Re: loop関数について

> 日付とそれに対応する曜日をファイルメーカーで入力できていればそれを印刷して運用
ならば、himadanee さんの提案の計算式にするのが一番簡単ですよ。

スクリプトを修正するのでしたら、
   変数を設定 [ $終了日 ; 値: Date ( $月 + 1 ; 0 ; $年 )  ]
としておき、
    Exit Loop If [ $日 > Day ( $終了日 )]
とすればいいでしょう。

Offline

#8 2023-06-12 11:51:05

fmnovis
Member

Re: loop関数について

アドバイスありがとうございます。
いただいた内容で解決することができました。
また何かあればご助力いただければと思います。
よろしくお願いいたします。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 10 queries executed - Memory usage: 560 KiB (Peak: 564.88 KiB) ]