みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつもお世話になっております。
長文になります。
環境
FileMaker Pro 14 Advanced
FileMaker Go 14
FileMaker Server 14
既にいくつも出ている質問かもしれませんが、どうしても解決できず困っております;
現象としては、「レコードのインポート」スクリプトステップが、FileMaker Proは実行できるのに対し、Goではエラーとなりインポートできないということです。
ファイル構成は、
・ローカルファイルA
・ローカルファイルB
・サーバホストファイルC
と3つあり、スクリプトは、すべてローカルファイルBで実行します(ローカルファイルBに作成しています)。
ローカルファイルBは、ローカルファイルAとホストファイルCを外部参照しています。
ローカルファイルBのスクリプトを実行し、ローカルファイルAのテーブル①からローカルファイルAのテーブル②にデータをインポート。
ローカルファイルBのスクリプトを実行し、ホストファイルCのテーブル③からホストファイルCのテーブル④にデータをインポート。
ローカルファイルAとホストファイルBのテーブルは、外部参照としてTOを作成し、そのTOを使用してレコードのインポートを行うようにしています。
「レコードのインポート」スクリプトステップを実行する際の、ローカルファイルAの外部参照のパスは、
Goで実行する場合は、 "file:" & Get(ドキュメントパス) & "ローカルファイルA.fmp12"
Proで実行する場合は、 "filewin:/ドライブ:/フォルダ/ローカルファイルA.fmp12"
ホストファイルCの外部参照パスは、Pro、Go共通で "fmnet:/IPアドレス/ホストファイルC.fmp12"
となっています。
また、ローカルファイルBの外部データソースには、
ローカルファイルAは、 "filewin:/ドライブ:/フォルダ/ローカルファイルA.fmp12"
ホストファイルCは、 "fmnet:/IPアドレス/ホストファイルC.fmp12"
と、設定しています。
Proで実行する分には問題なくレコードがインポートされますが、GoではローカルファイルA、ホストファイルCの両方ともレコードのインポートができません。
Goで実行したときに出るエラーは、エラー番号:3 「コマンドが使用できません(たとえば誤ったオペレーティングシステムや誤ったモードなど)」です。
Goで、ローカルファイルAのTOを使用したレイアウト、ホストファイルCのTOを使用したレイアウトは参照することができます。
エラーから推測するに、Goで「レコードのインポート」スクリプトステップが使用できないということなのかと思いますが、なぜエラーとなっているのかがわかりません。
今やろうとしている外部参照ファイル内のテーブル同士のレコードインポートは、Goではサポート外ということでしょうか。
それとも、外部データソースとして設定しているファイルパスが間違っているのでしょうか。
それとも、インポート先を変える必要があるでしょうか(ローカルファイルA⇒ローカルファイルA ではなく、ローカルファイルA⇒ローカルファイルBにしなければならないなど)。
ローカルファイルBで外部参照のデータを使用したいために、いったんコピーをとりたいのです。
時間が限られている状況でして、皆様のお知恵をお借りしたい所存です。
わかりにくいかもしれませんが、よろしくお願いいたします。
FileMaker Go は FileMaker ファイルからのインポートをサポートしています。
Get ( ドキュメントパス ) & "ファイルA.fmp12" をどこに記述しているか分かりませんが、
ファイルパス指定のダイアログに直接指定しても動作しません。
「レコードのインポート」スクリプトステップを実行する際の、ローカルファイルAの外部参照のパスは、
これでは正確に何をしているのか分からないので正しい用語で説明して下さい。適切なアドバイスの妨げになります。
外部参照ではなく単にファイルパスに記述しているだけかと思われますが......
なお、正しく指定している場合 Get ( ドキュメントパス ) & "ファイルA.fmp12"
fmnet:/IP/ファイルC.fmp12 のいずれでもインポートはできます。
パスの指定ミスでファイルが見つからない場合はエラー100が返ると思いますが、
FileMaker Go でのエラーはどのようにして拾っているのでしょう?
ファイルBのTOに関連付けられたレイアウトで表示しているレコードをインポートしたい場合、
厳密なパスの指定を行ってしまうと全レコードのインポートになるのでNGです。
その場合は単純に「file:ファイルA.fmp12」「file:ファイルC.fmp12」で足ります。
ファイルが開かれていない場合、相対パスはエラーになりますが、
TOに関連付けられたレイアウトを表示しているならファイルが開かれていないことはないでしょう。
Last edited by Moz (2016-03-01 22:36:25)
Offline
Mozさん、わかりにくい説明で申し訳ありません。
「レコードのインポート」スクリプトステップを実行する際の、ローカルファイルAの外部参照のパスは、
これでは正確に何をしているのか分からないので正しい用語で説明して下さい。適切なアドバイスの妨げになります。
外部参照ではなく単にファイルパスに記述しているだけかと思われますが......
スクリプトは、以下のように記述しています。
If[ PatternCount( Get(アプリケーションバージョン) ; "iPad" ) ]
変数を設定[ $localpath; "file:" & Get(ドキュメントパス) & "ローカルファイルA.fmp12" ]
Else If[ PatternCount( Get(アプリケーションバージョン) ; "Pro" ) ]
変数を設定[ $localpath; "filewin:/ドライブ:/フォルダ/ローカルファイルA.fmp12" ]
End If
レコードをインポート[ダイアログなし; $localpath]
変数を設定[ $err ; Get(最終エラー) ]
最後のGet(最終エラー)で、エラーコード:3が返ってくる状態です。
また、インポート元のTOは、ローカルファイルBのリレーションシップグラフで、どのテーブルにもリレーションを張っていない状態です。
…これがまずい気がしてきました。すみません。。
レコードのインポートをしたい場合、インポート元とインポート先のTOは、リレーションを張っておくべきでしょうか。
基本的なところが欠けているかもしれません。。
また、インポート元のTOは、ローカルファイルBのリレーションシップグラフで、どのテーブルにもリレーションを張っていない状態です。
…これがまずい気がしてきました。すみません。。
レコードのインポートをしたい場合、インポート元とインポート先のTOは、リレーションを張っておくべきでしょうか。
まったく関係ありません。レイアウトに関連付けるために必要なのはTOだけです。
スクリプトの全体を書かれていないだけだと思いますが、
インポート先のTOに関連付いたレイアウトが表示されている必要があります。
※今回の問題とは直接の関係はありません。
[レコードのインポート]のステップでインポート順が設定されていないようなのでまずインポート順を設定しましょう。
インポート順を設定する際には FileMaker Pro からパスの通る設定に変更すればOKです。
(その後にファイルパスを変えてもインポート順は維持されます)
[レコードのインポート]のステップで[データソースを指定]が「FileMaker Pro」に設定されていないと思われます。
エラーコード3が返るのはこれが原因でしょう。
FileMaker Pro では気を利かしてファイルタイプを勝手に判別してうまく動くかも知れませんが、
インポートできるファイルタイプに制限のある FileMaker Go ではなんじゃこりゃ?ってなるのでエラーになります。
Last edited by Moz (2016-03-02 06:37:15)
Offline
Mozさん、ありがとうございます。
[レコードのインポート]のステップでインポート順が設定されていないようなのでまずインポート順を設定しましょう。
インポート順を設定する際には FileMaker Pro からパスの通る設定に変更すればOKです。
(その後にファイルパスを変えてもインポート順は維持されます)[レコードのインポート]のステップで[データソースを指定]が「FileMaker Pro」に設定されていないと思われます。
エラーコード3が返るのはこれが原因でしょう。
FileMaker Pro では気を利かしてファイルタイプを勝手に判別してうまく動くかも知れませんが、
インポートできるファイルタイプに制限のある FileMaker Go ではなんじゃこりゃ?ってなるのでエラーになります。
ProでローカルファイルBのスクリプトを見直しました。
「レコードのインポート」スクリプトステップのオプションで、"ファイル"を選択し、"ファイルの追加"でローカルファイルAを選択、インポート元とインポート先が想定される順番になっていることを確認し、保存しました。
見直す前は、インポート元のテーブルが表示されていない状態であったため、Mozさんのおっしゃっていたとおり、データソースが指定されていませんでした。
修正後のファイルをGoに移し、スクリプトを実行したところ、レコードのインポートが可能になりました。
ProでもGoでもインポート可能にすることができました。
また、ローカルファイルBの「外部データソースの管理」も見直し、
file:ローカルファイルA.fmp12
filewin:/../../フォルダ/ローカルファイルA.fmp12
と2つ指定しましたが、これは、Goの場合は1つ目、Proの場合は2つ目のパスを参照先として見てくれるという解釈でよろしいのでしょうか。
(どちらも指定しないとインポート時にエラーが発生したため)
file:ローカルファイルA.fmp12
filewin:/../../フォルダ/ローカルファイルA.fmp12
と2つ指定しましたが、これは、Goの場合は1つ目、Proの場合は2つ目のパスを参照先として見てくれるという解釈でよろしいのでしょうか。
複数のパスを改行区切りで指定した場合、FileMaker は上から順に参照していきます。
参照できれば次のパスには進まず、参照できなければ次のパスを参照します。
FileMaker Go では最初のパスが参照でき、FileMaker Pro では1番目はダメで2番目のパスが参照できたというだけです。
どちらのパスも参照できなければエラーが返ります。
Last edited by Moz (2016-03-02 16:53:55)
Offline
複数のパスを改行区切りで指定した場合、FileMaker は上から順に参照していきます。
参照できれば次のパスには進まず、参照できなければ次のパスを参照します。FileMaker Go では最初のパスが参照でき、FileMaker Pro では1番目はダメで2番目のパスが参照できたというだけです。
どちらのパスも参照できなければエラーが返ります。
ありがとうございます。
今回Goでうまくいかなかった原因がわかりました。
Proでばかりテストしていたために、Goでの参照先を設定していなかったことと、
「レコードのインポート」スクリプトステップでデータソースの指定ができていなかったことでした。
外部参照パスの指定についても理解することができました。
無事に「レコードのインポート」スクリプトステップを使用したスクリプトを動かすことができました。
回答して頂いたMozさんには感謝の気持ちでいっぱいです。
本当にありがとうございました。
Pages: 1
[ Generated in 0.011 seconds, 8 queries executed - Memory usage: 549.3 KiB (Peak: 569.84 KiB) ]