みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になっております。
Mac FM11、FMserver11
6台ほどのMacでファイルメーカーを開いているのですが、フィールドがアクティブになったままの状態で放置されていることがあり、VPNなので外部からメンテナンスをしようとすると「使用中のため変更できません」となることがあります。
特定のフィールドであれば、OnTimerScriptなどでフィールドアウトさせることができたのですが、フィールドが60近くあるファイルの場合、全部にScriptをつけることができません。開かれているファイルが自動で(例えば30秒後に)全てのフィールドからフィールドアウトさせることはできないでしょうか?
何とぞよろしくお願いいたします。
レイアウトモードで、フィールドを複数選択した状態でトリガーの設定を行うと、同時に設定が可能ですよ。
Offline
Shinさん
ありがとうございます。
やはりスクリプトをフィールド1つずつ仕掛けるしかないでしょうか。
コマンド+A ですべてのフィールドを選択してから右クリックでトリガにすれば。
Offline
他の目的でそのトリガを使いたいフィールドがある場合は、ちょっとめんどうかも。まあしょうがないでしょう。
無条件にonTimerでGet(開いているレコード数)を監視するといいかな?
でも閉じたのが検出できないか。
Shift を押しながらフィールドをクリックすれば、解除/選択 できますよ。
レイアウト側のトリガでできないんでしょうか・・。
Offline
閉じたのは、onRecordCommitとRevertで検出できますね。
あとはGet(レコードID)で同じレコードを開き続けてる場合だけ自動解除(レコード復帰)にすればいいかな。
自動解除用のスクリプトを二度と直さないならいいんですけどね。
どれが別のスクリプトを設定してあるのか一目でわからないし、分かったとしても解除漏れしてしまったり...
検証不足ですが、、
スクリプト
OnTimer スクリプトをインストール[]
If [Get( アクティブフィールド名) = $$変数 ]
レコード確定
$$変数 = ""
Else
$$変数 = Get( アクティブフィールド名)
End If
OnTimer スクリプトをインストール[このスクリプト ; 間隔:30]
これをトリガ
OnRecordLoad
で実行。
途中でフィールド移動したときには、その後30秒以上になっちゃいますが、
目的は達成できるかと。。
また、トリガ
OnLayoutExit
で、
OnTimer スクリプト
を止めればいいですね。
Offline
> みなさま
ありがとうございました。
実は恥ずかしながらレイアウトトリガとして仕掛ける「OnRecord」を知らず(ずっとOnObjectだけ使っておりました)、
フィールド数が結構あるので面倒だなあと思っておりました(^^;;)
チポさんの投稿で実行いたします。
またこれは仕様なのと、一部動きに反するところがあるのでしょうがないのでしょうが、「空欄不可」のフィールドがあっても
そのままフィールドアウトが実行されてしまうので、空欄不可のフィールドも空欄になってしまいますね。
ここで「空欄がある」旨のメッセージが出ればいいのでしょうが、そうすると結局フィールドアウトしない状態になってしまいますね(^^;;)
本当にありがとうございました。
レコード確定でなくレコード復帰にすればいいのでは。他のフィールドで未確定だった分も破棄されますが。
Offline
状況が分かりませんが、
新規レコードの場合、
レコード確定で「入力値の制限を無視」
としていなければ、入力値の制限は効きますよ。
Offline
フィールドアウトしないと意味ないので、未確定の入力は全部破棄するしかないのかな。
エラー処理[オン]
レコード確定[ダイアログなし]
If[Get(最終エラー)]
レコード復帰[ダイアログなし]
EndIf
とすれば、少しはまし?
中途半端に確定させるのがいいのかどうか、利用者とよく相談しないと
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 564.47 KiB (Peak: 579.75 KiB) ]