みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
案件あたりの利益管理のアプリで、最終の原価が確定したらそれ以降営業担当者は数値を変更することができなくしたいです。
その時に、フラグをたてるための date_genkakakutei という日付フィールドに、Onobjectenter のスクリプトトリガで、
If(Get(アカウントアクセス権セット名) = "eigyo" and IsEmpty ( constraction::date_genkakakutei ) = 0)
カスタムダイアログ表示("あなたの権限ではこのフィールドは変更できません。")
フィールドへ移動[]
全スクリプト終了
else
フィールドへ移動[date_genkakakutei ]
end if
としたのですが、設定してあったドロップダウンカレンダーが開かない状態で停止します。
アカウントアクセス権を確認して、問題なければ入力ができるようにする場合、ドロップダウンカレンダーを表示した状態になる方法をご教授ください。
FMP19 WINMAC利用です。よろしくお願いします。
Offline
eigyo のアクセス権セットで、レコードの編集許可に、IsEmpty ( constraction::date_genkakakutei ) を入れておくだけで十分なのでは。
ただ、フィールドに入れてしまう(編集すると、アクセス権が... で拒否されるが)ので、それも制限したいのならば、
If ( Get ( レコードアクセス ) = 1 )
フィールドへ移動[]
)
をOnObjectEnterで起動させればいいでしょう。
Last edited by Shin (2022-03-21 11:02:12)
Offline
その時に、フラグをたてるための date_genkakakutei という日付フィールドに、Onobjectenter のスクリプトトリガで、
If(Get(アカウントアクセス権セット名) = "eigyo" and IsEmpty ( constraction::date_genkakakutei ) = 0)
カスタムダイアログ表示("あなたの権限ではこのフィールドは変更できません。")
フィールドへ移動[]
全スクリプト終了
else
フィールドへ移動[date_genkakakutei ]
end ifとしたのですが、設定してあったドロップダウンカレンダーが開かない状態で停止します。
elseの記述が悪さをしているように思われます。
else
フィールドへ移動[date_genkakakutei ]
ここに分岐した場合、onObjectEnterでスクリプトが再発火してしまうので、無限ループになってしまうのだと思います。
else以下の記述を削除すれば特別な動作はしなくなりますので、目的の動作が達成出来ると思います。
Last edited by ブランコ (2022-03-22 11:27:58)
Offline
実は私もそんなようなことではないかと思って、(Shinさんの回答が出る前に)条件をフィールドが空かどうかだけに単純化してテストしてみたのですが、デバッガで見る限りフィールドへ移動で再度トリガされてる様子はありませんでした。
スクリプト実行は既にフィールドに入った後なので、再トリガはされないのでは。
しかし、この条件ではカレンダーが消える現象も出ません。
デバッガで続行しようとするとドロップダウンカレンダーを表示しているウィンドウがアクティブでなくなるせいでカレンダーが消えてしまって、現象が発生しそうな原因はつかめませんでした。
フィールドへ入ったときに実行されるスクリプトなので、
フィールドへ移動[date_genkakakutei ]
が不要ということは確かでしょう。これの前にこのフィールドから出る動作(レコード確定など)がスクリプトにあると、再トリガの問題が起こりそうです。
ありがとうございます。また質問してそのまま放置して申し訳ございません。
私の知識を超えるものがありますので、ひとつづつ試してみたいと思います。が、スクリプトトリガがループするのが原因なのがわかった気がします。
スクリプトでフィールドに移動したらスクリプトトリガは発火しないと思っていました。
Offline
Pages: 1
[ Generated in 0.009 seconds, 9 queries executed - Memory usage: 513.1 KiB (Peak: 517.64 KiB) ]