みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になっております。FMP11 Macです。
商標出願の管理をしています。区分数というフィールド(数字)があり、様々な段階でこの数字が修正されます。この修正のログを繰り返しフィールド内に自動入力したいのですが、どうしたらよいでしょうか?
いまは、OnObjectSaveで以下のスクリプトをかけてあるのですが、1行目のフィールドにしか入力されません。
フィールド設定 [テーブル::区分数ログ; GetField (テーブル::区分数)]
フィールド設定 [テーブル::区分数修正日; Get (日付)]
現在のスクリプト終了[]
区分数の遷移と修正日を自動入力することが目的です。
2回目、3回目以降の修正データを、繰り返しの2行目、3行目以降に自動入力したいのですが、どう設定したらよいでしょうか?このログ自体は単なる記録で、データベースとして管理する種類のものではないので、ポータルなどの複雑な構造にはしたくないです(明らかにポータルの方が楽であれば構いません)。
よろしくお願い致します。
※ちなみに上のスクリプトだと、区分数(繰り返し)フィールドの値が ? になってしまいます。こちらの対応も併せてお願いしたいです。
【補足】区分数ログと区分数修正日の両フィールドが繰り返しです。
Last edited by eddie (2014-02-11 17:50:53)
Offline
修正前の値を記憶しておかないといけませんから
$$区分数という変数を作って、値は現区分数フィールドを指定
同時に$$行数なる変数も設定して値はCount(区分数ログ)+1にしておきます。
この二つのステップを区分数フィールドのEnterトリガに指定。
区分数フィールドのExitやSaveトリガには
If [$$区分数≠区分数]
フィールド設定[区分数ログ[$$行数] ; 区分数]
フィールド設定[区分数修正日[$$行数] ; Get (日付)]
End If
とかで。
1日1回の修正では無いでしょうから日付ではなくタイムスタンプが良くない?
設定が非常に楽な方法。フィールドを1つ追加するだけで後は全自動。
中間作業用の非繰り返しのテキストフィールド「区分数修正履歴一覧」を作り、「計算値自動入力+既存値置換」オプション設定をするだけ。
その式は、
Let([
#lmt=100; //←最大記録件数を指定、0は無制限
#log=Case((区分数&Self)<>""; 区分数&" "&Get(日付)); //←時刻も必要なら、Get(日付)をGet(タイムスタンプ)に替える
#his=Case(#lmt; LeftValues(Self;#lmt-1); Self)
];
List(#log; #his) //←見易く「降順」でリストアップ、昇順は#logと#hisを入れ替える
)
この「区分数修正履歴一覧」だけで目的は十分かと思いますが、
どうしても繰り返しフィールドへ展開したいなら、計算フィールドとし、
その式に、
GetValue(区分数修正履歴一覧[1]; Get(計算式繰り返し位置番号))
と設定。(1つの計算繰り返しフィールドとし、「数値 日付」と連結して表示する案)
Offline
Travellerさま
ありがとうございます。その方法でできました。
教えていただいたら一応理解ができましたが、自分でこれができるようになるにはまだかかりそうです。
いつも親切にご教授くださり感謝致します。
Hiroさま
その式で目的達成できました。ありがとうございました。
式の内容は私のレベルでは理解できないのですが、スクリプトやトリガを使わなくて良い点で非常にシンプルで便利ですね。
勉強しながら利用させていただきます。
Offline
Pages: 1
[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 509.56 KiB (Peak: 516.55 KiB) ]