みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
環境:WIN7 FM14AD
私共の会社はセミナーの運営を行っております。
営業がお客さんと話し合ってセミナーの概要を決めるのですが、昔からそのやり取りを紙で管理しています。
その理由が紙だと、どこが書き換わったのかが一目で分かるからです。
DBのシステムに置き換えるとスマートで効率的になるのですが
どこが変ったかが別の項目に書いておくか、全ての項目をセーブの度に比較して処理する必要があります。
しかし相手が営業ならまだそれなりに対応してくれますが、相手がお客さんだったらそんな事はさせられません。
何か良い方法がありましたらご教授頂けませんでしょうか?
すません。色々変だったので最初の書き込みを消しました。
各フィールドに OnObjectEnter で値を変数に保存しておき
OnObjectSave で比較して変更があったらログテーブルにでも書いておいては如何でしょう?
プライマリキーでリレーションしておけば各レコード毎の変更履歴が追えるでしょう。
単に変更されたフィールドがどれか知りたいだけなら以下の関数があります。
Get ( 変更されたフィールド )
https://www.filemaker.com/help/14/fmp/j … 2.119.html
Offline
変更ごとに1レコードとする別テーブルにすればいいのでは。
直前のレコードをコピーして変更。
変更フィールドは条件付書式で目立つ様に出来ます。
Offline
目的に合うかどうか?ですが、
参考になれば、
フィールド値の変更ログを取るには、
以下で紹介されている方法があります。
[sevensdoor.com] - FileMakerの開発者向けresourceサイト : https://ssl.splash.jp/events_browse.xsl?report=90
引用:
フィールドタイプ:テキスト
計算値自動入力のところの「既存の価がある場合は置き換えない」チェックを外す。
Let (
[
// これらのフィールドの変更により再評価させるためのもの
trigger =
フィールドA & フィールドB & フィールドC ;
// 本来取りたいログ部分
log =
Get ( ホストのタイムスタンプ ) & " | " &
Get ( アカウント名 ) & " | " &
Get ( アクティブフィールド名 ) & " | " &
Get ( アクティブフィールド内容 )
] ;
log &
Case ( not IsEmpty ( Self ) ; ¶ ) &
Self
)
私は、上記を参考させていただき、
・ログの上限を設定可能
・繰り返しフィールド対応
・ログをFileMakerの変数化し、後で、「Evaluate ( "Let ( [" & Get ( スクリプト引数 ) & "] ; a + 1 )" )」で値を取り出しやすく
にして使用しています。
Let (
[
// これらのフィールドの変更により再評価させるためのもの
trigger =
フィールド名1
& フィールド名2
& フィールド名3
;
//}trigger
AF=Get ( アクティブフィールド名 );
// 本来取りたいログ部分
log =
Case ( not IsEmpty ( AF ) ;
Get ( ホストのタイムスタンプ ) & " | " &
Get ( アカウント名 ) & " | " &
"$" & Get ( アクティブフィールド名 ) & Let(K=Get ( アクティブ繰り返し位置番号 );If ( K = 1 ; "" ; "[" & K & "]" )) & "=" &
Quote ( Get ( アクティブフィールド内容 ) )
)
] ;
log &
Case ( not IsEmpty ( log ) and not IsEmpty ( Self ) ; ¶ ) &
Let (
[
$_Log=Substitute ( Self ; ["¶¶";¶] );
$_f = "
Case(ValueCount ($_Log) > 200; /*残す行数*/
Let(
[
$_DelLog=GetValue ( $_Log ; ValueCount ($_Log) );
$_Log=Substitute ( $_Log ; char(13) & $_DelLog ; \"\" )
];
Evaluate($_f)
)
;
$_Log
)
"
];
Evaluate($_f)
)
)
Offline
皆さんありがとうございます。
まだ良く読んでいないのですが何か良い方法があるような気がします。
また明日ご連絡致します。
環境をもっと詳しくお知らせしておかないといけないですね
会社のイントラ内のサーバにFM14SEVERを設置してあります。
そこでシェアーているセミナーの受付に関するファイルがあります。
それとは別に外部のデーターセンターにFM14SEVERを設置してあり、そこには社内のファイルとほぼ同じファイルが動いています。
社内のイントラ側のファイルから外部のファイルが覗けるようにFWの設定をしてあり、受付NOをキーコードにしてリレーションを張ってあります。
営業は外からWEBダイレクトでイントラのファイルにアクセスしてセミナー案件を作成します。
契約が成立できるレベルまで来ると新しくお客さん側のファイルにレコードを作成しデータを流し込みます。
その後、お客さんのメールアドレス宛てに、外部のデーターセンターのURLとお客様番号UUIDの一部を送り
WEBダイレクトで内容を確認して頂き、契約ボタンを押してもらいます。
お客さん側のファイルでお客さんがログイン後、本申込前だったらセミナーの基本情報の画面に行きますが
本申込後は詳細情報を入力する画面に行きます。
基本情報が変る事はそう多く無いのですが、会場が変ったり、参加人数が変ったり、開催時間が変ったり
詳細情報はなかなか決まらなかったり、変更になったりでする場合があります。
リレーションで繋がっているオカレンス間で同じ項目が違っている場合、人が見ただけでどこが変ったのかがすぐ分かるようにしたいのです。
新しい正しい情報は何で、前の情報はどうだったのかが一目で分かるようにできたらと思っているのですが?
Pages: 1
[ Generated in 0.023 seconds, 7 queries executed - Memory usage: 518.27 KiB (Peak: 523.17 KiB) ]