みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
はじめて質問させていただきます。
環境は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関数の使い方がよくわからず、皆様の知恵をお借りできたらと思い質問させていただきました。
よろしくお願いいたします。
1個の計算フィールドと、2ステップだけで、loop は使わずに実現できます。
計算フィールド(繰り返し) に、Case ( Get ( 計算式繰り返し位置番号 ) < チェック[1] ; chekku[1] ) ) と設定しておきます。
今のテーブルと同じ構成の別のテーブルを用意し、そのテーブルから元テーブルをインポートします。繰り返しは別レコードにしておきます。そのインポートしたレコードを、元のテーブルへインポートします。
Offline
スクリプトの考え方を、、
ソート
最初のレコードへ
Loop
If [ ポイント = 0 ]
フィールド設定 [ チェック ; "不要"]
Else
変数 = ポイント
Loop
変数 = 変数 - 1
Exit Loop If [ 変数 = 0 ]
レコード複製
End Loop
End If
レコード移動[次の; 最後まで来たら終了]
End Loop
こんな感じでしょう。
最初のソートは、
どのフィールでも構いませんが、
レコード複製が、現在のレコードの直下に作られるために必須です。
Offline
チポ様
教えていただいたスクリプトを作成しましたら、理想的な動きになりました。
ありがとうございました。
ちょっと面白い動きを
対象外のみを表示
対象外のみを表示
レコード/検索条件/ページへ移動 [ 最初の ]
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
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 554.45 KiB (Peak: 581.59 KiB) ]