みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
FM19で商品管理ファイルを作成しています。
流れはFMGoでバーコードを読み込み商品コードから該当の商品仕入れ入数を登録しています。
今回質問したいことは、商品管理ファイルでバーコードを読み込みした際に「はい」「いいえ」と選択画面(カードウインドウ)から「はい」を選択した場合に
別のデータファイルへ商品コードを渡したいと考えています。連携用フィールドを両ファイルに作成し×でリレーションしました。
データファイルは別途用途で入力するので、商品管理ファイルを経由してデータファイルに入力する場合と直接データファイルへ入力を行う場合があります。
他のトピックからいろいろ試していますが、うまくできずにいます。
【試したこと①】
商品管理ファイルとデータファイルの商品コードでリレーションを行ってみましたが、商品コードは入らず
【試したこと②】
他のトピックから変数はファイル間では受け渡しができないとのことで、スクリプト引数で受け渡す必要があるみたいでしたので初心者ながらに考えて・・・
・送る側(商品管理ファイル)のスクリプト
ファイルを開く(開きたいデータファイル)
スクリプト実行(一覧から、データファイルのスクリプトを選び、引数に商品コード
・受ける側(データファイル)のスクリプト
新規レコード
計算結果を挿入(入れたいフィールドを指定、get(スクリプト引数)
計算結果を挿入ではなくフィールド設定にしてみたりいろいろ変更して試しすぎてまったくわからなくなってしまいました。。。
1.について
リレーションは値を渡す方法ではないので不適です。
※無理矢理リレーションで渡すこともできますが後で見直した人が分からなくなるようなトリッキーな技術は使わないほうが良いでしょう。
2.について
[計算結果を挿入]でも[フィールド設定]でもスクリプト引数で他のファイルの値を渡すことはできます。
うまく渡せていないということでしょうか?
スクリプトデバッガ・データビューアを使ってフィールドや関数の戻り値を確認しては如何でしょう。
データファイルのスクリプトに引数を渡すとき、「商品コード」フィールドに値は入っていますか?
データファイルのスクリプトで Get ( スクリプト引数 ) を見たとき、値は渡せていますか?
Last edited by Moz (2022-11-22 10:34:09)
Offline
1については、わかりました。今後のこともかねて肝に銘じます!
2についてですが、もしかしたらいろいろ変更しすぎてリレーションも触っていたためかもわからないのでもう一度試作でやり直しますが、うまく値が渡せていないようです。
データビューアを使ったことがなくて、やり方がわかりません。調べてみます。
今は、実際に処理をしてためしていました。
データビューアはまだ確認できていませんが、今試作でやり直すとPCでスクリプトを動かすと商品管理ファイルからデータファイルへ書き込みが(商品コードが入った状態で)できています。
だけど、FMGoで試すとできないようです。どのようにするのかがわかりません。
やり直したファイルどうしはリレーションはしていません。
・送る側(商品管理ファイル)のスクリプト
変数を設定(名前:$商品コード、値:商品コード)
ファイルを開く(開きたいデータファイル)
スクリプト実行(一覧から、データファイルのスクリプトを選び、引数に$商品コード
・受ける側(データファイル)のスクリプト
新規レコード
フィールド設定(ターゲット:データファイルの値を入れたいフィールド、計算結果:Get(スクリプト引数)
うまく値が渡せていないときは以下のようなことが考えられます。
・そもそも元のファイルで「商品コード」の値が取得できていない
→引数を渡すスクリプトが実行されているとき、渡したい値の「商品コード」フィールドがあるレコードを表示できているか?
・渡す先のファイルで目的のフィールドに値を設定できていない
→フィールド設定をするとき、設定したい「商品コード」フィールドがあるレコードを表示できているか?
最初のうちはレイアウトに目的のフィールドが配置され、値も表示されていることを確認しながら進めると良いでしょう。
デバッガもデータビューアも使わずにいきなりスクリプト実行するともし致命的な問題があったときに取り返しが付かなくなります。
少なくともまずはデバッガで確認する癖を付けられることをおすすめします。
Last edited by Moz (2022-11-22 11:11:16)
Offline
書いているうちに次が投稿されたのですね。
FileMaker Go からはどのようにファイルを開いていますか?
iOS 端末にファイルを入れているならば、ファイルは2つとも入れなければ動きません。
書かれている状態ならどこかでエラーダイアログが表示されると思います。
[エラー処理]オンがスクリプトの冒頭またはいずれかに入れられていませんか?
[エラー処理]オンは FileMaker が出すダイアログを抑制してしまうので、スクリプトの問題点を見逃す原因になります。
少なくともスクリプトが希望通りに動くまでは入れないことをおすすめしますし、オンにしてもオフに戻します。
※[エラー処理]オンをスクリプト冒頭に入れることを勧めている教本や指導者はクソです。
Last edited by Moz (2022-11-22 11:16:14)
Offline
デバッガは使用していましたが、特にエラーが出ていなかったのでFMGoで試したのですが値が入らなかったのでいろいろ変更しすぎてわからなくなってしまったのです。
今、もう一度試作でやり直してからデータビューアで確認したのですが、値に正しくはいっているのですが、iPadやiPhoneで処理すると入らないです。
FMGoはクラウドを使用しているのでクラウドへアップロードしてみています。
※[エラー処理]オンをスクリプト冒頭に入れることを勧めている教本や指導者はクソです。
→エラーがでなくていいところもありそうでしたが、初心者にはたしかによくないですよね。
PCの FileMaker Pro でうまく動いているのはローカル環境でしょうか?
また、クラウドというのは FileMaker Cloud なのか AWS などに自分で FileMaker Server を入れたのかどちらでしょう?
問題の原因を切り分けるために、まずはクラウドのファイルを FileMaker Go ではなく、
FileMaker Pro から開いて実行したときにどうなるか確認されると良いでしょう。
それで動かないなら外部データソースの指定に問題がある可能性があります。
逆にファイルをすべて FileMaker Go を実行する端末に入れて実行したときは動くかどうか確認しても良いでしょう。
Offline
FileMaker Cloudでのファイルになります。
FileMaker ProもiPhone、iPadもFileMaker Cloudにアップしたファイルを開いています。
FileMaker ProでPCで開いた際は問題なく値がでています。
もう一度確認してみます!
データファイルのアクセス権なのでは。
Offline
iPhoneのFMGoで試すと「「商品コード」は値を必要とするように定義されていますが、このレイアウトでは利用できません。・・・」とでます。
何か関係がありますか?
Proで開くとでません。
テストでアップロードしており、一応、完全アクセス権でPCとiPadともに同じ自分のアカウントでログインしています。
念のため双方のファイルの fmapp の拡張アクセス権を確認しましょう。
Claris ID 認証で完全アクセスを割り当てているならアクセス権セットが異なっているということはないでしょう。
#11 のエラーダイアログがでるのはデータファイルですか?
また、FileMaker Go 用にレイアウトを分けていますか?
いずれかの「商品コード」のフィールドオプションで入力値の制限に「空欄不可」が設定されていて、レイアウトにフィールドが配置されていないのでしょう。
例えばフィールドオプションを後から設定して、設定より前に作成されたレコードの「商品コード」が空欄になっていると表示されます。
まだ稼働していないなら少なくともフィールドオプションを設定してあるテーブルから空欄のレコードは削除しておきましょう。
Offline
受ける側のスクリプトで、
カスタムダイアログで、Get ( スクリプト引数 ) を確認してみてはいかがでしょう。
データビューワーで確認されてもいいです。
Offline
Mozさん、アクセス権は同じでした。
エラーダイアログは、データファイル側(受け取り側)で出ています。
FMGoでも同じレイアウトで確認しています。
確かに、データファイル側の商品コードは必須項目にしたかったので、「空欄不可」にしていました。
これが原因でしょうか?
現時点では、データがない状態の試作で試していたので、作成されるとそれがデータファイル上では1レコード目になります。
Shinさん、PCだとカスタムダイアログを表示で「商品コード」が出ています。iPhone(FMGo)では出ませんでした。
データファイルにももしかして問題があるのかもしれないのでしょうか?
どちらも試作なのでまだ作成中なのですが、データファイルのテーブルなど以下となります。この中に問題ありますかね?
テーブル:商品一覧
フィールド:商品コード(数字)、商品名(入力値の自動化:計算値にRightValues( Self ; 1 )、入力値の制限:空欄不可、値一覧
エラーダイアログの原因はそれです。
新規レコードを作成して、「商品コード」をスクリプト引数で受け取って値を入れる前提なので
スクリプト引数の受け取りに失敗すると、レコードを確定しようとしたときエラーダイアログが表示されます。
shinさんの提案についてはデータファイルのスクリプトのどのタイミングでカスタムダイアログを表示させたのでしょう?
表示させたのは Get ( スクリプト引数 ) ですよね?
現時点ではどちらのファイルというのは時期尚早です。
どちらかといえばデータファイルより、商品管理ファイル側に問題があるように思います。(値が渡せていない。)
うまく渡せていない可能性があるので商品管理ファイルのスクリプト中で
データファイルを開く手前でカスタムダイアログに「商品コード」を表示してみましょう。
この時点で「商品コード」が表示されないなら、レイアウトまたはレコードに問題があります。
※違うテーブルのレイアウトを表示しているとか、商品コードが空のレコードを表示しているとか。
他にも計算式内で指定している「商品コード」が正しい テーブル名::商品コード になっているか確認しましょう。
リレーションを弄っているときに誤ってテーブルオカレンスを増やしてしまい、異なるテーブルオカレンスを指定している可能性もあります。
入力値の自動化の計算式の目的は何でしょうか?
入力値の制限の値一覧の制限は何のためにしていますか?
(これは値一覧にない値が入力されたとき警告が表示されます。)
Last edited by Moz (2022-11-22 13:02:09)
Offline
Mozさんの仰る通り、PCで商品管理ファイルにカスタムダイアログを表示(商品コード)にすると値がでませんでした。
言われた通り確認したところ、商品コードはデータベース(商品管理ファイルの別のテーブル)からのフィールドでした。
なぜ、PCで確認した際には受け側のデータファイルのカスタムダイアログには値が表示されるのでしょうか?
データファイルのほうで値一覧から入力する際に用いるために1つしか選択できないようにする方法を探していたところほかのトピックでみてためしていました。
商品コードが空欄では困るので制限をかけてカスタムダイアログで入力するように文章をいれてました。
多分試作を作成しては破棄してコピーしていたところからやり直して・・を繰り返すうちにどこかで間違ったまま進めてしまっているような気がしてきました。
もう一度最初から作成し直すほうがいいのかもしれません・・・
ちなみに、お題の質問のスクリプトの作成自体は間違いではないという認識でいいのでしょうか?
カスタムダイアログに値が表示されるのは表示している値が空ではないからでしょう。
カスタムダイアログで何を表示したのか分からないので(引数なのかフィールドそのものを指定したのか)原因を特定するには情報が足りません。
ここで大切なのは PC で表示された原因を探ることではなく、スクリプト引数での指定を正しく行うことです。
スクリプトでフィールドの値を取得・設定するときは、レイアウトに設定されているテーブルオカレンス(以後TOと表記)及び関連TOのフィールドを指定します。
例えばレイアウトには「商品管理」TOが設定されているのなら、スクリプトでも「商品管理 」TOを指定しなくてはいけません。
もし、「商品管理 2」を指定してなぜかうまく動くことがあっても、それは正常動作ではないので直す必要があります。
他のファイルに値を渡す方法としては
他のファイルのスクリプトにスクリプト引数として渡して、他のファイルのスクリプトで受け取る流れであっています。
Last edited by Moz (2022-11-22 13:38:46)
Offline
Mozさん、回答そびれていました。
shinさんの提案についてはデータファイルのスクリプトの一番初めでカスタムダイアログを表示させて表示させたのは Get ( スクリプト引数 ) です。
商品管理ファイルを作成したときはデータファイルに値を渡すためではなくただ入力することを目的としていたので途中で方向性がかわってしまったためいろいろ変更かけすぎたようです。
まだまだ理解できずヘルプを何度も読み返したりしていますが、正しく指定できるように何度もやって理解できるようになりたいと思います。
なんとなくベースの形はありますし、構造も今回の件で新たに考え直したのでもう一度作成してみます。
いろいろ教えていただき大変勉強になりました!
また、わからなくなったらよろしくお願いします。
私も、
> どちらかといえばデータファイルより、商品管理ファイル側に問題があるように思います。(値が渡せていない。)
に同じ意見ですが、なんか変ですね。
そのファイルそのものを見せていただけたら、何とかなるかもしれません、
Offline
Shinさん、ファイルはどうやって見せればよいのでしょうか?
よくURLでファイルを見かけますが、恥ずかしながら見てもらいたいですがアップの仕方がわかりません。。
何度もすみません。いろいろ教えていただき、値を渡す部分のみで同じようにファイルを作成して試してみたのですが、iPhoneではやはりうまくいきませんでした。
PC(Pro)で、やると受け取り側のファイルでは値ははいります。どこかが間違っていると思うのですが、わかりません。。。
カスタムダイアログを表示で確認しても値はでてこないです。
データビューアで確認すると途中までは値が入っているのですが、受け側になった際になくなっています。
もともと作成していた商品管理ファイルの値の受け渡しの部分を作成したファイルをアップロードしたいのですが、どのようにアップロードすれば見ていただけますでしょうか?
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 627.2 KiB (Peak: 659.73 KiB) ]