2011年5月29日日曜日

FileMaker 小技 ※Ver11限定かも

最近見つけた?仕様のようなバグのような小技。
ちゃんと動く(動き続ける)保証はありません。

例として請求書を挙げます。

1,請求書、請求書明細、商品マスタをテーブル定義
2,請求書→請求書明細(請求書idで関連付け)
3,請求書明細→商品マスタ(商品コードで関連付け)
4,簡単な請求書レイアウト作成、この時請求書コンテキストでポータルで請求明細を
  表示

さてここで、請求書明細を作成された順番ではなく、商品名で並べた順番で表示したいとする。
だが、商品名は商品マスタにあり、請求明細が持っているのは商品コードのみ。
どうするか?
1,ポータルのコンテキスト定義を商品マスタにする
2,商品マスタテーブルのカラムをポータルソートで指定できるので、商品名を指定
3,ポータルコンテキストを請求明細に戻す

以上。

もしも、仕様だとすると、親(請求書)→子(請求明細)→孫(商品マスタ)と繋がっているので
OKということなのだろうか?だとすると初めから選べるようにして欲しい。。

あんまSQLとか分からんですけど
select i.商品名,i.単価,d.数量,d.金額 from 請求明細 as d inner join 商品マスタ as i
on d.商品コード = i.商品コード where d.請求書_id = 1 order by i.商品名
※請求書idが「1」の請求書明細
みたいな感じ?

自習として、FileMakerとPythonやRuby、おまけでPHPと連携(Web公開)を
試しているので、まとまったらつまったところとかまとめよう。。。

2011年4月10日日曜日

ちょー久しぶり

あまり、気は進まないのですが、久しぶりに更新。

全く書くことが見つからない訳ではなくて、本来の書きたい内容
・FileMakerのちょっと変わった使い方
・FileMaker特有の仕様
・FileMakerと他の言語との連携

など、ネタをきちんとやるに当たって、気が進まなかったのです。
言い換えればメンドくさくってw

仕切りなおして、今日はちょいわざ。

メインコンテキストのテーブルAがあります。
そのテーブルにA+という自己リレーションの定義を行います。
定義は必ず成立させる「X」で扱う項目はなんでもいいです。

レイアウトは一覧レイアウト、ヘッダに先ほど定義した自己リレーションを
1行ポータルで横に並べていきます。そのポータル上にフィールドを置くと、、、

もうおわかりですね。マトリクス表の出来上がりです。

この時、特定のフィールドの値でソートするようにしている場合は、そのソートキーを
リレーション定義にも使っておけば、常に縦横同じレコードの並び順になりますね。

何かのマスタや一次処理レコードを使った印刷等の場合にはらくちんですね。

2010年7月25日日曜日

FileMakerの新商品

FileMaker社より先日iPhone及びiPad用アプリ「FileMaker Go」なるものが
発売されました。

メーリングリストやツイッター上でやいのやいのやっていたので、
自分も早速購入してみました。

◆何が出来るの?

 iPhoneやiPadで動くランタイムアプリです。
なので、ファイル共有やサーバーでホストしているFileMakerに接続して操作が出来ます。
自分はまだ試してませんが、iTunes経由でコピーを格納して使うことが出来るようです。

 要は1つのクライアントとして操作が出来るのです。

 今までは1クライアント追加とはすなわち、1PC購入、1FileMakerライセンス購入だったのが、
1iPhone購入、1FileMaker Goアプリ購入となります。

◆何が出来ないのか

 インスタントWebクライアントと同じ様に、印刷やインポートエクスポートが出来ません。
モードはブラウズモードのみ使用可能です。
電話は出来ますが、通話の前にFileMakerとの接続が切断されますww

 ただ、インスタントWebと違い、ログイン時のスタートスクリプトにステータスエリア隠してロック
とか出来ますし、ログイン時にadminじゃないアカウントで入れば、そのアカウントに
付与されているアクセス権に応じたCRUD権限になり、それに応じてレコード追加や削除の
アプリ側のメニューもグレーアウトしたりします。


 という事で、FileMakerで業務システム(全体もしくは一部)を作って使っているところは
1つのクライアントとしてiPhoneやiPadを利用するシーンがあれば、非常に有効なツールと
なるのではないでしょうか?

 もちろん、画面そのまま見えるのですが、ブラウザエンジンが?レンダリングしている関係で
インスタントWebのようにレイアウトによっては汚い、ボタンが押せない等不都合は発生すると想いますが
価値あるツールだと想います。

今の世は 人とIT 使いよう

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

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

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

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

2010年5月10日月曜日

FileMakerのコンバート手順

お金出して外に頼みたくないとか、中身が複雑すぎて無理って言われたとか

予算が取れない方のためにざっと手順をば、

1、データ無しBUを用意。これで作業します。データがあると重いので。

2、コンバート(最新版で開く)

3、各ファイルのファイル参照名称をキレイにします。「fileName  x」なんて

感じでダブってたりすると思うので、その中の一つを「fileName」に編集。

あわせて参照動作を軽くするために参照PATHを実在する(使う)ものだけにします。

4、リレーションシップグラフで3できれいにしたファイル参照名に取り替えます。

5、値一覧定義とフィールド定義も確認して4と同じ作業をします。

6、4と5が終わったら使われなくなったファイル参照を削除します。

これでデータのつながりに関する作業は終わります。簡単ですがファイル数が多いと

一つ一つの動作に非常に時間がかかります。

7、全てのレイアウトを修正します。一言ですますと簡単そうですが軽く地獄です。

テキストフィールドの文字サイズごと必要な縦幅が違うので大きさの調整が必要になります。

それとVer7以降でブラウズと検索でフィールドの入力可否を分けられますので

そういった箇所の調整と、日付の区切りがver6まではYYYY.MM.DDだったのが、

Ver7以降ではYYYY/MM/DDとなっていますので、日付書式も調整して下さい。

レイアウトに置いてあるテキストラベルとか全滅している可能性が大ですので

すべて大きさを調整します。ラジオボタンやチェックボックスも同様です。

ひたすらコツコツ地味な作業です。知識やスキルはいりませんけどね。

ここまで終わると動くものになります。 重要なのは6。間違えて整理し忘れていたり、

使っているファイル参照を消してしまうと、つなぎ直し作業が 発生します。これ大変。

レイアウトは印刷レイアウトのみさっと直すか、作り直すかして、入力や検索は

あとからちょっとずつでも良いでしょう。

スクリプト関連での注意は、複数ウインドウを使うスクリプトで、レコード確定が

おろそかになっていると、「別のウインドウで使用中です」みたいなエラーが出るように

なる事です。そこで処理が止まってしまうので、横着せずコツコツ直して下さい。

まぁ、リレーションの定義が複雑な業務系ほど悲惨な状態になってたりするので、

いっそ作り直した方が快適になるかもしれませんけど。。

FileMaker Ver6あたり

未だに現役の場合もあるでしょうFileMakerのVer6(含むVer5)について

カスタムWeb公開という機能があります。これはHTML内にCDMLという

独自ルールのタグを埋め込む事によってFileMakerデータをWebブラウザに表示

させるという物です。

ぶっちゃけ重いと思います。それとURLがFileMakerServerが社内にあったり

するので、http://グローバルIP/xxxxとかになります。

よくないですね。まぁドメインにする事もできたと思いましたけど。。

CDMLとはクラリス何とかマークアップランゲージです。

あまりWebプログラムの知識のない方でも出来る一方、

ファイルの置き場所に制限がある等一般公開用には適さないのでは?

と考えます。

最新のFileMaker Ver11ではプリンタの用紙サイズ覚え込みも

だいぶ改善されたようなので、古いFileMakerを使う理由は無いと

思います。実際には業務でフル稼働していて移すに移せないとか、

最新版に調整する時間が・・というものですが、

そういう時はお金を出してデベロッパーにお願いしましょう。