初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2013-10-16 11:21:17

かなり
Guest

修正記録を取りたい

よろしくお願いします。

FM12 ADV使用

レコード内にあるフィールドのいずれか修正をした場合、修正記録の履歴を取りたいのですが、
同テーブルにログ記録用の繰り返しフィールドを作成し、下記の計算式を設定したのですが、
繰り返しフィールドの1行目にそのまま上書きされてしまい、記録が取れません。

------------------------------------------------------------
Let (
[
trigger =
       フィールドA & フィールドB & フィールドC ;

log =
       Get ( ホストのタイムスタンプ ) & " | " &
       Get ( ユーザ名 ) & " | " &
       Get ( アクティブフィールド名 ) & " | "
] ;

log
)
------------------------------------------------------------

繰り返しフィールドに追加される方法を教えていただけますでしょうか。

よろしくお願いいたします。

#2 2013-10-16 11:46:44

barikan
Guest

Re: 修正記録を取りたい

繰り返しフィールドでは無理だと思うので改行区切りで追加します。

------------------------------------------------------------
Let (
[
trigger =
       フィールドA & フィールドB & フィールドC ;
log =
       Get ( ホストのタイムスタンプ ) & " | " &
       Get ( ユーザ名 ) & " | " &
       Get ( アクティブフィールド名 ) & " | "
] ;
List ( Self ; log )
)
------------------------------------------------------------

しかし1行1レコードで別テーブルに記録するのが正しいやり方でしょう。

#3 2013-10-16 14:54:43

かなり
Guest

Re: 修正記録を取りたい

barikan wrote:

繰り返しフィールドでは無理だと思うので改行区切りで追加します。

------------------------------------------------------------
Let (
[
trigger =
       フィールドA & フィールドB & フィールドC ;
log =
       Get ( ホストのタイムスタンプ ) & " | " &
       Get ( ユーザ名 ) & " | " &
       Get ( アクティブフィールド名 ) & " | "
] ;
List ( Self ; log )
)
------------------------------------------------------------

しかし1行1レコードで別テーブルに記録するのが正しいやり方でしょう。

ありがとうございます。

別テーブルで記録しポータル表示をする方法も考えたのですが、
リレーションをする際、キーとなるフィールドが必要だったため悩みました。

新規にログテーブルを作成した場合、
キーフィールドには値が入っていないため、
関連レコードとしてどのように表示させればよいでしょうか。。

基本的な質問をしてしまいすみません。

#4 2013-10-16 15:02:28

Shin
Member

Re: 修正記録を取りたい

別テーブルで記録しポータル表示をする方法も考えたのですが、
リレーションをする際、キーとなるフィールドが必要だったため悩みました。

レコードに、シリアル番号を自動的につけてしまえばいいでしょう。どこかに、フィールド識別子やテーブル識別子をつけておくと、1ファイルごとに1テーブルで済みます。
そこへの書き込みは、トリガーを使うと確実でしょう。

Offline

#5 2013-10-16 15:18:20

かなり
Guest

Re: 修正記録を取りたい

Shin wrote:

別テーブルで記録しポータル表示をする方法も考えたのですが、
リレーションをする際、キーとなるフィールドが必要だったため悩みました。

レコードに、シリアル番号を自動的につけてしまえばいいでしょう。どこかに、フィールド識別子やテーブル識別子をつけておくと、1ファイルごとに1テーブルで済みます。
そこへの書き込みは、トリガーを使うと確実でしょう。

ありがとうございます。

シリアル番号の自動入力の件、アドバイスいただきありがとうございます。
書き込みについてお伺いしたいのですが、
トリガーでの設定というのはどういう設定が適当でしょうか。

たびたび申し訳ありませんが、よろしくお願いいたします。

#6 2013-10-16 18:07:51

Shin
Member

Re: 修正記録を取りたい

OnObjectEnter で、フィールド内容かフィールド変更回数などを取得しておきます。OnObjectExitで、その時点での内容などを先ほどの値と比較して、変更されていればそのテーブルへ保存、という手順になると思います。

Offline

#7 2013-10-23 14:54:17

かなり
Guest

Re: 修正記録を取りたい

たびたび申し訳ありません。

Let (
[
trigger =
       フィールドA & フィールドB & フィールドC ;
log =
       Get ( ホストのタイムスタンプ ) & " | " &
       Get ( ユーザ名 ) & " | " &
       Get ( アクティブフィールド名 ) & " | "
] ;
List ( Self ; log )
)

上記の設定についてお伺いしたいのですが、
計算式にGET(アクティブフィールド内容)を追加したところ、
値一覧(チェックボックス)を変更すると、値がすべて改行されて1回の修正記録が数行に別れてしまいます。
値を改行せずに、改行を半角スペースなどに変更することはできないでしょうか。

例)値一覧を変更した場合に表示される内容

タイムスタンプ | ユーザ名 | アクティブフイールド名 | 値A
値B
値C
値D

↓↓↓こちらを下記のように変更できないでしょうか。↓↓↓

タイムスタンプ | ユーザ名 | アクティブフイールド名 | 値A 値B 値C 値D

どうぞよろしくお願いいたします。

#8 2013-10-23 15:49:48

himaganee
Guest

Re: 修正記録を取りたい

値一覧でなく単にテキストフィールドに改行が入っててもおなじことでしょう。
Substituteで変えればいいのでは。

#9 2013-12-09 13:56:31

Layouter
Guest

Re: 修正記録を取りたい

FM13で
Get ( 変更されたフィールド )
というのができたので、レコードのトリガでまとめてできるようになった。

#10 2013-12-09 20:41:03

通りすがり
Guest

Re: 修正記録を取りたい

Layouter wrote:

Get ( 変更されたフィールド )

でもこれcommit時しか値取れないからドラッグアンドドロップで値入れられると無力だよ。

#11 2013-12-10 09:49:19

Layouter
Guest

Re: 修正記録を取りたい

>commit時しか値取れない
ほんとだ。なんでかな。
でもドラッグアンドドロップでもcommitトリガが発生するから、無力ということもない。

#12 2013-12-10 13:07:20

Shin
Member

Re: 修正記録を取りたい

お高いですが
http://syncdek.com/fmdataguard/
というのも有ります。

Offline

#13 2013-12-10 14:33:12

通りすがり
Guest

Re: 修正記録を取りたい

https://github.com/genecom/fmprosync
こんなんもありますよ。
Genecomの社本さんが作ってるコピぺで導入できる同期やログが取れるやつ。

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.021 seconds, 7 queries executed - Memory usage: 530.52 KiB (Peak: 551.43 KiB) ]