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

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

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

You are not logged in.

Announcement

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


#1 2018-02-02 16:21:58

猫舌
Member

異なるファイル間でのやり取りについて

環境:WIN7 FM13

▼したいこと
メイン.fmp12 と データ.fmp12 と別ファイルになってます。

1.メイン.fmp12にてスクリプトを発動させる
2.メインのNO(シリアルナンバー)を記憶
3.データ.fmp12にて新規レコードを行う
4.データ.fmp12の参照NOフィールドにメインのNOを書込み

スクリプトとして下記の様に行いました。

------
①スクリプト(メインで作成)
変数を設定〔$A;値:メイン;;参照ID〕

②スクリプト(データで作成)
レイアウト切り替え〔「データ」〕

③スクリプト
スクリプト実行(①)
スクリプト実行(②)
フィールド設定〔データ::参照NO;$A〕
------

▼問題点
3.新規レコードを③にて連結する際に行いましたが
   メイン.fmp12の方に新規レコードが作成されました。

4.NOの書込みができません。

お手数をおかけ致しますがご教授のほどお願いいたします。

Offline

#2 2018-02-02 16:59:46

Shin
Member

Re: 異なるファイル間でのやり取りについて

2ファイルに分ける意味をもう一度考えて見られることをお薦めします。

変数は、ファイルに依存しますので、他のファイルからは呼び出せません。
また、メインファイルで動かすスクリプトは、メインファイルの中にオカレンスのあるテーブルに対してのみ有功です。そのスクリプトがメインファイルで動いているので、メインファイルにレコードを作り、そこにNOを設定していますので、データファイルには何も影響がないでしょう。
変数のあたいを引き渡すためには、上の動きでしたら、スクリプト引数 を使えばいいです。

全体の構造や運用がわかりませんが、一番簡単な方法は、メイン::NO から データ::NO にリレーションを張り、データ側のレコード作成を許可しておきます。その状態で、メインファイルの中で、データ::NO フィールドに、フィールド設定で NO を設定するといいです。

Offline

#3 2018-02-02 17:33:38

チポ
Member

Re: 異なるファイル間でのやり取りについて

他のファイルのスクリプトを動かすのに、
そのテーブルオカレンスは特に必要としないでしょう。

外部データソースとして指定されていればいいですね。


メインのレイアウトでデータの新規レコード作成するには、既に関連レコードがある場合、

> データ::NO フィールドに、フィールド設定で NO を設定
ではダメですね、
ポータルを置いて、その新規行に入力すればいいです。


データファイルのスクリプトで
  新規レコード作成
  フィールド設定 (Shinさんの通り、変数ではダメです)
としてもいいのでは。

Offline

#4 2018-02-03 01:59:44

猫舌
Member

Re: 異なるファイル間でのやり取りについて

Shinさん、チポさん
ご回答ありがとうございます。

------
①スクリプト(メインで作成)

変数を設定〔$A;値:メイン;;参照ID〕

②スクリプト(データで作成)

レイアウト切り替え〔「データ」〕
フィールド設定〔データ::参照NO;Get ( スクリプト引数 )〕

③スクリプト(メイン側のボタンで作動))

スクリプト実行(①)+ スクリプト実行(②)

------

▼データファイルにてスクリプト作成
新規レコード作成
フィールド設定〔データ::参照NO;Get ( スクリプト引数 )〕

データ.fmp12の方で、新規レコード出来るようになりました。
ですが、参照NOへの書込みに失敗します。

異なるファイル間では、変数が使用できないとの事ですが
どうすれば、参照NOへ書込みできるようになるのでしょうか?

お手数をおかけ致しますがご教授のほどお願いいたします。

Offline

#5 2018-02-03 09:55:27

Shin
Member

Re: 異なるファイル間でのやり取りについて

メインからデータのスクリプトを起動する時に、NOをスクリプト引数に設定しておけばいいです。

Offline

#6 2018-02-03 15:48:34

猫舌
Member

Re: 異なるファイル間でのやり取りについて

Shinさん
ご回答ありがとうございます。

ボタン設定、スクリプト実行よりスクリプトを選択する画面最下部に
あるオプションのスクリプト引数にて「メイン::NO」を指定しました。

▼実験1
データ.fmp12では新規レコードはされるものの、参照NOへの書き込みは失敗しました。
------
ボタン設定時のスクリプト引数で「メイン::NO」を指定

スクリプト(メイン)にて
スクリプト実行(①)+ スクリプト実行(②)を合体

内訳)
①スクリプト(メインで作成)
スクリプト実行〔「メインからデータへ書込み」,ファイル:「データ」〕

②スクリプト(データで作成)
新規レコード/検索条件
フィールド設定〔データ::参照NO;Get ( スクリプト引数 )〕
------

▼実験2
ボタン設定時に、データ側のスクリプトを直接指定しました。
データ.fmp12の参照ID書き込みに成功しましたが、データ.fmp12のNOにフォーカスが固定され
一度データデータ.fmp12内をクリックしないといけません。

強制フォーカスアウトするために
検索モードに切替[] ※一時停止を解除
ブラウズモードに切替[]

を追加しましたら、希望通りの動きが実現できました。

------
ボタン設定時のスクリプト引数で「メイン::NO」を指定

内訳)
①スクリプト(データで作成)

レイアウト切り替え〔「データ」〕
新規レコード/検索条件
フィールド設定〔データ::参照NO;Get ( スクリプト引数 )〕
ウインドウを閉じる〔現在のウインドウ〕
------

正しい方法かわかりませんが、希望していた動きが出来ました。
ありがとうございます。

スクリプト引数を別ファイルに引き渡す場合
呼び出しスクリプトの順番は関係あるのでしょうか?

Offline

#7 2018-02-03 17:23:18

Shin
Member

Re: 異なるファイル間でのやり取りについて

スクリプトの中で別のスクリプトを呼び出した場合、スクリプト引数は引き継がれませんので、改めて指定することが必要です。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 516.04 KiB (Peak: 520.58 KiB) ]