みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
win10
FM14PRO使用中です。初心者です。
スクリプトを作成したいです。
使用しているフィールドは50
テキストフィールド1
テキストフィールド2
テキストフィールド3
~
テキストフィールド50
と50フィールドあります。レコード数も無数にあります
スクリプトボタンを作成し、この「50フィールドすべての入力値をクリアーしたい」のですが
フィールド設定を50回繰り返す構文しかないのでしょうか?すごく長文のスクリプトになっていしまいます。
フィールド設定ですとターゲットフィールドが一つしか選択できないようですが、もっと簡単に構文を各方法はないでしょうか?
ご教授よろしくお願いします。
Offline
その50フィールドが全フィールドでしたら、レコード削除、新規レコードの方が早いでしょう。
そうでなく、他にもフィールドがあり、その作業が頻回にあるのでしたら、そのフィールドだけを別テーブルにしておけば、同じ方法で消えます。
また、そのフィールドが1レイアウトにあり、タブで全てのフィールドへ移動できるのでしたら、
Loop
フィールド消去
フィールドへ移動[次の]
exit Loop If ( )
end Loop
でいいでしょう。
ただ、大量のフィールドを消去する様な動きを作る必要があるソリューションは、何か設計を誤っていると思います。50か月分の月謝データを消すのですか?
データベースというのは、情報を溜め込むものであって、消す為にためるものではありません。また、1テーブルで50フィールドもの入力がある、という点で、改善したほうがいいのではないかと思いますが。
Last edited by Shin (2021-07-11 16:21:43)
Offline
Shin様
ありがとうございます。
その50フィールドが全フィールドでしたら、レコード削除、新規レコードの方が早いでしょう。
→全フィールドではありません。一部です。たくさんフィールドがありダメですね。今回はご教授の通りLOOP処理で対応します。
大量のフィールドを消去する様な動きを作る必要があるソリューションは、何か設計を誤っていると思います。
→なるほど、そもそも考え方が違っていましたね。なんとなくそんな気がしていましたが素人考えで作成を続けてきました。このレイアウトは表みたいになっていて全部で160フィールドもあります苦笑
クロス集計・・・そのあたりということなんでしょうか。そのあたりはまだ未開発でして・・・勉強します。
Offline
ODBC共有に設定するか、SQLの使えるプラグインを使えば、SQLのUPDATEコマンド1行で済みますが、50フィールドだとコマンド自体が長大になりますね...
消去したいフィールドだけルックアップを設定しておくとか...(一致する値がない場合を使う)
その50フィールドを、別テーブルに移す、という方法もあるかと。データの移行は簡単です。レイアウトも、入力するレイアウトは書き換えが必要ですが、レイアウト上でのオブジェクトのカット&ペーストで、途中のクリップボードをツールで編集すると、ごく簡単です。
Offline
フィールド名のハードコードは望ましくありませんが、「フィールド1〜n」のように規則性があるなら
[フィールドを名前で設定]スクリプトステップと Loop 処理で短くすることはできます。
フィールドを名前で設定
nを変数にしてフィールド名を計算式で作成すればOKです。
Offline
フィールド名を改行区切りで並べて、どこか(グローバルフィールドかな)に保存しておいて、1行ごとに取り出して、フィールドを名前で設定 を使ってもいいでしょうね。
Last edited by Shin (2021-07-12 13:55:31)
Offline
削除したいフィールドだけを置いたレイアウトを別に用意して
FieldNames()を使えば改行区切りでリスト化できます。
Pages: 1
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 517.16 KiB (Peak: 522.07 KiB) ]