みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FMP14 MacOS10.10
レコード内のフィールド(40くらい)で変更があった場合にフラグを立てたいですが良い方法が分かりません。
ファイルを終了するときに 変更のあった(フラグの立っている)レコードをエクスポートしたいためですが、
同じ事をしたいテーブルがいくつかあり、それぞれのテーブルにあるフィールド数も様々ですが
GetFieldNameでレコード上のフィールド一覧をとって、
Get ( 変更されたフィールド )を使用し 一致する場合はフラグを立てる・・・などすればいいのかなと思いましたが
ここから先が出来ません。
今のところ変更箇所、変更内容などの履歴は要りません。
よろしくお願いします。
Offline
修正タイムスタンプフィールド(A)と、エクスポートタイムスタンプフィールド(B)を用意します。
修正タイムスタンプは修正されると、押されるタイムスタンプです。
エクスポートした際に、そのレコードにエクスポートタイムスタンプを記録します。
このAとBを比較して、一致して入れば、変更されていないということですし、一致していなければ、変更されたということです。
ファイルを共有しているかいないかで大きく変わります。
共有していないのでしたら、ユーザーのログインタイムスタンプを保存しておきます。
テーブルに、変更タイムスタンプを保存しておき、ログインタイムスタンプより大きいレコードを検索すればいいでしょう。
共有している場合には、ファイルの終了時に、というのが、他のユーザーによる変更がありえるので曖昧になります。変更を行うたびにトリガーで上書きエクスポートしていく、という方法が簡単でしょう。
Last edited by Shin (2018-08-21 15:50:26)
Offline
ちゅーる様 Shin様
返信が遅くなってしまい申し訳ありませんでした。
ちゅーる様 Shin様
「修正タイムスタンプは修正されると、押されるタイムスタンプ」 「変更タイムスタンプを保存しておき」 というのは
フィールドの 入力値の自動化 の修正情報(タイムスタンプ)のことでしょうか?
これも試していたのですが、 フィールドに入り、入力ミスがあり最初の値に戻した場合でも タイムスタンプが押されてしまうので
正確な変更フラグが立てられずと言う問題がありました。
例えば masaというフィールド内容にカーソルを入れ masamasaに変更し 間違いに気付き masaに戻した場合 など
ファイル共有はしておりません。
自分の 「GetFieldNameでレコード上のフィールド一覧をとって、Get ( 変更されたフィールド )を使用し」よりも前の
フィールドの「変更」という定義(?)がうまく伝えられなかったというか 伝えるべきポイントがずれていたため 申し訳ありませんでした。
お二方には タイムスタンプを使った案をご教示頂きましたが、使うことが出来ませんでした。
いろいろ試行錯誤し トリガーを使い
OnObjectEnter でフィールド内容を変数に入れ
OnObjectExit した時のフィールド内容を 変数と比べて
違いがあれば 変更フラグフィールドにフラグを立てる
という物を それぞれのフィールドに埋め込んで力業にはなりましたが解決する事が出来ました。
どうもありがとうございました
Offline
Pages: 1
[ Generated in 0.011 seconds, 7 queries executed - Memory usage: 508.85 KiB (Peak: 515.74 KiB) ]