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

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

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

You are not logged in.

Announcement

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


#1 2020-11-28 15:43:56

せー1
Guest

ファイルを開くスクリプトで複数ファイルを開くには?

Filemaker19で質問です。

FMS上にファイルが3つあるとして、Aファイルからスクリプトで[ファイルを開く]を設定しているのですが
一つしかファイルを開くことが出来ず、AファイルからBファイルを開いたまま、AファイルからCファイルを開いても
別ウィンドウで出てきません。Bファイルを閉じるとCファイルが開けるようになるのですが、
これをAファイルから[ファイルを開く]スクリプトでBとC同時に開くことは可能でしょうか?
お気に入りなどからですと同時に開けますが、ファイル数が多いためAファイルは接続用といった整理されたものとなります。

方法があればお教え下さい。宜しくお願いします。

#2 2020-11-29 10:22:28

himadanee
Guest

Re: ファイルを開くスクリプトで複数ファイルを開くには?

ウィンドウが表示されてないだけで、Cも開いているのでは?

開いてないとすれば、Bに「開いたときに動作するように設定されているスクリプト」があって「全スクリプト終了」で終わっていて、Aのスクリプトの続きが実行されてないとかですかね?

#3 2020-11-29 11:17:16

Moz
Member

Re: ファイルを開くスクリプトで複数ファイルを開くには?

himadaneeさんが書かれているように表示されていないだけでは?
[ウインドウ]メニューから[ウインドウを表示]で開いているファイルが表示されます。
非表示で開いているファイルは括弧で囲われています。「(非表示のファイル)」

沢山のファイルが開いていると[ウインドウを表示]に出ていないこともありますが、3個くらいなら表示されています。
確認してみては如何でしょう?

そこにも出ていないなら、2個目のファイルを開く処理まで到達できていないかも知れませんね。
FIleMaker Pro 19 ならスクリプトデバッガが使えますから確認すれば良いでしょう。

Offline

#4 2020-11-29 22:07:43

せー1
Guest

Re: ファイルを開くスクリプトで複数ファイルを開くには?

himadaneeさん Mozさん
ご返信ありがとうございます。AからBを開いたあとに、AからCを開くとBのファイルが最前面に出て選択状態になり
Cは開かれていないようです。
各レコードに別ファイル用のFMSのアドレスがあり接続URLフィールドとして fmp://~~~~~~/.fmp12があり
Aファイルのスクリプトでは
変数を設定で $filenameを接続URLにし
ファイルを開く [非表示の状態で開く:オフ; 「ファイル名」]  ファイル名はファイルパスを$filename
これでファイルを開いています。

Aファイルからは一度にBとCを開くスクリプトではないので、Bを開いたら一度スクリプトは終了してます。
そのあと同じスクリプトでAからCを開いても開けないといったものとなります。

>>[ウインドウ]メニューから[ウインドウを表示]で開いているファイルが表示されます。
AとBの2ファイル開いている状態で見てみましたが灰色で選択できませんでした。

#5 2020-11-29 23:10:21

Moz
Member

Re: ファイルを開くスクリプトで複数ファイルを開くには?

状況からみてBファイルのみ開いているようですね。
グレーアウトしているのは開いているファイルが他にないからです。

[ファイルを開く]スクリプトステップはファイル名の指定オプションはありません。
変数を指定することもできません。どこに変数を指定しているのでしょうか?
ファイルを開く

なお、[データファイルを開く]は変数が指定できますが、
これはホストされたファイルを開くスクリプトステップではありません。

スクリプトはひとつしかないというのがいまいちよく分かりません。
Bファイルを開くように作られているなら同じスクリプトではCファイルは開けないですよね。

ファイルパスがレコードにフィールドとして保存されていて、
Bファイルを開くレコードでBファイルを開き、
Cファイルを開くレコードに切り替えてCファイルを開こうとしているということでしょうか。
(前述の通り[ファイルを開く]ではパスの指定ができませんが......)

また、「fmp://」はファイルを開く場合のファイルパスではありません。
URLからファイルを開く場合のプロトコルです。
※有効にするためには各ファイルで「fmurlscript」拡張アクセス権の割り当てが必要です。
(拡張アクセス権はデフォルトで無効です。完全アクセスでも無効です)

その他に外部データソースのパスなら変数が利用できますが $$ のグローバル変数のみです。
この場合は一度データソースへのパスが確定すると変更はできませんから、
ひとつのデータソースで2つのファイルを開くことはできません。

Offline

#6 2020-11-30 20:43:33

せー1
Guest

Re: ファイルを開くスクリプトで複数ファイルを開くには?

Mozさんありがとうございます。
すいません。「fmp://」は間違いで 「fmnet:/」 でした。

スクリプトステップで

変数を設定[$filename; 値: 接続URL]    //接続URLは計算で fmnet:/~~~/●.fmp12 といった●を各ファイルに対応した値になっています。
ファイルを開く  [非表示の状態で開く:オフ; <不明>]   //不明の箇所はデータソースの管理にし、名前を「ファイル名」、ファイルパスを $filename にします。

これで現状ファイルを開いています。
一つをファイルをポータルとして複数ファイルを開きたいという方式としてはこのやり方では間違っているでしょうか?
宜しくお願いいたします。

#7 2020-11-30 21:51:55

Moz
Member

Re: ファイルを開くスクリプトで複数ファイルを開くには?

[ファイルを開く]で指定できるのは予め外部データソースで定義したファイルです。

AファイルからBファイルとCファイルを開きたい場合、
BファイルとCファイルをそれぞれ外部データソースとして定義しておき[ファイルを開く]でそれぞれのファイルを開きます。
[ファイルを開く]を2回実行すれば済みます。(面倒なことをして2回実行されないのは何故でしょう?)

[ファイルを開く]スクリプトステップで外部データソースにパスを変数で指定したなら
[ファイル]メニューの[管理]の「外部データソース」に定義されています。

外部データソースには名前が必要です。この名前を指定して開きます。
データソース名が「Bファイル」となっていてもCファイルのパスを指定することはできますから
データソース名と実際のパスの名前が矛盾していても問題ありません。

#5 で書きましたが、変数を使ったパス指定でデータソース名が開かれたとき
元ファイルを閉じるまでパスは成立したままとなります。(→別のパスを変数で指定しても無効です。)

今回のケースでは Bファイル のパスを変数で指定して開いた時点でデータソースのパスが成立しているので
同じスクリプトで別の変数を指定したとしてもCファイルが開くことはありません。

同じスクリプトで異なるファイルを開きたいなら、
[URLを開く]で「fmp://サーバーアドレス/ファイル名」なら可能です。
※こちらは前述の通り拡張アクセス権が必要です。

Last edited by Moz (2020-11-30 21:52:28)

Offline

#8 2020-11-30 23:10:19

せー1
Guest

Re: ファイルを開くスクリプトで複数ファイルを開くには?

>>AファイルからBファイルとCファイルを開きたい場合
これは常にAからBとCを開くというものではなく、30ほどあるファイルを同時に3~4開く時に選択して開く形です。

>>変数を使ったパス指定でデータソース名が開かれたとき
>>元ファイルを閉じるまでパスは成立したままとなります。(→別のパスを変数で指定しても無効です。)

なるほど!そういうことだったのですね。理解しました。
拡張アクセスつけて[URLを開く]に変更したところ、指定した複数ファイルを開くことができました。
Mozさん原因と解決策をご丁寧にお教えいただき、ありがとうございました。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 11 queries executed - Memory usage: 544.73 KiB (Peak: 565.64 KiB) ]