2016年1月20日水曜日

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

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

今回は、入力用ファイルと中間ファイルのデータの受け渡しです。

以前に、入力用ファイルには中間ファイルのテーブルを含めてのデータの受け渡しはできないということは書いたと思います。

ファイルメーカー(FileMaker)を同期で使おう Part4では、テーブルを含めて、それを利用してデータの受け渡しをしましたが、同じ方法だと、FileMaker Serverから接続を解除するのが難しいのです。

入力用のファイルと中間ファイルのやり取りにはスクリプト引数とスクリプトの結果という引数と返り値を利用してみたいと思います。




この入力用ファイル(client)にも同じテーブルを作成します。フィールドもこのようになっています。

このテーブルに、スクリプトを使ってデータを持ってきます。

中間ファイルのスクリプト



まず中間ファイルにこのようなスクリプトを作成します。

内容としては、
共有ファイルから営業確認タイムスタンプに入力がないデータを検索して、中間ファイルのテーブルにデータをコピーします。

データがないときは処理を終了します。

11行目~は取得したデータを変数に一度格納します。

13行目は、

$data & 受注マスター_sample::受注番号 & "#" &
受注マスター_sample::受注日 & "#" &
受注マスター_sample::商品名 & "#" &
受注マスター_sample::数量 & "¶"

という感じになっています。

1レコードを1行として、改行区切りで格納します。

また、各フィールドは「#」を使って区切っています。もし、商品名などで#を使うケースがあれば、絶対に使わないような文字を区切りとして使います。これは1文字でなくても構いません。

入力用ファイルのスクリプト



こちらが入力用ファイルのスクリプトです。

先ほどの中間ファイルのスクリプトを実行し、スクリプトの結果としてデータを受け取ります。

それをこのファイルにコピーしています。

内容としては、レコードを改行区切りで取得したデータを1レコードごとに変数に格納し、
さらにフィールド区切りとしていた#を改行に変換して、
フィールド設定でデータを書き込んでいます。

Excelファイルあたりでエクスポート、インポートの方が楽かもしれませんが、
こういうやり方もあるというのを紹介できれば幸いです。

好みでお使いいただければと思います。


2 件のコメント:

  1. 突然のコメント失礼いたします。

    自分も同期ファイルを作成しようとしており、行き詰ったところここにたどり着きました。

    一つ質問があります。
    中間ファイルのスクリプトで
    スクリプト引数を持つところがありますが、これは何を引数としているのでしょうか?

    返信削除
    返信
    1. コメントありがとうございます。

      この引数は、営業として自分に関係のあるレコードだけを絞り込むために、設定しています。

      例えば、社員コードなどのユニークなキーがあるとします。

      受注マスターでレコード作成時などに「担当営業ID」のフィールドにこのキーを設定します。

      このスクリプトに引数としてこのキーを設定しています。

      このキーはファイルを開くときに、社員マスターのようなテーブルから取得して変数に格納しておくか、このスクリプトで取得してもいいと思います。

      また、引数として渡さなくても、このスクリプトを実行する社員が関係するレコードを絞る方法があれば、それでもいいと思います。

      削除