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

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

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

You are not logged in.

Announcement

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


#1 2014-12-11 16:58:23

fire
Guest

繰り返しフィールドの一括クリア

よろしくお願いします。

繰り返しフィールド[100]をすべてクリアしたいのですが、
現在は変数とloopを使って1から順に書き換えています。
何か一括でクリアするような方法はあるのでしょうか。

#2 2014-12-11 18:19:26

旅人
Member

Re: 繰り返しフィールドの一括クリア

いろいろ有ったような気もするけど、対象レコードを1個に絞ったりする
必要もあって、結局はそんな方法に落ち着いたような?

Offline

#3 2014-12-11 18:26:20

honda
Guest

Re: 繰り返しフィールドの一括クリア

・インポートによる方法
対象フィールドと同一構造のフィールドを持った空レコードを、対象フィールドのみ対象にしてインポートする。

・ルックアップによる方法
1.対象フィールドと同一構造のフィールドを持った消去用テーブルを用意し、"1"等の適当な値を入れたキーフィールドも加える
2.対象テーブルにもキーフィールドを追加し、こちらは空にしておく
3.対象フィールドのテーブルと消去用テーブルで、キーフィールドによる=照合のリレーションを張る
4.対象フィールドに空欄でもコピーするルックアップ設定を行い、ルックアップ先を消去用テーブルの消去用フィールドにする
5.消去したいレコードのキーフィールドに、消去用キーフィールドと同じ値を設定すれば、対象フィールドが空になる

結局どちらもスクリプトより面倒です。
速度が問題なら、ループ展開した方が早いケースはあるかも知れません。

#4 2014-12-11 20:12:17

wader
Member

Re: 繰り返しフィールドの一括クリア

ルックアップは、一致し得ないフィールド同士の自己リレーションで、一致する値がない場合空欄を入力
とすれば。
どっちにしても、スクリプトにしないといけないだろうから、ループの方が素直かも。

Last edited by wader (2014-12-11 20:12:52)

Offline

#5 2014-12-12 09:31:41

チポ
Member

Re: 繰り返しフィールドの一括クリア

日常的な運用法で、
  フィールド内容を削除する
また、
  繰り返し100回のフィールド

これらを考え直すべきかもしれませんよ。

Offline

#6 2014-12-12 10:00:29

fire
Guest

Re: 繰り返しフィールドの一括クリア

なるほど勉強になりました。
みなさん、ありがとうございました。

#7 2014-12-12 10:50:33

honda
Guest

Re: 繰り返しフィールドの一括クリア

解決してるけど、補足。

wader
> ルックアップは、一致し得ないフィールド同士の自己リレーションで、一致する値がない場合空欄を入力とすれば。

ほんとだ、これで充分でした。
後はスクリプトで対象レコードしぼって再ルックアップかけるか、
キーフィールドの変更で、繰り返しの一括クリアかかりますね。

-

粗いですがベンチマーク取ったら、ルックアップによるクリアが圧倒的に速い。
もちろん再ルックアップの場合は対象レコードの絞込が入るので、
レコード数や繰り返し長、格納方法等の条件によって大きく変動はするけど。

質問した方の実際は分かりませんが、グリッド等のUI目的で繰り返し多用するのはありというか、
現状のFileMakerでは他にまともな代替手段ないので、高速なクリアの手法が確認できてよかった。

#8 2014-12-12 15:25:35

Layouter
Guest

Re: 繰り返しフィールドの一括クリア

Get(レコードID)の計算値自動入力で自己リレーションすれば、そのフィールドを消(して入れ直)すことで再ルックアップによる消去が完了します。
一致しなければいいのだから、最初は空欄でもいいのか。レコードIDを入れると消去。

#9 2014-12-12 17:20:25

honda
Guest

Re: 繰り返しフィールドの一括クリア

> Get(レコードID)の計算値自動入力で自己リレーションすれば、そのフィールドを消(して入れ直)すことで再ルックアップによる消去が完了します。

同じベンチマークで試したら、再ルックアップスクリプトステップの方がごく僅かに速い。
と思いきや、繰り返し長によってはloopの方が速くなります。
繰り返し数2000では、再ルックアップステップ → キーフィールド再設定による再ルックアップ → loopの順に速い。
これが繰り返し数上限の32000では、loop → 再ルックアップステップ → キーフィールド再設定による再ルックアップの順。
恐らくバッファの取り方なんかが影響してるんでしょうけど、面白い。

なお上記は単一レコードのケースであって、複数レコードの場合は、
再ルックアップステップ → loop → キーフィールド再設定による再ルックアップの順になり、
レコード数に応じて差は大きくなります。

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: 517.44 KiB (Peak: 521.98 KiB) ]