2015年12月15日火曜日

ファイルメーカー(FileMaker)を同期で使おう Part4

ファイルメーカーを同期で使おうの第4弾です。

 今回は、中間ファイルから共有ファイルにデータを取り込むというテーマです。

レイアウトの作成

まず、中間ファイルで、共有ファイルのテーブルをコンテキストにしたものを作成します。


このようなレイアウト設定です。sampleというのが共有ファイルの名前です。


ブラウズモードにすると、このようにデータが1件あります。

「数量」というフィールドまでが、共有ファイルのフィールドで、「同期タイムスタンプ」というフィールドが、この中間ファイルにあるテーブルのフィールドです。

この「同期タイムスタンプ」のフィールドにデータを入力すると、前回行ったリレーションの設定により、中間ファイルのテーブルにレコードを作成し、ルックアップの設定で、データを取り込むことになります。


このように「同期タイムスタンプ」にデータを入力します。


このレイアウトは、中間ファイルのテーブルです。
ルックアップの設定によって、このようにデータが入力されました。
また、レコード自体はリレーションの設定で、自動的に作成されます。

これで、共有ファイルから中間ファイルへのデータのコピーはできます。

また、中間ファイルから共有ファイルへのデータの書き込みも可能です。

上の「受注マスター_sample」のレイアウトにて、データを書き込めば、共有ファイルに書き込むことになります。

この例では、営業担当者が受注を確認すると、フィールド設定で「営業確認タイムスタンプ」に確認したときのタイムスタンプを入力します。

これを共有ファイルのフィールドにコピーするという流れになってきます。

「受注マスター_sample」のレイアウトにて、「営業確認タイムスタンプ」に中間ファイルから書き込むということになります。

これが、この例での中間ファイルと共有ファイルのデータのやり取りの流れです。

FileMaker Serverの同時接続ライセンスを気にする必要がないけれど、
外出時で、ネットワーク環境のよくないところで共有ファイルのデータを見たいというときには、
これまでのやり方で、基本的にはいけるでしょうか。

ちなみに、データを共有ファイルから「もらう」だけであれば、中間ファイルの「受注マスター」というテーブルはなくてもいけます。

問題は共有ファイルに「戻す」という同期の時に中間ファイルのデータと共有ファイルのデータを比較する必要がある場合は中間ファイルの「受注マスター」が必要になってくるでしょう。

この例では、実際なくてもいけます。

次回は「入力用ファイル」と中間ファイルとのやり取りについてです。

2015年12月8日火曜日

ファイルメーカー(FileMaker)を同期で使おう Part3

こんにちは同期シリーズ第3弾です。

今回から実際の作り方を見ていきます。

少しだけ、復習+α

同期モデルを選択する場合、いろいろな課題があり選択していくと思います。

1) インターネットに接続でいない場所(電波が悪い等も)でデータを見たい

2) 同時接続ライセンスを節約したい

などがあります。1)にはモバイル通信(3Gや4G)の場合も含まれます。モバイル通信だと、ソリューションの規模やサーバーのスペックなどにもよりますが、あまり本格的に閲覧したり、データ入力をするには厳しい場合もあり、同期モデルで作った方がいい場合もあります。

FileMaker GoからFileMaker Serverの共有ファイル開くポイント

FileMaker Goにあるファイル(iPad、iPhone上のローカルファイル)からFileMaker Serverの共有ファイルをリレーションするとFileMaker Serverの共有ファイルを開いた状態(接続ライセンスを消費)になる。


ということです。リレーションをしないで取り込むには、エクセルファイルか何かにエクスポートして、インポートするという手もありますが、個人的な見解としてあまりインポートをさせたくないという考えがあります。たまに、トラブルがあり、インポートが止まらなくなったりなどがあり、そういったことが少なく、確実性が高いを個人的に思っている方法を紹介します。

構成


まず図のようなイメージで

・入力用のファイル(client.fmp12)
・中間ファイル(container.fmp12)
・FileMaker Server上の共有ファイル(sample.fmp12)

という3つのファイルがあり、2つのファイルが同じデバイス上にあるとします。

このソリューションの前提

1) 営業社員が自身の担当顧客から注文が本社に入り、アシスタントがsampleに入力
2) 未確認の注文情報をダウンロード
3) clientファイル上で確認して、確認ボタンをタップ
4) 確認情報をsampleに戻す(入力・同期)する

という流れのソリューションであると思っていただければと思います。

1)FileMaker Server上の共有ファイルsampleの構成


FileMaker Serverの共有ファイルsampleの構成はこのようになっています。実際には、もっと項目が多くなると思いますが、分かりやすいように絞ってあります。



2) 中間ファイル(container.fmp12)の構成


中間ファイル(container.fmp12)にも同じ項目のテーブルを作成します。



一番下にあるフィールドは同期したタイムスタンプを保存しておきますが、共有ファイル上のファイルとのリレーションで、このファイルにレコードを作成するために主に使用します。

リレーションシップの編集

このファイルは共有ファイルとリレーションをして、そのリレーションを使ってこのファイルにレコードを作成したりします。


リレーションシップの管理で、このボタンをクリックします。


「FileMakerデータソースの追加」で共有ファイルを選択します。


このようにリレーションを作成します。「このリレーションシップによるレコードの作成を許可する」を忘れないようにします。

そして、先ほどのフィールドの設定にあったようにルックアップの設定をします。

次回は、中間ファイルに共有ファイルからデータを取得する流れについてみていく予定です。

2015年12月2日水曜日

ファイルメーカー(FileMaker)を同期で使おう Part2

こんにちは!

前回の続きです。

前回は、同期モデルのメリットや簡単な概念を紹介しました。

今回は、完全同期モデルでという名前で紹介した、3つのファイルでデータをやり取りするモデルを作成するにあたって、知っておきたいことを少し掘り下げます。

なぜ3つ必要か


前回紹介した画像です。すこし分かりやすく同じデバイス上にあるファイルを区切りました。

FileMaker Server上のファイルにあるテーブルオカレンスを中間ファイルのリレーションマップに配置して中間ファイルのテーブルオカレンスとリレーションを組み、データをやり取りすることになります。

この時点で、FileMaker Serverのファイルのデータを表示しようとしまいと、中間ファイルを開いている間は、FileMaker Serverに接続し続けます(iPhone、iPad等では同時接続としてカウントされます)。

ちなみに、中間ファイル上でスクリプトステップの「ファイルを閉じる」を実行して、FileMaker Serverのファイルを閉じようとしても閉じられません。

ただし、FileMaker Server上のファイルにてアカウントが設定されていて、アカウント情報を入力して必ず開くようになっている場合は中間ファイルを開くときに、FileMaker Server上のファイルのアカウント情報を入力するように求められますが、キャンセルしてしまえば、接続されずに中間ファイルを開くことはできます。

しかし、FileMaker Server上のファイルのデータを取得するのにはアカウントの入力が必要になり、一度ログインすると、中間ファイルを閉じるまでは基本的に接続し続けます。

こういったことから、データを取得(同期)したらFileMaker Serverの接続を解除したい場合は、3つのファイルが必要となります。

まず、入力用のファイルに中間ファイルのデータを表示しません。

入力用のファイルのリレーショングラフには中間ファイルのテーブルを表示しないということです。

2つのファイル(入力用のファイルとFileMaker Server上のファイル)で、同じように行うこともできます。

ただ3つにすることによって、FileMaker Server上のファイルにできるだけ変更を加えなくて済むというメリットがあります。

方法

基本的なやり方としては、中間ファイルにスクリプトを設定し、入力用ファイルからそのスクリプトを実行して、データのやり取りをします。

データのやり取りには、スクリプト引数をセットしたり、スクリプトの結果を利用して送ったりします。

データのやり取りが多い場合にはエクスポート、インポートでのやり取りが必要になりますが、個人的な感想として、エクスポートはともかくインポートがらみにでトラブルに見舞われることがあるので、あまり好きではないという理由で、今回はこの方法は紹介しません。

なお、同期モデルのやり方にはいろいろあり、その一つであるという前提でお読みいただけると助かります。

次回は実際の手順を紹介していきたいと思います。