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

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

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

You are not logged in.

Announcement

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


#1 2021-10-12 18:10:48

すためん
Guest

ループ処理ですべてのグローバルフィールドをクリアにする

現在、200以上あるフィールド(全てグローバル)を全てクリアにするスクリプトを作っています

対象のフィールドに対し、全てフィールド設定すればよいのですが、
200以上設定するのが手間なので、何とかループでフィールドを渡っていけないかと考えています。

処理としては、

フィールド1に空白を設定

フィールド2に空白を設定

フィールド3に空白を設定

フィールド4に空白を設定



フィールド200に空白を設定

のような形になります。
こういう処理はループ等で対応可能でしょうか?

#2 2021-10-12 19:56:26

himadanee
Guest

Re: ループ処理ですべてのグローバルフィールドをクリアにする

そういうフィールド名なら「フィールドを名前で設定」でいいのでは。

#3 2021-10-12 21:17:18

mic
Member

Re: ループ処理ですべてのグローバルフィールドをクリアにする

一例として。

クリアしたいフィールドを配置したレイアウト(例:レイアウト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

#4 2021-10-12 22:07:40

qb_dp
Member

Re: ループ処理ですべてのグローバルフィールドをクリアにする

以下の方法でも可能です。

ファイル内のグローバルフィールド(繰り返し含む)の値をすべて初期化。
https://fm-aid.com/custom-function/19-g … -fieldreps

Offline

#5 2021-10-13 08:58:54

Shin
Member

Re: ループ処理ですべてのグローバルフィールドをクリアにする

1レイアウトへ集めてもいいのでしたら、タブ順をつけておいて、次のフィールドへ移動、フィールドクリア を繰り返すだけでいいでしょうね。
または、同じフィールドを持たせた別のテーブル(すべてnullへ設定)からインポート、でもできるかも。

Offline

#6 2021-10-13 09:37:26

himadanee
Guest

Re: ループ処理ですべてのグローバルフィールドをクリアにする

なるほど、フィールド名はSQLで取得できますね。

すると、SQL実行できるプラグインを使えば、関数だけでできるのかも?

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.011 seconds, 9 queries executed - Memory usage: 510.3 KiB (Peak: 515.21 KiB) ]