みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
よろしくお願いします。
FM12 ADV使用
レコード内にあるフィールドのいずれか修正をした場合、修正記録の履歴を取りたいのですが、
同テーブルにログ記録用の繰り返しフィールドを作成し、下記の計算式を設定したのですが、
繰り返しフィールドの1行目にそのまま上書きされてしまい、記録が取れません。
------------------------------------------------------------
Let (
[
trigger =
フィールドA & フィールドB & フィールドC ;
log =
Get ( ホストのタイムスタンプ ) & " | " &
Get ( ユーザ名 ) & " | " &
Get ( アクティブフィールド名 ) & " | "
] ;
log
)
------------------------------------------------------------
繰り返しフィールドに追加される方法を教えていただけますでしょうか。
よろしくお願いいたします。
繰り返しフィールドでは無理だと思うので改行区切りで追加します。
------------------------------------------------------------
Let (
[
trigger =
フィールドA & フィールドB & フィールドC ;
log =
Get ( ホストのタイムスタンプ ) & " | " &
Get ( ユーザ名 ) & " | " &
Get ( アクティブフィールド名 ) & " | "
] ;
List ( Self ; log )
)
------------------------------------------------------------
しかし1行1レコードで別テーブルに記録するのが正しいやり方でしょう。
繰り返しフィールドでは無理だと思うので改行区切りで追加します。
------------------------------------------------------------
Let (
[
trigger =
フィールドA & フィールドB & フィールドC ;
log =
Get ( ホストのタイムスタンプ ) & " | " &
Get ( ユーザ名 ) & " | " &
Get ( アクティブフィールド名 ) & " | "
] ;
List ( Self ; log )
)
------------------------------------------------------------しかし1行1レコードで別テーブルに記録するのが正しいやり方でしょう。
ありがとうございます。
別テーブルで記録しポータル表示をする方法も考えたのですが、
リレーションをする際、キーとなるフィールドが必要だったため悩みました。
新規にログテーブルを作成した場合、
キーフィールドには値が入っていないため、
関連レコードとしてどのように表示させればよいでしょうか。。
基本的な質問をしてしまいすみません。
別テーブルで記録しポータル表示をする方法も考えたのですが、
リレーションをする際、キーとなるフィールドが必要だったため悩みました。
レコードに、シリアル番号を自動的につけてしまえばいいでしょう。どこかに、フィールド識別子やテーブル識別子をつけておくと、1ファイルごとに1テーブルで済みます。
そこへの書き込みは、トリガーを使うと確実でしょう。
Offline
別テーブルで記録しポータル表示をする方法も考えたのですが、
リレーションをする際、キーとなるフィールドが必要だったため悩みました。レコードに、シリアル番号を自動的につけてしまえばいいでしょう。どこかに、フィールド識別子やテーブル識別子をつけておくと、1ファイルごとに1テーブルで済みます。
そこへの書き込みは、トリガーを使うと確実でしょう。
ありがとうございます。
シリアル番号の自動入力の件、アドバイスいただきありがとうございます。
書き込みについてお伺いしたいのですが、
トリガーでの設定というのはどういう設定が適当でしょうか。
たびたび申し訳ありませんが、よろしくお願いいたします。
OnObjectEnter で、フィールド内容かフィールド変更回数などを取得しておきます。OnObjectExitで、その時点での内容などを先ほどの値と比較して、変更されていればそのテーブルへ保存、という手順になると思います。
Offline
たびたび申し訳ありません。
Let (
[
trigger =
フィールドA & フィールドB & フィールドC ;
log =
Get ( ホストのタイムスタンプ ) & " | " &
Get ( ユーザ名 ) & " | " &
Get ( アクティブフィールド名 ) & " | "
] ;
List ( Self ; log )
)
上記の設定についてお伺いしたいのですが、
計算式にGET(アクティブフィールド内容)を追加したところ、
値一覧(チェックボックス)を変更すると、値がすべて改行されて1回の修正記録が数行に別れてしまいます。
値を改行せずに、改行を半角スペースなどに変更することはできないでしょうか。
例)値一覧を変更した場合に表示される内容
タイムスタンプ | ユーザ名 | アクティブフイールド名 | 値A
値B
値C
値D
↓↓↓こちらを下記のように変更できないでしょうか。↓↓↓
タイムスタンプ | ユーザ名 | アクティブフイールド名 | 値A 値B 値C 値D
どうぞよろしくお願いいたします。
値一覧でなく単にテキストフィールドに改行が入っててもおなじことでしょう。
Substituteで変えればいいのでは。
FM13で
Get ( 変更されたフィールド )
というのができたので、レコードのトリガでまとめてできるようになった。
Get ( 変更されたフィールド )
でもこれcommit時しか値取れないからドラッグアンドドロップで値入れられると無力だよ。
>commit時しか値取れない
ほんとだ。なんでかな。
でもドラッグアンドドロップでもcommitトリガが発生するから、無力ということもない。
お高いですが
http://syncdek.com/fmdataguard/
というのも有ります。
Offline
https://github.com/genecom/fmprosync
こんなんもありますよ。
Genecomの社本さんが作ってるコピぺで導入できる同期やログが取れるやつ。
Pages: 1
[ Generated in 0.021 seconds, 7 queries executed - Memory usage: 530.52 KiB (Peak: 551.43 KiB) ]