AnsweredAssumed Answered

サーバー上のスクリプトスケジュールでExecuteSQLでの取りこぼしが

Question asked by calafate40 on Nov 20, 2017
Latest reply on Dec 8, 2017 by calafate40

以下のような現象で困っております。

 

 

現状のテーブル構成は

  •   伝票
  •   伝票明細
  •   商品
  •   得意先

というオーソドックスな受発注システム

 

ファイル構成は

  iPhone側に

  1)入力用モバイルファイル(通常はオフライン)

  2)ホストとのコネクト用の中間ファイル

 

  サーバー側に

  3)一時保管用ファイル

  4)本ファイル

 

 

という4つのファイル構成になっております。1・3・4は同じテーブル構成で、2のみサーバとの接続・連携用のファイルです。

 

 

用途は1で発注情報を入力し、

3の伝票に対して伝票ID・日付・得意先IDを。同時にそのポータルである伝票明細に対して商品ID・数量をアップしています。

アップの方法はファイルメーカー社配布の「iOS同期」の手法をそっくり採用しておりますが、同期ではなくここではアップロードのみです。

2の中間ファイルに1と3の伝票テーブルを持たせ、グローバルフィールドに伝票IDを入れて、ピボットで回して、伝票情報を移行させます。

伝票明細は伝票からExecuteSQLで明細を取得し、レイアウト変更して

Loop

新規レイアウト作成

.

.

という風に明細情報を移行させます。

 

 

で、2を介した1と3のアップロード(モバイル回線)は回線状態が良ければちゃんと動作しますし、回線が途切れた場合でも再アップロードでちゃんと3のファイルに全データ取り込めています。

 

 

問題は同じサーバー上の3から4へのデータ移行です。

 

移行用ピボットに使用するテーブルが3のファイル自体にあるという違いはありますが、1から3へのスクリプトと全く同じスクリプトで30分に一度のスケジュールでデータ移行を行なっています。(1から3へは最大5名が適宜アップロード)

しかし数百件に1件の割合で伝票テーブルのデータは取得できているのに伝票明細テーブルの部分がそっくり抜けている(取り込めていない)現象が起こります。当然デバッガでは問題なく動くので、ポイントポイントでログをとってみたのですが、エラーが発生する箇所はExecuteSQLで伝票から伝票明細を取得する箇所でした。取得するExecuteSQLの行数をカウントするログをとってみたのですが、そこが0。つまり明細データがあるのにExecuteSQLで取得できていない。それもごく稀に。

サーバーの3から4への移行スケジュールと1から3へのアップロード時間が重なっているかタイムスタンプも確認しましたが、そういった形跡もなし。

 

現状3と4の明細行数を比較するポータルを設けてチェックはできていますが、面倒でして。

 

サーバーはホスティングサービス(専用)を使用しており、AWSにインストールされたFileMaker server15です。FileMakrGoは16です。

 

4のファイルへは内勤者が直接アクセスして電話やFAXで受けた注文を伝票入力しています。3から4へアップロード中のレコードへ内勤者がアクセスするような場面はないはずです。スクリプトの時間はほんの1秒程度で終了しますし。なので排他処理はしておりません。

 

※1から2を介した4への直接アップロードは計算式の関係で通信時間が長くなるので、計算式をなくした3の一時保管ファイルに一旦格納しています。

 

 

どのような原因が考えられるでしょうか?

Outcomes