みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FileMaker Pro 19を使用しています。
〇月を入力し作成を押すとその月の日付が記入されたレコードを日付分まとめて作成するスクリプトを作成したいです。
2月と入力→作成
2/1~2/29なので29レコード作成され各レコードの日付のフィールドには2/1、2/2、2/3…と日付が自動で入力される。
必要な項目を1月分先に入力しておき、入力者は当日日付検索をしてそのレコードに入力するようにしたいです。
ご教授よろしくお願い致します。
ファイルを開いた時に、当日のレコードを検索して、なければ当日のレコードを作る、というのでいいのでは。
Offline
全日付のレコードを作るのなら、
Loopで一日ずつレコードを作ってゆくスクリプトでしょう。
簡単なのは、
日付フィールドの入力値の自動化で
Self + 1
既存値置き換え
として置いて、
最後のレコードの複製を繰り返せばいいですね。
これはスクリプトにしないでも、
キーボードショートカット
Ctrl+D (Win)
command-D (Mac)
を押しっぱなしで出来ます。
30レコード分で数秒で出来ちゃいますよ。
Offline
こんなスクリプトを使ったりしてます。
■テーブル
・TableA
gDate 日付、グローバル
date 日付
■リレーション
TableA::gDate = TableA2::date (自己連結)
■スクリプト
スクリプト名: 日次レコードを作成
変数を設定 [$date; 値:Get(スクリプト引数)]
変数を設定 [$end; 値:Date(Month($date)+1;0;Year($date))]
レイアウト切り替え [「レイアウトA」(TableA); アニメーション:なし]
変数を設定 [$d; 値:Date(Month($date);1;Year($date))]
Loop
フィールド設定 [TableA::gDate; $d]
If [IsEmpty(TableA2::date)]
新規レコード/検索条件
フィールド設定 [TableA::date; $d]
End If
Exit Loop If [Let($d=$d+1;$end<$d)]
End Loop
レイアウト切り替え [元のレイアウト; アニメーション:なし]
■使い方
適当な場所で以下のように呼び出します。
スクリプト実行 [指定:一覧から;「日次レコードを作成」; 引数:"2024/01/01"]
日付部分は無視されますが、日付として認識される値を渡す必要があります。
渡した日付を含む月の、1~末日分のレコードを重複しないよう作成します。
チポさんの指摘から、分かり難い部分に追記しました。
Last edited by mic (2024-02-08 16:23:20)
Offline
micさん
> 変数を設定 [$date; 値:Get(スクリプト引数)]
これだけでは意味不明でしょう。
今回のためには、二つのテーブルは不要では。
> 〇月を入力し作成を押すとその月の日付が記入されたレコード
翌月以降の指定としたら、
例えば、
12月時点で1月の指定だと、年を考えなければなりませんよね。
Offline
皆様ありがとうございます。
その日にレコードを作成するというのも考えたのですが、稀に変則があり訂正が必要なことがあるため一か月分まとめて作成したほうが都合が良いためです。
作成は月末に翌月分を作成します。
ファイルを開くたびに、明日までを作って行く、というのが簡単かも。日付にチポさんの設定をしておいて、
全レコードを対象
レコードをソート[条件を保存] //日付で昇順
レコードを移動[最後の]
Loop
レコード複製
exit loop if ( 日付 > Get ( 日付 ) )
end Loop
のようなスクリプトでもいいでしょう。
Offline
Pages: 1
[ Generated in 0.011 seconds, 7 queries executed - Memory usage: 515.49 KiB (Peak: 520.03 KiB) ]