みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
現在、200以上あるフィールド(全てグローバル)を全てクリアにするスクリプトを作っています
対象のフィールドに対し、全てフィールド設定すればよいのですが、
200以上設定するのが手間なので、何とかループでフィールドを渡っていけないかと考えています。
処理としては、
フィールド1に空白を設定
↓
フィールド2に空白を設定
↓
フィールド3に空白を設定
↓
フィールド4に空白を設定
↓
↓
↓
フィールド200に空白を設定
のような形になります。
こういう処理はループ等で対応可能でしょうか?
そういうフィールド名なら「フィールドを名前で設定」でいいのでは。
一例として。
クリアしたいフィールドを配置したレイアウト(例:レイアウトX)を用意し以下のスクリプトを実行すると、配置されたフィールドに全て空白が設定されます。
配置してあれば、他のテーブルのフィールドもクリアされます。
エラー処理[オン]
レイアウト切り替え[「レイアウトX」(table);アニメーション:なし]
If[Get(最終エラー)]
現在のスクリプト終了[テキスト結果:]
End If
変数を設定[$table; 値:Get(レイアウトテーブル名)]
変数を設定[$list; 値:FieldNames( Get(ファイル名); Get(レイアウト名))]
変数を設定[$max; 値:ValueCount( $list)]
変数を設定[$i; 値:0]
Loop
Exit Loop If[Let( $i=$i+1; $max<$f)]
変数を設定[$field; 値:GetValue( $list; $i)]
変数を設定[$full; 値: If( Position( $field; "::"; 1; 1); ""; $table & "::") & $field]
変数を設定[$tmp; 値:FieldRepetitions( Get(ファイル名); Get(レイアウト名); $full)]
変数を設定[$rep; 値:GetAsNumber( GetValue( Substitute( $tmp; " "; ¶);1))]
変数を設定[$r; 値:1]
Loop
フィールドを名前で設定[$full & "[" & $r & "]"; ""]
Exit Loop If[Let( $r=$r+1; $rep < $r)]
End Loop
End Loop
レイアウト切り替え[元のレイアウト;アニメーション:なし]
フィールドを設置する手間はありますが、スクリプトで設定するよりは多少マシかなと。
Last edited by mic (2021-10-12 21:18:42)
Offline
以下の方法でも可能です。
ファイル内のグローバルフィールド(繰り返し含む)の値をすべて初期化。
https://fm-aid.com/custom-function/19-g … -fieldreps
Offline
1レイアウトへ集めてもいいのでしたら、タブ順をつけておいて、次のフィールドへ移動、フィールドクリア を繰り返すだけでいいでしょうね。
または、同じフィールドを持たせた別のテーブル(すべてnullへ設定)からインポート、でもできるかも。
Offline
なるほど、フィールド名はSQLで取得できますね。
すると、SQL実行できるプラグインを使えば、関数だけでできるのかも?
Pages: 1
[ Generated in 0.011 seconds, 9 queries executed - Memory usage: 510.3 KiB (Peak: 515.21 KiB) ]