FileMakerにも気を付けなければならない仕様があるようです。
ココがポイント
今回は、データをインポートして、Loopを使って計算するというシンプルなスクリプトです。
1行目フィールド名のインポート
FileMakerのバージョンによってもインポートの雰囲気がかわるようですが、自分の場合は、FileMakerPro19での話になります。
よくインポートするデータの1レコード目がフィールド名になっている場合があります。
ココがポイント
インポート時の1行目(フィールド名)をインポートしたくない場合
まずは、手動でインポートしようとしました。
どこにも、その選択が見つかりません!
手動でインポートすると上の図のようになりますので、「データ」というようになっている部分を、「フィールド名として使用」や「除外」などの選択ができる事がわかりました。
ただ、毎回インポートする度に選択をするのは面倒なので、スクリプトを組んでみる事にしました。
ココに注意
インポートするファイルを設定して、「OK」すると、1行目をどうするかの選択画面が出てきました。
ここで、「フィールド名」の方にチェックをすれば、1行目はフィールド名として扱われてインポートされずに済むようです。
次に、ターゲットフィールドへの順の指定を設定して「OK」すればスクリプトの方は完了です。
実際にスクリプトを実行してみました。
無事に、1行目のフィールド名を除いたデータがインポートされました。
インポートデータにLoopで値更新
次にインポートと同時に全レコードを計算したい場合があります。
テストとして、全レコードの値を10倍にしてみたいと思います。
何の問題もなくインポートして計算もできました。
次に、インポートファイルをダイアログを出現させて毎回選択できるようにしてみました。
これでスクリプトを実行すると、ダイアログが出現してから、ファイルを選択してインポート計算ができるようになりました。
Loopが1行目だけで止まってしまう現象
今回のようなテストスクリプトでなら問題なく動きましたが、
ココに注意
ちょっと複雑なスクリプトにした時、Loopの1レコード目しか計算してくれない
という現象に遭遇しました。
FileMakerのレコードインポートの記事を見てとりあえずやってみる事にしました。
ココに注意
なぜ、1行目だけで止まってしまうのか!?も理解していません。
しかし、
ココがポイント
「レコードのソート」を入れる事で問題は解決しました。
なぜ、レコードのソートを入れるとちゃんと計算してくれるのかが理解できないので困ってしまう所ですが、原因を追究するよりかは目的の処理ができたら次に行きたいのでモヤモヤとはしますが、インポートと同時にLoopで全レコードの処理をしても1行目しかしてくれないような場合は、「レコードのソート」を入れるという仕様だってことで無理やり納得する事にします。