初心者のFileMaker pro Q&A

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

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

ログインしていません。

アナウンス

Claris FileMaker Pro ヘルプ
新しい質問は、新規トピック から投稿して下さい。


#1 2024-02-07 16:53:25

紗季
ゲストユーザー

一か月分まとめて作成

FileMaker Pro 19を使用しています。

〇月を入力し作成を押すとその月の日付が記入されたレコードを日付分まとめて作成するスクリプトを作成したいです。
2月と入力→作成
2/1~2/29なので29レコード作成され各レコードの日付のフィールドには2/1、2/2、2/3…と日付が自動で入力される。
必要な項目を1月分先に入力しておき、入力者は当日日付検索をしてそのレコードに入力するようにしたいです。
ご教授よろしくお願い致します。

#2 2024-02-07 17:07:40

Shin
メンバー

Re: 一か月分まとめて作成

ファイルを開いた時に、当日のレコードを検索して、なければ当日のレコードを作る、というのでいいのでは。

オフライン

#3 2024-02-08 09:17:19

チポ
メンバー

Re: 一か月分まとめて作成

全日付のレコードを作るのなら、
Loopで一日ずつレコードを作ってゆくスクリプトでしょう。

簡単なのは、
日付フィールドの入力値の自動化で
  Self + 1
  既存値置き換え
として置いて、
最後のレコードの複製を繰り返せばいいですね。

これはスクリプトにしないでも、
キーボードショートカット
  Ctrl+D  (Win)
  command-D  (Mac)
を押しっぱなしで出来ます。
30レコード分で数秒で出来ちゃいますよ。

オフライン

#4 2024-02-08 12:38:11

mic
メンバー

Re: 一か月分まとめて作成

こんなスクリプトを使ったりしてます。

■テーブル
・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~末日分のレコードを重複しないよう作成します。

チポさんの指摘から、分かり難い部分に追記しました。

編集者 mic (2024-02-08 16:23:20)

オフライン

#5 2024-02-08 13:28:10

チポ
メンバー

Re: 一か月分まとめて作成

micさん
> 変数を設定 [$date; 値:Get(スクリプト引数)]
これだけでは意味不明でしょう。

今回のためには、二つのテーブルは不要では。


> 〇月を入力し作成を押すとその月の日付が記入されたレコード
翌月以降の指定としたら、
例えば、
12月時点で1月の指定だと、年を考えなければなりませんよね。

オフライン

#6 2024-02-08 16:14:42

紗季
ゲストユーザー

Re: 一か月分まとめて作成

皆様ありがとうございます。
その日にレコードを作成するというのも考えたのですが、稀に変則があり訂正が必要なことがあるため一か月分まとめて作成したほうが都合が良いためです。
作成は月末に翌月分を作成します。

#7 2024-02-09 12:20:15

Shin
メンバー

Re: 一か月分まとめて作成

ファイルを開くたびに、明日までを作って行く、というのが簡単かも。日付にチポさんの設定をしておいて、
全レコードを対象
レコードをソート[条件を保存]    //日付で昇順
レコードを移動[最後の]
Loop
    レコード複製
    exit loop if ( 日付 > Get ( 日付 ) )
end Loop
のようなスクリプトでもいいでしょう。

オフライン

クィック投稿

メッセージを書いて送信してください。
登録の確認

実在の人物による登録であることを確認します。

Board footer