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

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

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

You are not logged in.

Announcement

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


#1 2021-06-04 10:08:22

FM19に戸惑う人
Guest

複数のスクリプト引数をうまく持っていけない

環境
FileMakerPro19(serverも使っています)
Windows10

タイトルの件、以下詳細を記します。
宜しくお願い致します。

①指示書テーブルにある3つのフィールドの値を、スクリプトで作成させる②納品書へ転記させようとしています。

①で以下の様にスクリプト因数を設定
変数を設定[$納品先1;値: 指示書::納品先名1]
変数を設定[$納品先2;値: 指示書::納品先名2]
変数を設定[$納品先担当者;値: 指示書::納品先担当者]
スクリプト実行[指定:一覧から;「納品書を作成」;引数:$納品先名1 & 納品先名2 & $納品先担当者]

②の「納品書作成」のスクリプト内で、
フィールド設定[納品書::納品先名1; GetValue ( Get ( スクリプト引数 );1)]
フィールド設定[納品書::納品先名2; GetValue ( Get ( スクリプト引数 );2)]
フィールド設定[納品書::納品先担当者; GetValue ( Get ( スクリプト引数 );3)]
として、各、「納品先名1」「納品先名2」「納品先担当者」のフィールドを埋めようとしています。

しかし、これを実行すると、
「納品先名1」のフィールドに、$納品先1 $納品先2 納品先担当者の3つの値が並んで記入されるだけで、
「納品先名2」、「納品先担当者」のフィールドは空欄になってしまいます。

そもそもやりたいことが出来ないことなのか、単にどこかの記載ミスなのか、
色々試してみましたがわかりませんでした。

対処方法はありますでしょうか?

#2 2021-06-04 10:15:45

ななし
Guest

Re: 複数のスクリプト引数をうまく持っていけない

引数に改行がありません
スクリプト実行[指定:一覧から;「納品書を作成」;引数:$納品先名1 & ¶ & 納品先名2 & ¶ & $納品先担当者]

#3 2021-06-04 10:36:23

qb_dp
Member

Re: 複数のスクリプト引数をうまく持っていけない

引数をjsonで渡すと値内に改行があっても気にしなくて良いのでおすすめです。

変数を設定 [ $json; 値:
Let([~json="" 
;~json=JSONSetElement ( ~json ; "納品先名1" ; 指示書::納品先名1 ; 1 ) 
;~json=JSONSetElement ( ~json ; "納品先名2" ; 指示書::納品先名2 ; 1 ) 
;~json=JSONSetElement ( ~json ; "納品先担当者" ; 指示書::納品先担当者 ; 1 ) 
];
 ~json 
) 
]
スクリプト実行[指定:一覧から;「納品書を作成」;引数:$json]

受け側:

変数を設定 [ $json; 値:Get ( スクリプト引数 )]
フィールド設定 [ 納品書::納品先名1; JSONGetElement ( $json ; "納品先名1" ) ]
フィールド設定 [ 納品書::納品先名2; JSONGetElement ( $json ; "納品先名2" ) ]
フィールド設定 [ 納品書::納品先担当者; JSONGetElement ( $json ; "納品先担当者" ) ]

Offline

#4 2021-06-04 10:48:54

FM19に戸惑う人
Guest

Re: 複数のスクリプト引数をうまく持っていけない

ななしさん
あれこれ試しているときに、改行も入れてみてたりしたのですがうまくいかずに質問するに至ったのですが、
その時は他に余計な記述載なども入れていたかもしれません。
ななしさんに指摘していただき、改めてシンプルにそのまま試したら、できました!
ありがとうございました!

#5 2021-06-04 11:03:57

FM19に戸惑う人
Guest

Re: 複数のスクリプト引数をうまく持っていけない

qb_dpさん、ありがとうございます。

json関数、確かに調べていくうちに出てきていて、これで出来るに越したことはないなと思いながら、
敷居が高く感じてしまい手を出していませんでした:汗

お教えいただいた式をそのままコピーして使ってみましたが、
「関数中の引数が多すぎます」と言うエラーが出てしまいました。
これはやはり、必要に応じてどこかを変更する必要があったのでしょうか?!

お恥ずかしながらこの「~」がなんなのかもわかっていません、
そのままで良いのか、なにかの略なのか、、、

#6 2021-06-05 00:16:29

FM19に戸惑う人
Guest

Re: 複数のスクリプト引数をうまく持っていけない

qb_dpさん、あいかわらず「~」が何なのかわかりませんが、
とりあえずなんとか教えていただいた式でエラーなくスクリプトは記述できました。

しかし、3つの値が、すべて納品先1のフィールドに記述されてしまいました。
どのように処置すればよろしいでしょうか?

#7 2021-06-05 16:24:17

まか
Guest

Re: 複数のスクリプト引数をうまく持っていけない

スクリプトステップ内で変数を設定を実行した時点の、$jsonがEmptyではない状況を想定して、
JSONの初期化と作成をLet関数の中で行うための、Let関数の中だけで使用する変数じゃないでしょうか?
($を、避けるべき記号以外に置き換え)

ちなみに、Let関数を使わない一例

変数を設定 [ $json; 値:
JSONSetElement ( "" ;
[ "納品先名1" ; 指示書::納品先名1 ; 1 ] ;
[ "納品先名2" ; 指示書::納品先名2 ; 1 ] ;
[ "納品先担当者" ; 指示書::納品先担当者 ; 1 ]
)

#8 2021-06-05 18:08:39

FM19に戸惑う人
Guest

Re: 複数のスクリプト引数をうまく持っていけない

まかさん、ありがとうございます。

Let関数を使わない一例、試させていただきました。
しかし、これでもやはり、納品先1のフィールドに、
以下のに3つの項目が並んで入ってしまいました。

■納品先1のフィールドに入力されたもの
{"納品先名1":"株式会社 ●●書店","納品先名2":"","納品先担当者1":"●井様"}
「{」なども、上記のまま入っています。

3つのフィールドにそれぞれ入れたいのですが、
どうすればよいでしょうか、、、?!

#9 2021-06-05 22:19:38

qb_dp
Member

Re: 複数のスクリプト引数をうまく持っていけない

スクリプトの何処かが間違っているので期待した動作にならないんですが、
何処が間違いかを指摘するには、そのスクリプトを見るのが一番早いです。
一番最初の質問の様に FM19に戸惑う人さんが書いたスクリプトを提示してもらえるとすぐに分かるでしょう。
「ツール」->「デザインデータベースレポート」でテキスト化したスクリプトの出力ができます。

あ~...コレかな?
#3で提示済の受け側のスクリプトは実装できていますか?
受け側:

変数を設定 [ $json; 値:Get ( スクリプト引数 )]
フィールド設定 [ 納品書::納品先名1; JSONGetElement ( $json ; "納品先名1" ) ]
フィールド設定 [ 納品書::納品先名2; JSONGetElement ( $json ; "納品先名2" ) ]
フィールド設定 [ 納品書::納品先担当者; JSONGetElement ( $json ; "納品先担当者" ) ]

※JSONSetElementの書き方は思い込みでややこしい書き方してましたね...まかさん、ありがとうございます。

Offline

#10 2021-06-05 23:02:41

FM19に戸惑う人
Guest

Re: 複数のスクリプト引数をうまく持っていけない

qb_dpさん、ありがとうございます!
そして、まかさん、ありがとうございます!

できました!

最後に、qb_dpさんに受け側のスクリプト実装の確認について指摘され、
確認したところ間違っておらず、どーなってんだ!となりましたが、
結論としては、その正しいスクリプトではなく、
let関数使用時のスクリプトの対で作っていた受け側スクリプトを実行させていました、、、。

なんともお粗末な理由で、大変申し訳ありません!!!!!
でも、おかげさまで、ともかく完成しました!

幼稚な質問に最後まで丁寧にお付き合いいただきまして、
本当に本当にありがとうございました!

まだしばらく、いくつものカスタムAppを作らなくてはならない為、
ここでまたご質問させていただくかもしれません。
これに懲りず又お付き合いいただければ幸いです:汗
宜しくお願い致します。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 540.35 KiB (Peak: 560.89 KiB) ]