みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
FM12ad(該当ファイルは共有せず、単独で使用しています)
Win8.1
他のスプリクトに変更することで今のところは問題なく動作しているのですが、原因が気になるので質問させていただきます。
伝票作成のレイアウトへ移動して新規レコードを作成し、そのレコード1件のみを表示する
というスプリクトをボタンに設定していたのですが
時々、新規レコードは作成されるものの表示されるのがそのテーブルの1件目のレコードになってしまうことがありました。
(仕入伝票と売上伝票で同様の処理をしていますが、どちらでも時々起こっていました)
この現象は毎回起こるわけではなく、連続して起こることもあれば、しばらく何も起こらないこともあり
どのような条件で起こるのかがはっきりしないため、意図的に再現させることは今のところできません。
1件目のレコードが表示された場合でも新規レコードは作成されているので
新規レコードを作成した後にアクティブレコードが何らかの原因で1件目のレコードに変わってしまったのではないかと思うのですが
複数ウィンドウを開いているわけではなく、他に新規レコードがアクティブにならないケースに思い当たらないため私には原因がわかりません……。
どなたか原因に思い当たる方がいらっしゃれば教えて下さい。
よろしくお願い致します。
【ボタンに設定していたスプリクト】
カスタムダイアログを表示["確認";"仕入伝票を新規作成しますか?"](ボタン2にOKを設定)
If[Get(最終メッセージ選択)=2]
レイアウト切り替え[「仕入伝票」(仕入)]
新規レコード/検索条件
スプリクト実行[「アクティブレコードのみ表示」]
End If
【アクティブレコードのみ表示のスプリクト】
全レコードを表示
レコードを対象外に
対象外のみを表示
ちなみに該当テーブルのレコードを全て対象外にした後に新規レコードを作成するスプリクトに変更してからは今のところ問題なく動作しています。
Offline
試しに、サブスクリプトにしないで
新規レコード/検索条件
全レコードを表示
レコードを対象外に
対象外のみを表示
と続けてみるとか?
Offline
スクリプトをデバッガで追ってみました?
新規レコードから次のステップを実行する前にトリガが割り込んだりしていませんか?
Offline
旅人様
コメントありがとうございます。
元のファイルをコピーして、サブスプリクトのままのものと、サブスプリクトにしないものとで同じ内容を入力して検証してみますね。
何も起こらない場合もあるので確認に時間がかかってしまうと思いますが……。
Moz様
コメントありがとうございます。
トリガやデバッガの件を記載し忘れていました。申し訳ありません。
何度かデバッガで確認してみたのですが、その時は特に問題なく進んだため、原因がわからないままなのです。
1件目のレコードが表示された際に、デバッガでもう一度やってみると今度はちゃんと動作する、といった具合で……。
トリガは伝票テーブルのレイアウトの中の明細テーブルのポータル内にしか設定しておらず、レコードの作成許可設定にはしていないため
伝票テーブルのレコードを新規作成した時点では恐らくトリガは動作しないと思います。
Offline
新規レコードを作成、の後に、0.5秒ほど停止させておくと、おそらく出なくなります。
Offline
レコードのソートで、ソートされた順位でレコードを保持のチェックが入っているに一票
トリガがあるかどうかは自分で確認できますし
デバッガあるなら尚更分かることなので見てみた方がいいですよ。
既にご自身で対策を取られていますし(スクリプト開始時に新規レコードのみの状態にする)
それで他に支障がないならベストプラクティスだと思いますよ。
原因追及は後のために必要ですが、
あえて元のスクリプトで動くようにする必要はないでしょう。
私もとおりすがりさんと同じでソートに一票だったのですが、
手元で作ってみたサンプルでは再現できませんでした(汗)
Shinさんの仮説通りだと新規レコード作成の完了を待たずに次のステップへ進むということですかね?
Last edited by Moz (2014-12-15 19:53:34)
Offline
私も検証してみたのですが、再現できなかった。
昔、コンバートしたファイルをFMS11で運用を始めた時に、この現象と似た事が多発した事が合って、運用を止める事が出来なかったので、仕方なくポーズでごまかしてました。その後、リレーションやフィールドの設定を調整して、ポーズは不要になったのですが、同じことが起こっているのではないか、という推定です。
Offline
Shin様
コメントありがとうございます。
FMS11で似たような現象が起きていたということは、0.5秒ほど停止することで改善される可能性が高そうですね。
デバッガで見た際にはひとつひとつのステップを見ている間にそれくらいの時間は経過しますから、何も起こらなかったのかもしれませんし。
リレーションやフィールドの設定を調整してポーズ不要になったということは、その辺りに何か原因があるのかもしれませんね。
とおりすがり様
コメントありがとうございます。
ソートは何も触っていないので、ソートされた順位でレコードを保持のチェックは入っていますが未ソート状態です。
他のファイルですが、試しにソートされた順位でレコードを保持のチェックが入った状態でソートして新規レコードを作成してみたところ
新規作成したレコードがアクティブになったので、ソートはあまり関係がなさそうな気がします。
Moz様
コメントありがとうございます。
仰るように、後のために原因追究したいだけですので、元のスプリクトで動かすことが目的ではありません。
紛らわしい書き方をしてしまったようですね。申し訳ありません。
ひとまず、サブスプリクトを使わない方法と、少し停止する方法とで検証してみます。
問題の現象を意図的に起こすことができないので、検証に少し時間がかかるかと思いますが……。
何かわかれば報告させていただきます。
皆様ありがとうございました。
Offline
[ Generated in 0.022 seconds, 7 queries executed - Memory usage: 543.89 KiB (Peak: 564.43 KiB) ]