みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
環境
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」、「納品先担当者」のフィールドは空欄になってしまいます。
そもそもやりたいことが出来ないことなのか、単にどこかの記載ミスなのか、
色々試してみましたがわかりませんでした。
対処方法はありますでしょうか?
引数に改行がありません
スクリプト実行[指定:一覧から;「納品書を作成」;引数:$納品先名1 & ¶ & 納品先名2 & ¶ & $納品先担当者]
引数を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
ななしさん
あれこれ試しているときに、改行も入れてみてたりしたのですがうまくいかずに質問するに至ったのですが、
その時は他に余計な記述載なども入れていたかもしれません。
ななしさんに指摘していただき、改めてシンプルにそのまま試したら、できました!
ありがとうございました!
qb_dpさん、ありがとうございます。
json関数、確かに調べていくうちに出てきていて、これで出来るに越したことはないなと思いながら、
敷居が高く感じてしまい手を出していませんでした:汗
お教えいただいた式をそのままコピーして使ってみましたが、
「関数中の引数が多すぎます」と言うエラーが出てしまいました。
これはやはり、必要に応じてどこかを変更する必要があったのでしょうか?!
お恥ずかしながらこの「~」がなんなのかもわかっていません、
そのままで良いのか、なにかの略なのか、、、
qb_dpさん、あいかわらず「~」が何なのかわかりませんが、
とりあえずなんとか教えていただいた式でエラーなくスクリプトは記述できました。
しかし、3つの値が、すべて納品先1のフィールドに記述されてしまいました。
どのように処置すればよろしいでしょうか?
スクリプトステップ内で変数を設定を実行した時点の、$jsonがEmptyではない状況を想定して、
JSONの初期化と作成をLet関数の中で行うための、Let関数の中だけで使用する変数じゃないでしょうか?
($を、避けるべき記号以外に置き換え)
ちなみに、Let関数を使わない一例
↓
変数を設定 [ $json; 値:
JSONSetElement ( "" ;
[ "納品先名1" ; 指示書::納品先名1 ; 1 ] ;
[ "納品先名2" ; 指示書::納品先名2 ; 1 ] ;
[ "納品先担当者" ; 指示書::納品先担当者 ; 1 ]
)
まかさん、ありがとうございます。
Let関数を使わない一例、試させていただきました。
しかし、これでもやはり、納品先1のフィールドに、
以下のに3つの項目が並んで入ってしまいました。
■納品先1のフィールドに入力されたもの
{"納品先名1":"株式会社 ●●書店","納品先名2":"","納品先担当者1":"●井様"}
「{」なども、上記のまま入っています。
3つのフィールドにそれぞれ入れたいのですが、
どうすればよいでしょうか、、、?!
スクリプトの何処かが間違っているので期待した動作にならないんですが、
何処が間違いかを指摘するには、そのスクリプトを見るのが一番早いです。
一番最初の質問の様に FM19に戸惑う人さんが書いたスクリプトを提示してもらえるとすぐに分かるでしょう。
「ツール」->「デザインデータベースレポート」でテキスト化したスクリプトの出力ができます。
あ~...コレかな?
#3で提示済の受け側のスクリプトは実装できていますか?
受け側:
変数を設定 [ $json; 値:Get ( スクリプト引数 )]
フィールド設定 [ 納品書::納品先名1; JSONGetElement ( $json ; "納品先名1" ) ]
フィールド設定 [ 納品書::納品先名2; JSONGetElement ( $json ; "納品先名2" ) ]
フィールド設定 [ 納品書::納品先担当者; JSONGetElement ( $json ; "納品先担当者" ) ]
※JSONSetElementの書き方は思い込みでややこしい書き方してましたね...まかさん、ありがとうございます。
Offline
qb_dpさん、ありがとうございます!
そして、まかさん、ありがとうございます!
できました!
最後に、qb_dpさんに受け側のスクリプト実装の確認について指摘され、
確認したところ間違っておらず、どーなってんだ!となりましたが、
結論としては、その正しいスクリプトではなく、
let関数使用時のスクリプトの対で作っていた受け側スクリプトを実行させていました、、、。
なんともお粗末な理由で、大変申し訳ありません!!!!!
でも、おかげさまで、ともかく完成しました!
幼稚な質問に最後まで丁寧にお付き合いいただきまして、
本当に本当にありがとうございました!
まだしばらく、いくつものカスタムAppを作らなくてはならない為、
ここでまたご質問させていただくかもしれません。
これに懲りず又お付き合いいただければ幸いです:汗
宜しくお願い致します。
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 540.35 KiB (Peak: 560.89 KiB) ]