Midnightjapan

FileMaker

ファイルメーカー 複数選択値のバブルソート実装

by jun on 6月.25, 2014, under FileMaker

久々に技術ネタ

ファイルメーカーではチェックボックスを実装すると、複数選択できます。
繰り返しフィールドでもないのに、どういう値が入っているのか。

答えは選択された値が改行されて入ってるんですね。そうです。GetValueで取得できます。

じゃあ選択順はどうなるかというと、選択された順に開業されます。

チェックを外すと、切り取られるのでいなくなります。わかるかな?

選んだ値が■ 未選択が□だとすると
フィールド選択値:□01 □02 □03 □04 □05 として
01→02→03→04→05→03→03 と選択していくと

結果
01
02
04
05
03

となってしまう。これをバブルソートで

結果
01
02
03
04
05

となるスクリプトを作成した。
このスクリプトだけではどうにもならないが、このソートをスクリプトの変数に割り当てれば
結果は変数に代入される。

Let([
 // フィールド値をパラメータ引数に設定
  $prm=フィールド値;
 // ソート条件をフラグで分岐:昇順=1,降順=0)
  $sor=1;
 // ソートタイプ指定:テキスト比較=1,数値比較=0)
  $typ=1;
 // サブルーチン関数定義
  $lst=$prm;
  $sub="
   Case(
    $i< =1;$top;
      Let([
       $i=$i-1;
       $itm=GetValue($lst;$i);
       $_top=Case($typ;$top;$top*1);
       $_itm=Case($typ;$itm;$itm*1);
       $flg=Case($sor;$_top<$_itm;$_top>$_itm);
       $rtn=Case($flg;List($rtn;$itm);List($rtn;$top));
       $top=Case($flg;$top;$itm)
      ];
      Evaluate($sub)
     )
    )
   ";
 // バブルソート関数定義
 $n=0;
 $res="";
 $fnc="Case(
  $n=ValueCount($prm);$res;
  Let([
   $n=$n+1;
   $i=ValueCount($lst);
   $top=GetValue($lst;$i);
   $rtn=\"\";
   $res=List($res;Evaluate($sub));
   $lst=$rtn
  ];Evaluate($fnc))
 )"
];
 Evaluate($fnc) // バブルソート計算実行
)

さぁ、たまたまこんなことしたかった方は、サンプルを参考に実装してみましょう。

コメントなし :, , , more...

ファイルメーカーの共有サーバーから開いた時の挙動について

by jun on 11月.09, 2010, under FileMaker

Jun専用といってもいいくらいの、ごくごくまれな動作メモ。

システム構築にあたりファイルメーカーのように依存型のアプリケーションでの構築から

オープンなWEBシステムを利用したシステム構築を推進し始めている。

そこでこんな事例が起きた。

クライアント:ODBC接続でファイルメーカーファイルからアクセス

サーバー:ローカルネットワークからのODBC接続を許可したSQLサーバー

ファイルメーカーはあくまでテンプレートとして使い、中身はSQLデーターベースにしてしまえば、複雑な処理をWEB系で行ったりSQLでの高度な演算処理を行うことも可能なためである。

こんな環境を構築した時に、ファイルメーカーのファイルを共有サーバーとローカルに置いた場合の挙動がおかしい。

ローカル環境は下記の通り

ファイルメーカーv10 for WIndows

ODBCドライバー5.1.6(5.1.7ではXPまたはwindows7で日本語環境では正常に動作しませんでした)

共有サーバーから開くと=>「この権限ではアクセスできません」

ローカルにコピーすると=>「問題なし」

なるほど、バグですな。

サーバーに配置することができれば、バックアップなども非常に便利なんですがね・・・毎回この仕様だかバグだかわからない問題でトラブっている私の個人的な記録です。

万が一同じ問題にあわれた哀れなファイルメーカー使いの方が少しでも円滑に対処できたら幸いです。

ではまた。

コメントなし more...

Mysqlサーバーにcsvファイルをインポートするときのコツ

by jun on 11月.05, 2010, under FileMaker, Linux, Programing

一般常識かもしれないけれども、テキストファイルからテーブルにインポートを実行して予想通りの結果にならなかったのでメモ。

書き出すデータ:ファイルメーカーデータ(csv書き出しファイル)

ファイルメーカーから書き出す場合、version9以上になってやっとUTF8に対応した。

書き出すと頼んでもいないのに、フィールドを挟むようにカンマとカンマの間に「”」をいれてくれる。

そんなわけでこんな風にインポートさせる

>load data local infile "csvファイルパス" into table テーブル名 fields terminated by ',' ENCLOSED BY '"';

ファイルメーカーじゃなくて、たとえば日本郵便が配布している郵便番号データなんかは「”」はないので

>load data local infile "csvファイルパス" into table テーブル名 fields terminated by ',';

ところが、なんどやっても各フィールドタイプがうまく認識してくれずどちらのタイプにしても取り込みがうまくいかない。

いろいろやったためしのひとつで改行コードCR+LFって・・・一個多くね?ってことで

私のサーバーはUNIXということもあり、LFだけにしてみた。

成功した。

「”」といい、ファイルの改行コードといい、余計なことばかりするもんだ。

ちなみに、エクセルはUTF-8のファイルは文字化けします。

これがコツです。忘れませんように。

コメントなし more...

ファイルメーカーの繰り返しフィールドの挙動

by jun on 4月.19, 2010, under FileMaker

ひどいタイトルですね。

これでも私ファイルメーカーの開発を続けて、はや10年になるんですが、へんなところでつまづきました。

ファイルメーカーの繰り返しフィールドです。

これをテキスト表現すると異常にわかりにくいのですが、ファイルメーカー特有の機能のためあまり使わないほうがよい機能です。

繰り返しフィールドとは1フィールドに複数の値が入ります。SQLでいうENUMみたいなものですが、またちょっと違うんですよね。動きも。

フィールド:数量(タイプ:数字/繰り返し×5) 値:5,4,3,2,1 と入っているとします。
フィールド:単価(タイプ:数字/繰り返し×5) 値:100,110,120,130,140 と入っているとします。
フィールド:金額(タイプ:計算(数量×単価)/繰り返し×5) 値:500,440,360,260,140 と導きだされます。

これに消費税を個別で出しなさいなんてことは当たり前のように発生するし
たとえば条件分岐で計算しないなんてこともよくある状態ですが、ファイルメーカーではこれが関数を使わないといけません。

繰り返しフィールドどおしの計算ならば、上記のようにできますがたとえば・・そうですねぇ・・・

単価が固定だったとします。この場合単価の入力欄は1個でいいはずなので単価を繰り返しを使わないようにするとですね・・・

フィールド:数量(タイプ:数字/繰り返し×5) 値:5,4,3,2,1 と入っているとします。
フィールド:単価(タイプ:数字/繰り返し×1 なし) 値:100 と入っているとします。
フィールド:金額(タイプ:計算(数量×単価)/繰り返し×5) 値:500,0,0,0,0 と導きだされます。

そうです、繰り返しフィールドは非繰り返しフィールドとあわせて処理する場合、先頭項目しか処理をしません。

この場合Extend関数を使います。

フィールド:数量(タイプ:数字/繰り返し×5) 値:5,4,3,2,1 と入っているとします。
フィールド:単価(タイプ:数字/繰り返し×1= なし) 値:100 と入っているとします。
フィールド:金額(タイプ:計算(数量×Extend(単価))/繰り返し×5) 値:500,400,300,200,100 と導きだされます。

これで望みどおりです。

しかし、これに条件分岐をいれます。

もし半額優待チケットを利用した全品半額にできるとします。金額フィールドの計算式にIF文が入るとわかりますよね?

当然入力画面の設計上、正規化されているとしたら半額チケット利用のチェックボックスは1つだけにしますよね?もちろん設計によりますが一般論です。

20品買ったら20個チェックつけるのは面倒です。

とすると

フィールド:半額チケット(タイプ:数字 チェク時1入力/繰り返し×1=なし)

を追加して、金額フィールドの計算式は下記のようになります。

IF(半額チケット=1 ; 数量×(Extend(単価)/2) ;数量×Extend(単価))

いけそうですよね?これがいけないんですよ・・・

いやぁ、いまさらながら調べてググって・・・苦労しました。

結論は・・・

IF(Extend(半額チケット)=1 ; 数量×(Extend(単価)/2) ;数量×Extend(単価))

そうです、IF文の評価部分ですら繰り返しにフォーカスするようでして、非繰り返しフィールドはすべてExtend関数でくくらないと繰り返しフィールドとしてもどらないようなんです。

記録しておくようなことでもないきがしますが、私が迷ったので万が一迷ってここにさまよわれたりしたときの記録として残します。

(本当は私の個人的なメモだったりしてw

では、皆さんごきげよう (‾。‾)y-~~

6 コメント :, more...

FileMaker Windows7での動作状況について

by jun on 10月.22, 2009, under FileMaker

FileMaker TechNet メンバー向けオフィシャルインフォメーションのメールより抜粋します。

◎ Windows 7 と FileMaker 製品について

◎ FileMaker 10 製品を Windows 7 上で実行することに関して、

◎ すでに判明している問題

など、下記の通り案内されてきました。

Windows 7 と FileMaker 製品について

FileMaker Windows 7 と FileMaker 製品について

Q)質問 FileMaker 製品と、Windows 7 は互換性がありますか?
A)答え FileMaker 製品と新たなオペレーティングシステムとの互換性については、以下をご参照ください。

FileMaker Pro 10 と FileMaker Pro 10 Advanced

Windows 7 上で動作することを確認しております。 TechInfoの記事番号「7454」に記載されている問題があります。

FileMaker Pro 10 と FileMaker Pro 10 Advanced Windows7での既知の問題

FileMaker Server 10 と FileMaker Server 10 Advanced 新しいオペレーティングシステムに対する互換性はありません。
FileMaker 9 製品 以前のバージョン 旧バージョンの FileMaker 製品は、Windows 7 が利用できる前に開発され、 販売されたものです。このため、Windows 7 上での動作確認や開発がおこなわれておりません。
Windows 7 上に旧バージョンの製品をインストールし、実行することができたとしても、解決できない動作上の問題に遭遇する可能性があります。このため、最新版の FileMaker ソフトウェアをご利用いただくことを強くお勧めします。
(FM Store からご購入いただくこともできます)。
FileMaker 10 製品を Windows 7 上で実行することに関して、すでに判明している問題

Q)質問 FileMaker 10 製品を Windows 7 上で実行することに関して、すでに判明している問題がありますか?
A)答え FileMaker Pro 10 製品を Windows 7 上で実行する際には、次の問題があることが報告されています。

FileMaker Pro 10 と FileMaker Pro 10 Advanced:

リスト形式の表示でスクロールするとき、正しく画面が表示されないことがあります。
モーダルダイアログボックスの外をマウスクリックしたときの警告の点滅が従来より多く点滅します。
最近開いたファイル名が、「最近使ったファイルを開く」のリストに追加されないことがあります。

ということで、なんだWindows7での動作確認しか終わってないんだね。Windows7のBeta版からの問題は文字化け問題くらいしか解決してないようですね。メーカーなんですから少しは頑張ってくださいよ。

FileMakerがなぜ愛されてきたか?マックではこれしかなかったから?違いますね。ずっと互換を保ってきたじゃないですか。大きな困難もユーザーと一緒に乗り越えてバージョンアップしてきたじゃないですか・・・

どうせ採算重視でファイルメーカーのVUP部隊に重きを置いてサポートは切り捨てたんでしょ?きっと年始にバージョンアップしてアホみたいにWindows7対応NewVersion!とか売りだすんですよね?

だからFileMaker9はWindows7なんかしらないよ・・・になったんですよね?

Windowsの業界じゃあたりまえかもしれませんが、FileMakerさん・・・それはないんじゃないですか?

またAppleだけの閉鎖された世界に逆戻りになりますよ?企業にとって採算は大事ですが、マーケットを大事にすることはそれと違うと思うんですけどね・・・おっと、ちょっと呟きすぎましたね。

コメントなし more...



何かお探しですか?

以下にキーワードを入力してサイト内検索が可能です:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!