みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
諸先輩方に質問です。
WIN10でPro17Advancedを使用しております。
カレンダーというレイアウトに、
予定101-予定130、予定201-予定230、予定301-予定330、予定401-予定430という
30×4個のテキストフィールドがあります。
スクリプトを作成して、同一レコード内の上記フィールドの内容を一括削除したいのですが
作り方がわかりません。
フィールド名に変数を設定すればいいのかなと思いますが
具体的にどのようなスクリプトを記述すればよいのかわかりません。
どなたかご教授下さい。
Offline
すみません。
カレンダーというテーブルでした。
Offline
タブ順を設定しておいて、
ループで
レコードへ移動 [ 次の ]
消去
を繰り返せばいいです。
しかし、
その構造はには問題が有りますし、
フィールドの消去を運用上で繰り返すのも問題でしょう。
Offline
同一レコード内の120個のテキストフィールドを一括に消去(空)にしたいってことですよね?
Offline
そうです。一括消去です。
Offline
ああ、書き間違えました ;;;;
誤 レコードへ移動
正 フィールドへ移動[次の]
に変更してください -_-
Offline
ループで処理を繰り返すか、120個分のフィールド設定を作って空にするかですね。
チポさんフィールドへ移動に[次の]ってありましたっけ?
「次のフィールドに移動」ですね
Last edited by ウィン (2020-04-15 13:42:09)
Offline
ごめんなさい--------
次のフィールドへ移動
これです、
またまた訂正をお願いいたします。
ダメな方法なので気が入っていませんです(言い訳 ;;)
Offline
別テーブルに作った予定フィールドを、リレーションで表示させるのが普通の作り方ですよ。
フィールドをたくさん作る、というのは、スプレッドシートの考え方で、データベースの考え方ではないです。
また、入力したデータは、原則的に消去しない、というのがデータベースです。これもおかしい。
いっそ、Excel で運用されたほうが簡単では。範囲選んでクリア、で一発です。
Offline
消去する方法・手法は人それぞれです。ファイルメーカーは工夫ひとつでアプローチはいくつも存在します。
根気よく120個のフィールド設定を作る人もいるし、ループ処理する人もいます。変数を当てて消去する意味は不明ですが、中にはいるかもしれませんね。
Shinさん…そもそも論になっちゃってるw
それでもファイルメーカーが気に入っているんですものね。これを機に新たな構造や手法でリノベーションしてみるのも一手かもしれませんね。
Offline
皆様、ありがとうございます。
勉強になります。
チポさんの方法で作ってみました。
予定101-予定130の30個のフィールドのタブ順は連続しており、
他の予定120-、130-、140-、それぞれも連続しています。
しかしこれら4つのフィールドグループ間にはタブ順の連続性がありません。
具体的には、
予定101-130のタブ順は1-30、
予定201-230のタブ順は41-70、
予定301-330のタブ順は76-105、
予定401-430のタブ順は201-230、といった具合です。
これらのタブ順を全て1-120のように連続させるのはつらいので、
下記スクリプトを作ってみました。
四つのスクリプトをつなげただけです。
消去[選択、カレンダー::予定101]
変数を設定[$count;値:1]
Loop
ExitLoopIf[$count>29]
次のフィールドへ移動
消去[選択]
変数を設定[$count;値:$count+1]
EndLoop
消去[選択、カレンダー::予定201]
変数を設定[$count;値:1]
Loop
ExitLoopIf[$count>29]
次のフィールドへ移動
消去[選択]
変数を設定[$count;値:$count+1]
EndLoop
消去[選択、カレンダー::予定301]
変数を設定[$count;値:1]
Loop
ExitLoopIf[$count>29]
次のフィールドへ移動
消去[選択]
変数を設定[$count;値:$count+1]
EndLoop
消去[選択、カレンダー::予定401]
変数を設定[$count;値:1]
Loop
ExitLoopIf[$count>29]
次のフィールドへ移動
消去[選択]
変数を設定[$count;値:$count+1]
EndLoop
Offline
ご指摘の通りたくさんのフィールドがあり、また業務上、予定フィールドを書き換える必要性もあり、まったく洗練されていません。教えて下さったことを元にこれからも挫けずにtryしてみますので、また分からないことがありましたら教えて下さい。
Offline
Shinさん…そもそも論になっちゃってるw
あえてそうしているのですが、何か。
その構造で今は乗り切っても、将来的に必ず構造的に破綻します。その間に理想的な構造のものと比べて何倍もの労力をかけてそれを全部捨ててゼロから再構築することになりますが、今ゼロから構築し直すのとどちらがいいでしょうね。
Offline
変数を設定[$n ; 30]
loop
フィールドを名前で設定 ["テーブル::予定"& ( 100 + $n ) ; "" )]
フィールドを名前で設定 ["テーブル::予定"& ( 200 + $n ) ; "" )]
フィールドを名前で設定 ["テーブル::予定"& ( 300 + $n ) ; "" )]
フィールドを名前で設定 ["テーブル::予定"& ( 400 + $n ) ; "" )]
exit Loop if ( Let ( $n = $n - 1 ; $n = 0 ) )
が一番短いかと。2重 loop にしてもいいでしょう。
または、予定フィールドの全ての自動入力の計算に、
Case ( flag ; self ; "" )
を設定しておき、上書きを許可します。flag を 0 に変更すると全部消去されます。通常は1にしておきます。
設定が面倒にみえますが、
FileMaker レイアウト・スクリプト・フィールド等、コピーしたクリップボード内のXMLを編集するツール。
に紹介されているツールを使うと、エディターの中で一発設定できます。
Last edited by Shin (2020-04-15 18:46:37)
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 575.21 KiB (Peak: 592.12 KiB) ]