5 返信 最新の回答 日時: Aug 18, 2016 4:56 AM ユーザー:user14047

    FilemakerGoにてファイルが壊れる

    user23884

      お世話になります。

       

      システムの概要

      ・データベースファイル・・・IPアドレスを固定したPC上にあります

      ・ローカルファイル・・・FilemakerGoに入れます。

      データベースファイルをPC上に置き、FilemakerGoにてローカルファイルを開き、ローカルファイルのスクリプトにて、データベースファイルよりデータを取り出します。

      データを取り出したので、そのまま外などネットワークのないところにいってもデータが見れるようになっています。

      ただ、このローカルファイルですが、たまに「ファイルが壊れています」となって開けれなくなってしまいます。

       

      ネットワークに繋げていて、PCのデータが見える状態ではファイルは壊れたことはありません。

       

      対策として行っていること

      ・テーブルオカレンスにて

       ローカルファイルのテーブルとデータベースファイルのテーブルにはリレーションを張っていません。

      ・レイアウトにて

       持ち出しレイアウトへ移動した時のみデータベースファイルに繋ぐようになっています。

      ・持ち出し前

       持ち出し実行後はスクリプトの「アプリケーションを終了」を行うようにしています。

       

      以上の対策などを行いましたが、うまくいきません。

       

      ファイルが壊れるタイミングは、データを持ちだして、最初に開くタイミングでおこります。(ネットが切れている場所)

       

      同じようなシステムを作成したことがある方で同じようなことはおこりませんか?

      また何か対策方法はありませんでしょうか?

        • 1. Re: FilemakerGoにてファイルが壊れる
          user14047

          同期処理のようなことをされているのでしょうか?

          持ち出しレイアウトへ移動した時のみデータベースファイルに繋ぐようになっています。

          とあるので、ローカルファイルには、ホストで公開されたファイルへの外部参照があり、リレーションシップグラフにはその外部参照されたファイルのテーブルオカレンスがおかれているわけですよね?

          もし、ホストが FileMaker Server なら、Admin Console の [アクティビティ] - [クライアント] できちんと閉じられているか確認してみてください。

           

          また、ローカルファイル側で書き込みを行った際に、[キャッシュをディスクに書き込む] スクリプトステップを実行してみてはいかがでしょうか?

          あまり多用するとパフォーマンスが落ちますので、大量のデータを更新した直後くらいに止めておくのがいいかと思います。

          • 2. Re: FilemakerGoにてファイルが壊れる
            user23884

            返信ありがとうございます

             

            PC側で使用しているものはFilemakerProです

             

            >>とあるので、ローカルファイルには、ホストで公開されたファイルへの外部参照があり、リレーションシップグラフにはその外部参照されたファイルのテーブルオカレンスがおかれているわけですよね?

            はい、テーブルオカレンスにはテーブルは置いてあります。 ただ、どこともリレーションを張っていない状態です。

             

            >>ローカルファイル側で書き込みを行った際に、[キャッシュをディスクに書き込む] スクリプトステップを実行してみてはいかがでしょうか?

            わかりました、一度その方法で試していってみます。

            • 3. Re: FilemakerGoにてファイルが壊れる
              user14047

              リレーションが貼られていなくてもリレーションシップグラフにテーブルオカレンスが置かれていると、なにかのきっかけでそのテーブルオカレンスを探しにいかれることはありますよ。

              ExecuteSQL 関数なんか使うと、その段階ですべてのテーブルオカレンスが参照されるみたいです。

               

              ですから、同期処理が終わった後、確実にホストと接続が切られているか確認した方が安全でしょう。

              Proですと、Get ( ユーザ数 ) で確認してみるとかでしょうか?

              • 4. Re: FilemakerGoにてファイルが壊れる
                user23884

                ありがとうごいます。

                 

                ちなみにGo側から現在外部のデータベースを参照しにいっているかはわかるものでしょうか?

                また、もし外部データを参照していることがわかった場合、それを任意に切る方法などはあるのでしょうか?

                • 5. Re: FilemakerGoにてファイルが壊れる
                  user14047

                  ファイルを指定して閉じても外部参照が設定されていると、閉じた瞬間また開いてしまいます。

                  元のローカルファイルを完全に閉じてアプリケーションの終了でしょうか。

                   

                  ローカルのファイルから、ホストされたファイルを直接参照しないように、テンポラリ的な中間ファイルを使う方法なんてのもあります。

                  FileMaker 同期ガイド(PDF)

                  またそういった面倒なことをサードパーティ製のツールを使うのも1つの手かと思います。