初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2019-08-27 17:25:56

Moriki Hagi
Member

オフライン同期

FileMaker Goで更新したレコードをFileMaker Advanced Pro 18の同一テーブルにレコードをインポートしたいと思います。
変数をセット($pass、Get(ドキュメントパス)$ <レコードを含むファイル名>.fmp12)を指定した後
レコードのインポートで
ファイルの指定を
file:$pass
file:<レコードを含むファイル名>.fmp12
として、インポートの順を
ソースとターゲットを同じテーブル名にすると、「テーブルをテーブル自体にインポートできません」と表示されます。
ファイルの指定、インポートの順の正しい指定をご教示ください。
よろしくお願いします。

Offline

#2 2019-08-28 08:44:13

Shin
Member

Re: オフライン同期

同じテーブル間でのインポートはできません。
必要なデータを書き出してからインポートするか、テーブルの中でレコードの複製を繰り返します。

Offline

#3 2019-08-28 09:15:20

qb_dp
Member

Re: オフライン同期

FileMaker Go上のファイルから、FileMaker Advanced Proのファイルへという事ですよね?
ファイルの保存場所とか、パスの指定とか間違っている?
FileMaker Go上のファイルは、PCにコピーしているのでしょうか...?

Offline

#4 2019-08-28 09:35:04

Shin
Member

Re: オフライン同期

FMGo からのインポートでしたか。
FM pro でファイルを共有して、そちらのファイルを開き、インポートするのが手間がかからないのですが。

Offline

#5 2019-08-28 10:02:28

Moriki Hagi
Member

Re: オフライン同期

説明が足りなかったかもしれません。
1.朝一番にProで作成したFileMakerファイルをiTunesでまるごと転送します。
2.担当者はiPadを出先に持って行って、作業データを書き込みます。(iPadは複数)
3.担当者は事務所に帰って、作業したデータをWiFi経由で更新・追加された分だけProに反映します。
この項番3でレコードのインポートを使用すれば出来ると思っています。

Offline

#6 2019-08-28 10:29:23

チポ
Member

Re: オフライン同期

> 変数をセット($pass、Get(ドキュメントパス)$ <レコードを含むファイル名>.fmp12)
パスの値がよく分かりませんが、

Get(ドキュメントパス)
では自ファイルのパスを返しますよ。

$ <レコードを含むファイル名>.fmp12
これもよく分かりません。

Offline

#7 2019-08-28 11:00:43

Moriki Hagi
Member

Re: オフライン同期

ということは、
1.ソース側をGo側のファイルパスにしてターゲット側をPCのIPアドレス下のファイルに指定したレコードのインポートを作成
2.Go側でレコードのインポートを実行すれば、自ファイル(Go側)からPC側に同じテーブルを更新・追加する。
ことになるのでしょうか?

Offline

#8 2019-08-28 12:11:47

Shin
Member

Re: オフライン同期

WiFi経由で接続は、どのようにされていますか。
会社側で FileMaker erver を運用して、iPad から共有ファイルを開いて朝夕の同期をかける、というのが、一番シンプルだと思いますが。

夕の同期は、共有しているファイルを開き、そこから FMGGo 側のテーブルをインポートする、という動きです。

また、FM pro で運用しているファイル名と、FMGo でのファイル名は、違うものにした方がいいですよ。(質問は、これの取り違えのように見えます)

Last edited by Shin (2019-08-28 12:59:26)

Offline

#9 2019-08-28 13:03:07

Moriki Hagi
Member

Re: オフライン同期

ありがとうございます。
同じファイルをインポートするというのではなく、別ファイルとしてコピーして受け取った側で正規のファイルに更新・追加すると理解しています。
スクリプトを作成してテストしてみます。

Last edited by Moriki Hagi (2019-08-28 14:02:17)

Offline

#10 2019-08-28 13:27:16

Shin
Member

Re: オフライン同期

重ねてお尋ねしますが、WiFi経由で接続は、どのようにされていますか。
FM pro 側で、iTune を使ってファイルをコピーしているだけですか。

> 別ファイルをコピーして受け取った側で正規のファイルに更新・追加するということですね
違います。
ファイルを共有させます。そのファイルを、FMGo で、共有ファイルを開く、から開くのです。

Offline

#11 2019-08-28 13:31:06

qb_dp
Member

Re: オフライン同期

ちょっとややこしいですが、以下のようにすると、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

#12 2019-08-29 10:27:14

Moriki Hagi
Member

Re: オフライン同期

一通りコードを作ったのですが、レコードのインポートでパラメータが違うところがあります。
レコードのインポート [ダイアログあり:オフ; 「$FilePath」; 追加; ]
         ↓
レコードのインポート [ダイアログあり:オフ; テーブル: <インポートしたいテーブル名>;「$FilePath」; 追加; シフト JIS]

シフト JISは問題なしとしてテーブルを指定しています。
レコードのインポート時、データソースを指定では$FilePathのみ指定しています。
インポートの順の指定でターゲットに受取りレコードをしてしているのでテーブルのパラメータが指定されています。
テストではGo側でインポートしたいテーブルに1レコード追加して、インポート処理によりターゲットPro側に追加されることを確認したかったのですが、
結果は追加するレコードはありませんというメッセージがGo側に表示されました。
レコードのインポート指定に問題あるのでしょうか?
よろしくお願いしまします。

Offline

#13 2019-08-29 11:33:56

qb_dp
Member

Re: オフライン同期

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

#14 2019-08-29 14:26:39

Moriki Hagi
Member

Re: オフライン同期

カスタムダイアログ表示を入れてテストしました。
最初の表示:
file:/var/mobile/Containers/Data/Application/A82F..../Documents/<ファイル名>
次の表示:
6 ---->ファイルが読み取り専用です
そして最後に以下のダイアログが表示されました。
サーバーからのデータ取得が完了しました。 ←これは問題ない?

原因はGet(最終エラー)が6になったことですが、原因は何が考えられるでしょうか。
よろしくお願いします。

Offline

#15 2019-08-29 14:52:48

qb_dp
Member

Re: オフライン同期

Moriki Hagi さんが、設定したスクリプトやファイルをどうしたか等、書いてみては。

Offline

#16 2019-08-29 15:31:10

Moriki Hagi
Member

Re: オフライン同期

削除しました。

Last edited by Moriki Hagi (2019-08-29 15:39:46)

Offline

#17 2019-08-29 15:37:57

Moriki Hagi
Member

Re: オフライン同期

以下は「タブレットからインポート」スクリプトを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

#18 2019-08-29 16:03:35

Shin
Member

Re: オフライン同期

6行目の if [ Get(最終エラー)=0 ] は、直前行の5行目を評価するので、必ず0が帰るでしょう。
5行目で、最終エラーを変数に取り込んでおいて、それで分岐するのが一般的です。

そのスクリプトを実行して、FileMaker pro 側のファイルに、レコードは取り込めていますか。おそらく取り込めていないでしょうから、そちらの設定の問題かも。

Last edited by Shin (2019-08-29 16:05:15)

Offline

#19 2019-08-29 16:12:51

Moriki Hagi
Member

Re: オフライン同期

直前のスクリプトはレコードのインポートだと思います。
カスタムダイアログの表示結果は6(=ファイルが読み取り専用です)となりましたので、Pro側のファイルへの取り込みが出来なかったことになります。
このエラー6の原因と対処方法を知りたいと思っています。

よろしくお願いします。

Last edited by Moriki Hagi (2019-08-29 16:26:55)

Offline

#20 2019-08-29 16:38:42

qb_dp
Member

Re: オフライン同期

>サーバーからのデータ取得が完了しました。 ←これは問題ない?
見慣れないと思っていたらコレは、Moriki Hagiさんが記述しているのですね。他の人には分かりません。

Shinさんが書いているのは

カスタムダイアログを表示[ タイトル: "!"; メッセージ: Get(最終エラー); デフォルトボタン: 「OK」, 確定: 「はい」]
if [ Get(最終エラー)=0 ]

だと カスタムダイアログを表示 の最終エラーが変えるので常に「0」になるので、以下のようにするという事です。

変数を設定 [$最終エラー; 値: Get(最終エラー)]
カスタムダイアログを表示[ タイトル: "!"; メッセージ: $最終エラー; デフォルトボタン: 「OK」, 確定: 「はい」]
if [ $最終エラー=0 ]
.....

>カスタムダイアログの表示結果は6(=ファイルが読み取り専用です)となりましたので、

Windows上のファイルの属性を確認してみては。

Offline

#21 2019-08-29 17:02:06

Moriki Hagi
Member

Re: オフライン同期

レコードのインポート指定で追加ではなく更新を指定して照合フィールドをアカウントIDにすると、追加したレコードがGoからProに送られました。
qb_dpさん、Shinさんご教示いただきまししてありがとうございました。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 573.64 KiB (Peak: 594.18 KiB) ]