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

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

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

You are not logged in.

Announcement

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


#1 2022-08-18 16:57:57

GENGENGEN
Guest

与えられた数に応じて、複数のレコードを複製したい

はじめて質問させていただきます。

環境はmacOS 12.4、FileMaker Pro 18 Advancedです。

与えられた数に応じて、複数のレコードを複製するスクリプトを作成したいです。

例えば、A,B,C,D,Eという5つのレコードがあり、ポイントという名の計算フィールド、チェックという名のテキストフィールドがあります。
ポイントフィールドには「0〜4」の数字が計算式によって入っており、スクリプトを実行すると、

0なら→チェックフィールドに「不要」と入力
1なら→レコード追加なし
2なら→1レコード複製
3なら→2レコード複製
4なら→3レコード複製
という動作をさせたいです。

例えば、
レコード名/ポイントフィールド
A/4
B/3
C/2
D/1
E/0
であれば、
ABCDEの5レコードをABCDEA'A''A'''B'B''C'の11レコードにしたいです。

変数、Loop関数の使い方がよくわからず、皆様の知恵をお借りできたらと思い質問させていただきました。
よろしくお願いいたします。

#2 2022-08-19 09:01:33

Shin
Member

Re: 与えられた数に応じて、複数のレコードを複製したい

1個の計算フィールドと、2ステップだけで、loop は使わずに実現できます。
計算フィールド(繰り返し) に、Case ( Get ( 計算式繰り返し位置番号 ) < チェック[1] ; chekku[1] ) ) と設定しておきます。
今のテーブルと同じ構成の別のテーブルを用意し、そのテーブルから元テーブルをインポートします。繰り返しは別レコードにしておきます。そのインポートしたレコードを、元のテーブルへインポートします。

Offline

#3 2022-08-19 09:56:37

チポ
Member

Re: 与えられた数に応じて、複数のレコードを複製したい

スクリプトの考え方を、、

ソート
最初のレコードへ
Loop
  If [ ポイント = 0 ]
   フィールド設定 [ チェック ; "不要"]
  Else
   変数 = ポイント
   Loop
    変数 = 変数 - 1
    Exit Loop If [ 変数 = 0 ]
    レコード複製
   End Loop
  End If
  レコード移動[次の; 最後まで来たら終了]
End Loop

こんな感じでしょう。

最初のソートは、
どのフィールでも構いませんが、
レコード複製が、現在のレコードの直下に作られるために必須です。

Offline

#4 2022-08-19 11:28:28

GENGENGEN
Guest

Re: 与えられた数に応じて、複数のレコードを複製したい

チポ様

教えていただいたスクリプトを作成しましたら、理想的な動きになりました。

ありがとうございました。

#5 2022-08-19 14:54:09

Shin
Member

Re: 与えられた数に応じて、複数のレコードを複製したい

ちょっと面白い動きを

対象外のみを表示
対象外のみを表示
レコード/検索条件/ページへ移動 [ 最初の ]
Loop
	新規ウインドウ [ スタイル: ドキュメント ; 使用するレイアウト: <現在のレイアウト> ] 
	全レコードを表示
	レコードを対象外に
	対象外のみを表示
	Loop
		Exit Loop If [ Get ( 対象レコード数 ) ≥ テーブル::n ] 
		レコード/検索条件複製
	End Loop
	ウインドウを閉じる [ 現在のウインドウ ] 
	レコード/検索条件/ページへ移動 [ 次の ; 最後まできたら終了: オン ]
End Loop
全レコードを表示

https://www.dropbox.com/s/s8dn8idak6uel … 2.zip?dl=0

Last edited by Shin (2022-08-19 16:02:01)

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 554.59 KiB (Peak: 581.73 KiB) ]