4 返信 最新の回答 日時: Apr 20, 2011 9:46 PM ユーザー:kabakoshira

    インポート順のスクリプト内での記憶

    Shin

      概要

      インポート順のスクリプト内での記憶

      製品

      FileMaker Pro

      バージョン

      FM7以降

      オペレーティングシステムのバージョン

      MacOS Windows

      問題の内容

      スクリプト内で、インポートを行う時、インポート順を記憶した後に、受け側のフィールドを追加すると、そのフィールドがインポート順の最後に追加され、その順の元ファイルのフィールドをインポートしてしまう設定(インポートの矢印)が勝手に追加されてしまいます。
      インポート順を記憶させているのですから、これは記憶させた内容を勝手に書き換えている事になり、非常に具合が悪いと思います。

        • 1. Re: インポート順のスクリプト内での記憶
          kabakoshira

          [Windows XP Pro sp3]上の[FileMaker Pro 11 Advanced 11.0v2]においても
          Shinさんご指摘の不具合が再現することを確認しました。

          ■再現方法:

          0) [test.txt]を用意しておく。
          ・タブ区切りテキスト
          ・フィールドは3つ。レコード数は好きなだけ。
          例:
          日本国(tab)東京都(tab)杉並区
          日本国(tab)東京都(tab)中野区
          日本国(tab)東京都(tab)板橋区
          日本国(tab)東京都(tab)千代田区

          1) [test.fp7]を新規作成。

          2) [test.fp7]に、フィールドを2つ作成。
          ・フィールド名:f1、タイプ:テキスト
          ・フィールド名:f2、タイプ:テキスト

          3) [test.fp7]に、スクリプトを1つ作成。
          ・スクリプト名:test
          ・スクリプトステップ:レコードのインポート [ダイアログなし; 「test.txt」; 追加; シフト JIS]
          インポート順:
          日本国 → f1
          東京都 → f2
          インポート方法:新規レコードとして追加

          4) スクリプト「test」を実行してみて、正しくインポートされることを確認。

          (★ここまでは問題なし。これ以後が不具合。)

          5) [test.fp7]に、フィールドを1つ追加。
          ・フィールド名:f3、タイプ:テキスト

          6) スクリプト「test」を実行すると、
          f3に「杉並区」「中野区」「板橋区」…がインポートされたレコードが
          できてしまう。

          7) スクリプト「test」を見ると、
          3)で指定したのはf1、f2へのインポートだけだったのに、
          杉並区 → f3
          のように、f3フィールドにもインポートする設定に、変わってしまっている。

          (以上です。)

          • 2. Re: インポート順のスクリプト内での記憶
            kabakoshira

            11.0v3でも改善されていませんね。

            このままでは、

            データベースにフィールドを追加したら、

            それまでに作ったスクリプトの中の、レコードのインポートで

            フィールドのインポート順を記憶させている箇所すべてを

            修正しなければならない、ということになります。

            これまではインポートされていなかった個人情報や機密事項が、

            フィールドをひとつ追加しただけで丸見えになってしまう、という事態が

            実際に起こっていて、非常に困っています。

            • 3. Re: インポート順のスクリプト内での記憶
              masumiyamada

              完全ではない回避策ですが、もし受け側に取り込まないフィールドがあるのであれば、元側の一番下のフィールドに対して、受け側の余っているフィールドを当ててください。これは取り込む必要はありません。そうすると新しく受け側にフィールドを追加すると、その下にフィールドが配置され、元側にはフィールドがないので取り込まれません。ただし、さらに元側にフィールドを増やすと上記状態が崩れ、また受け側にフィールドを追加すると取り込み対象になってしまいますので、イタチごっこではありますが。

              面倒くさいですが、テンポラリなどに一度書きだして、それを取り込むのが一番安全かもしれません。書き出したファイルは同一ファイル名で対象レコード0で書きだすと消えます。

              • 4. Re: インポート順のスクリプト内での記憶
                kabakoshira

                ありがとうございます。

                当方でも、別法を探し、
                「SQLを実行」スクリプトステップを使うことを検討したのですが、
                ランタイムソリューションでは「SQLを実行」を使えないという仕様にぶつかり、頓挫しました。

                けっきょく、いまのところ、
                インポート元のテキストファイルと、インポート先のfp7ファイルとの間に、
                もうひとつfp7ファイルを挟むことで、不具合を回避しています。

                txt → fp7
                だった流れを、
                txt → fp7その1 → fp7その2
                という流れに変えた、ということです。

                txtから、いったん fp7その1 へインポートし、それを fp7その2 へインポートする。
                つまりインポートを2回しています。やむをえず。

                fp7その1 には、必要なフィールドだけ(のテーブル)を作ってあるので、
                fp7その2 側でフィールドを増やしても、くだんの問題は起こりません。

                (fp7その1 を作るのでなく、
                fp7その2 内に別のテーブルを作り、いったんその別テーブルへインポートしてから、
                あらためて目的のテーブルへインポートする、という方法でもよい。
                つまり他ファイルであれ自ファイル内であれ、ともかく別テーブルを中継する。)


                とはいえ、今までに作った、インポート順を記憶させているスクリプトすべてを
                作り変えなければならず、たいへんな浪費になっています。
                個人情報や機密事項が丸裸になるのを避けるためなので、仕方がありません。

                Shinさんが最初の投稿をなさってから、もう半年になります。
                FileMaker社に、はやく対応してほしいです。