みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
はじめまして。
FM18でイベントの管理を行っています
イベント開催中に期間が延長する事もあり現在は直接入力していますがスクリプトでコピペし簡略化を図ろうとしましたがロジックが崩壊しましたのでご相談させて下さい。
タスク管理テーブル
①自:期間
②至:期間
契約テーブル
③自:当初期間
④至:当初期間
変更契約テーブル
⑤至:変更期間
※全て日付フィールドでドロップカレンダーです。
※番号は説明の便宜上表示しています。
入力手順は①→⑤の順です
試みたスクリプトは
If [Get(スクリプト引数) = "当初期間"]
変数を設定[$kikan ; 値:①]
変数を設定[$kikan2 ; 値:②]
フィールド設定[③ ; kikan]
フィールド設定[④ ; kikan2]
Else If [Get(スクリプト引数) = "変更期間"]
変数を設定[$kikan ; 値:⑤]
フィールド設定[② ; kikan]
End If
です。
日付フィールド①と②にOnObjectModifyで引数は"当初期間"、⑤に同じトリガで"変更期間"としました
この場合、期間延長があれば(⑤に入力すれば)②に値が反映され、④にも反映されてしまいますよね??
どうすれば良いでしょうか?
アドバイスをお願いします
ロジックは崩壊していないと思いますよ。
⑤を手動で更新→②をスクリプトで更新→④をスクリプトで更新という連鎖を心配されているのだと思いますが、
②の更新スクリプトを実行しても、赤字の④の更新スクリプトは実行されません。
なぜなら、ヘルプにあるように
[フィールド設定]、[フィールドを名前で設定]、および [Web ビューアの設定] スクリプトステップなど、
フィールドを直接変更できるスクリプトステップでは、OnObjectModify スクリプトトリガは実行されません。
つまり、⑤を 手動で更新したとき、⑤のOnObjectModifyイベントによってスクリプトが実行され②に値が反映されますが、
②のOnObjectModifyイベントは発生しない→スクリプトは実行されないので④に値が反映されることはありません。
Last edited by koeda (2020-01-24 12:14:55)
Offline
お返事ありがとうございます
実際にやってみたら仰る通り④は反映されませんでした!
念のため引数"当初期間"を"自"と"至"で分割し、ドロップカレンダーにしているので誤入力予防に④の値がある時はスクリプトを終了するように致しました。
トリガを実行しないヘルプは知らなかったので勉強になりました!
ようやく安心して床に就けます。
本当にありがとうございました!
Pages: 1
[ Generated in 0.011 seconds, 10 queries executed - Memory usage: 505.96 KiB (Peak: 510.87 KiB) ]