2010年6月6日日曜日

外道の6 Evaluate関数の使い道

やぁやぁやぁ 未だに行間広すぎの設定直してません。

本当は順を追ってFileMakerのクセなんかを紹介していきたいのですが、

忘れないうちに紹介しておきたい外道技を。

------- Evaluate関数とGetField関数を変な風に使う -------

FileMakerのEvaluate関数は最初の引数が計算で、次以降の引数が監視する
フィールドになっています。

普通はとあるフィールドの値が変わったら再計算する。という使い方をします。

この関数をスクリプトの中での処理や非保存の計算フィールドの中で使う時、
単純なEvalな関数として使えます。javascriptなんかでありますよね、
eval("ホニャララ");って。そんな使い方をします。

今回自分がやった使い方は、試験テーブル(1試験1レコード、試験科目名を
複数持つ)に集計科目名格納フィールドを持たせ、ユーザーに任意の科目を
選択してもらった科目名を保持します。

そして試験明細(1受験者1レコード1試験レコードのみに関連する)側で集計する
科目がなんなのかを親のフィールドを参照して合計点を出す。です。

科目A+科目B+科目C+科目D...と任意の科目の合計を出す訳ですが、
親がもつ集計設定フィールドには

"GetField(\"科目A\")+GetField(\"科目\")+GetField(\"科目C\")..."

みたいなテキストが格納されていて、それを明細の集計値評価フィールドで
Evaluateするんです。

Evaluate(試験::集計設定)

こうする事で、どの科目が集計対象かを科目の数だけ親を参照して確認する
必要がなくなるので、幾分処理が速いのではないでしょうか?

まぁ、外道というより素直じゃないやり方と言った方が的確かもしれませんね。。

スナナレってやつですか?

0 件のコメント:

コメントを投稿