2010年6月27日日曜日

外道の1 数字書式を使う

なんてタイトルにしてみましたが、たいした

内容ではございません。

FileMakerの数字型フィールドor戻り値の型が数字の計算フィールドの
場合、レイアウトに置いた時に、値をそのまま表示以外の方法が
あります。

1:金額のように見せる。

  ようにというか、主に金額等3桁区切りでカンマをいれる事が出来ます。

2:通貨単位を表示させる。

  これは、設定した記号を固定で表示させる設定なので、「$」とすれば
  ドルに「¥」とすれば円に見えると。

  ここでもちろん「ガバス(半角)」とか出来ます。実際にはない通貨記号や
  単位を使うあたりが外道です。実例は無いですけど。。

3:論理値を使う。

  これは意外とやります。値が真の時と偽の時でそれぞれ全角7文字程
  日本語を表示させられるので、例えば請求済フラグがたっていれば、
  「請求済」や逆なら「未請求」。無効(キャンセル)フラグのフィールドなら
  「VOID」など、データベース上では1,0で扱いたいが画面上で
  その情報を日本語で表示させたい時で、簡単な一言ですむ場合に
  使えます。

本日はそんなところで。

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(試験::集計設定)

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

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

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