みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FileMaker Goで更新したレコードをFileMaker Advanced Pro 18の同一テーブルにレコードをインポートしたいと思います。
変数をセット($pass、Get(ドキュメントパス)$ <レコードを含むファイル名>.fmp12)を指定した後
レコードのインポートで
ファイルの指定を
file:$pass
file:<レコードを含むファイル名>.fmp12
として、インポートの順を
ソースとターゲットを同じテーブル名にすると、「テーブルをテーブル自体にインポートできません」と表示されます。
ファイルの指定、インポートの順の正しい指定をご教示ください。
よろしくお願いします。
Offline
同じテーブル間でのインポートはできません。
必要なデータを書き出してからインポートするか、テーブルの中でレコードの複製を繰り返します。
Offline
FileMaker Go上のファイルから、FileMaker Advanced Proのファイルへという事ですよね?
ファイルの保存場所とか、パスの指定とか間違っている?
FileMaker Go上のファイルは、PCにコピーしているのでしょうか...?
Offline
FMGo からのインポートでしたか。
FM pro でファイルを共有して、そちらのファイルを開き、インポートするのが手間がかからないのですが。
Offline
説明が足りなかったかもしれません。
1.朝一番にProで作成したFileMakerファイルをiTunesでまるごと転送します。
2.担当者はiPadを出先に持って行って、作業データを書き込みます。(iPadは複数)
3.担当者は事務所に帰って、作業したデータをWiFi経由で更新・追加された分だけProに反映します。
この項番3でレコードのインポートを使用すれば出来ると思っています。
Offline
> 変数をセット($pass、Get(ドキュメントパス)$ <レコードを含むファイル名>.fmp12)
パスの値がよく分かりませんが、
Get(ドキュメントパス)
では自ファイルのパスを返しますよ。
$ <レコードを含むファイル名>.fmp12
これもよく分かりません。
Offline
ということは、
1.ソース側をGo側のファイルパスにしてターゲット側をPCのIPアドレス下のファイルに指定したレコードのインポートを作成
2.Go側でレコードのインポートを実行すれば、自ファイル(Go側)からPC側に同じテーブルを更新・追加する。
ことになるのでしょうか?
Offline
WiFi経由で接続は、どのようにされていますか。
会社側で FileMaker erver を運用して、iPad から共有ファイルを開いて朝夕の同期をかける、というのが、一番シンプルだと思いますが。
夕の同期は、共有しているファイルを開き、そこから FMGGo 側のテーブルをインポートする、という動きです。
また、FM pro で運用しているファイル名と、FMGo でのファイル名は、違うものにした方がいいですよ。(質問は、これの取り違えのように見えます)
Last edited by Shin (2019-08-28 12:59:26)
Offline
ありがとうございます。
同じファイルをインポートするというのではなく、別ファイルとしてコピーして受け取った側で正規のファイルに更新・追加すると理解しています。
スクリプトを作成してテストしてみます。
Last edited by Moriki Hagi (2019-08-28 14:02:17)
Offline
重ねてお尋ねしますが、WiFi経由で接続は、どのようにされていますか。
FM pro 側で、iTune を使ってファイルをコピーしているだけですか。
> 別ファイルをコピーして受け取った側で正規のファイルに更新・追加するということですね
違います。
ファイルを共有させます。そのファイルを、FMGo で、共有ファイルを開く、から開くのです。
Offline
ちょっとややこしいですが、以下のようにすると、FileMaker Go のローカルファイルのデータをFileMaker Proへインポート出来ます。
FileMaker Pro
共有の設定:ONにする
ファイルは、共有可能に設定
外部データソース にFileMaker Pro側の情報を登録
名前:
Host_{ファイル名}
ファイルパス:
fmnet:/{IP または、PC名}/{ファイル名}
例:
名前:
Host_Import_GoToPro
ファイルパス:
fmnet:/192.168.100.180/Import_GoToPro
スクリプト:HostSide_Import_GoToPro(FilePath) ※スクリプト名は任意
変数を設定 [$FilePath; 値: Get(スクリプト引数)]
レコードのインポート [ダイアログあり:オフ; 「$FilePath」; 追加; ]
FileMaker Go 側からFileMaker Pro(Host)のスクリプト「HostSide_Import_GoToPro(FilePath)」を引数:Get ( ファイルパス ) を付けて実行。
スクリプト実行 [指定:一覧から; 「HostSide_Import_GoToPro(FilePath)」 , ファイル: 「Host_Import_GoToPro」; 引数:Get ( ファイルパス )]
Offline
一通りコードを作ったのですが、レコードのインポートでパラメータが違うところがあります。
レコードのインポート [ダイアログあり:オフ; 「$FilePath」; 追加; ]
↓
レコードのインポート [ダイアログあり:オフ; テーブル: <インポートしたいテーブル名>;「$FilePath」; 追加; シフト JIS]
シフト JISは問題なしとしてテーブルを指定しています。
レコードのインポート時、データソースを指定では$FilePathのみ指定しています。
インポートの順の指定でターゲットに受取りレコードをしてしているのでテーブルのパラメータが指定されています。
テストではGo側でインポートしたいテーブルに1レコード追加して、インポート処理によりターゲットPro側に追加されることを確認したかったのですが、
結果は追加するレコードはありませんというメッセージがGo側に表示されました。
レコードのインポート指定に問題あるのでしょうか?
よろしくお願いしまします。
Offline
FileMaker 18 だと、テーブル表示がありますね。私は17で確認していました。FileMaker 17 だと、テーブル表示が無いようです。
レコードのインポート [ダイアログあり:オフ; テーブル: Import_GoToPro; 「$FilePath」; 追加; シフト JIS]
FileMaker Go 側からFileMaker Pro(Host)のスクリプト「HostSide_Import_GoToPro(FilePath)」を引数:Get ( ファイルパス ) を付けて実行。
ここが説明不足だったような。
FileMaker Go のローカルに保存されたファイルから FileMaker Pro(Host)のスクリプト「HostSide_Import_GoToPro(FilePath)」を引数:Get ( ファイルパス ) を付けて実行。
「カスタムダイアログを表示」を入れて動作を確認してみましょう。
変数を設定 [$FilePath; 値: Get(スクリプト引数)]
カスタムダイアログを表示 ["!"; $FilePath]
レコードのインポート [ダイアログあり:オフ; テーブル: Import_GoToPro; 「$FilePath」; 追加; シフト JIS]
カスタムダイアログを表示 ["!"; Get ( 最終エラー )]
Last edited by qb_dp (2019-08-29 11:34:31)
Offline
カスタムダイアログ表示を入れてテストしました。
最初の表示:
file:/var/mobile/Containers/Data/Application/A82F..../Documents/<ファイル名>
次の表示:
6 ---->ファイルが読み取り専用です
そして最後に以下のダイアログが表示されました。
サーバーからのデータ取得が完了しました。 ←これは問題ない?
原因はGet(最終エラー)が6になったことですが、原因は何が考えられるでしょうか。
よろしくお願いします。
Offline
Moriki Hagi さんが、設定したスクリプトやファイルをどうしたか等、書いてみては。
Offline
削除しました。
Last edited by Moriki Hagi (2019-08-29 15:39:46)
Offline
以下は「タブレットからインポート」スクリプトをPDFプリントした内容です。
--------------------------------------------------------------------------------
エラー処理[ オン]
変数を設定[ $filePath; 値:Get(スクリプト引数) ]
カスタムダイアログを表示[ タイトル: "!"; メッセージ: $filePath; デフォルトボタン: 「OK」, 確定: 「はい」]
レコードのインポート[ ソース: 「$filePath」; ターゲット: 「アカウントマスタ」; 方法: 追加; 文字セット: 「シフトJIS」;
フィールドデータのインポート順: ソースフィールド 1 ------------------------------------------------------ここから
のインポートアカウントマスタ::アカウントID(入力値の自動化を実行);
ソースフィールド 2 のインポートアカウントマスタ::作成者(入力値の自動化を実行);
ソースフィールド 3 のインポートアカウントマスタ::修正者(入力値の自動化を実行);
ソースフィールド 4 のインポートアカウントマスタ::アカウント;
ソースフィールド 5 のインポートアカウントマスタ::パスワード;
ソースフィールド 6 のインポートアカウントマスタ::有効無効(入力値の自動化を実行);
ソースフィールド 7 のインポートアカウントマスタ::権限;
ソースフィールド 8 のインポートアカウントマスタ::従業員ID;
ソースフィールド 9 のインポートアカウントマスタ::ログインユーザ; ]
[ ダイアログなし]-----------------------------------------------------------------------------------ここまでは印刷で追加される
カスタムダイアログを表示[ タイトル: "!"; メッセージ: Get(最終エラー); デフォルトボタン: 「OK」, 確定: 「はい」]
if [ Get(最終エラー)=0 ]
カスタムダイアログを表示 [ タイトル: "メッセージ"; メッセージ: "サーバーからのデータ取得が完了しました。"; デフォルトボタン: 「OK」, 確定: 「はい」]
Else
カスタムダイアログを表示[ タイトル: "メッセージ"; メッセージ: "取り組むべきレコードがありませんでした。"; デフォルトボタン: 「OK」, 確定: 「はい」]
End If
--------------------------------------------------------------------------------
以下は「インポート実行」スクリプトをPDFプリントした内容です。
--------------------------------------------------------------------------------
スクリプト実行[ 「タブレットからインポート」 , ファイル: 「Host_Import_GoToPro」; 引数: Get(ファイルパス) ]
※Host_Import_GoToProはご教示いただいた外部リソースをPro側IPアドレス上のファイルを指定したものです。
--------------------------------------------------------------------------------
よろしくお願いします。
Offline
6行目の if [ Get(最終エラー)=0 ] は、直前行の5行目を評価するので、必ず0が帰るでしょう。
5行目で、最終エラーを変数に取り込んでおいて、それで分岐するのが一般的です。
そのスクリプトを実行して、FileMaker pro 側のファイルに、レコードは取り込めていますか。おそらく取り込めていないでしょうから、そちらの設定の問題かも。
Last edited by Shin (2019-08-29 16:05:15)
Offline
直前のスクリプトはレコードのインポートだと思います。
カスタムダイアログの表示結果は6(=ファイルが読み取り専用です)となりましたので、Pro側のファイルへの取り込みが出来なかったことになります。
このエラー6の原因と対処方法を知りたいと思っています。
よろしくお願いします。
Last edited by Moriki Hagi (2019-08-29 16:26:55)
Offline
>サーバーからのデータ取得が完了しました。 ←これは問題ない?
見慣れないと思っていたらコレは、Moriki Hagiさんが記述しているのですね。他の人には分かりません。
Shinさんが書いているのは
カスタムダイアログを表示[ タイトル: "!"; メッセージ: Get(最終エラー); デフォルトボタン: 「OK」, 確定: 「はい」]
if [ Get(最終エラー)=0 ]
↑
だと カスタムダイアログを表示 の最終エラーが変えるので常に「0」になるので、以下のようにするという事です。
↓
変数を設定 [$最終エラー; 値: Get(最終エラー)]
カスタムダイアログを表示[ タイトル: "!"; メッセージ: $最終エラー; デフォルトボタン: 「OK」, 確定: 「はい」]
if [ $最終エラー=0 ]
.....
>カスタムダイアログの表示結果は6(=ファイルが読み取り専用です)となりましたので、
Windows上のファイルの属性を確認してみては。
Offline
レコードのインポート指定で追加ではなく更新を指定して照合フィールドをアカウントIDにすると、追加したレコードがGoからProに送られました。
qb_dpさん、Shinさんご教示いただきまししてありがとうございました。
Offline
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 573.64 KiB (Peak: 594.18 KiB) ]