8 返信 最新の回答 日時: Dec 6, 2016 2:56 AM ユーザー:inoue

    変数の継承方法

    inoue

      FMバージョン=FM15

      FMSバージョン=FMS15

      A.fmp12=共有設定 ユーザー複数

      B.fmp12=共有設定 ユーザー複数

       

      A.fmp12 で作成したグローバル変数 $$X を B.fmp12 に流用したいと思っています。

      A.fmp12からB.fmp12を開いているので、A.fmp12     は閉じていません。$$Xは存在しています。

      そこで、 $$X の内容を B.fmp12 のグローバル変数 $$Y に転記したいと考えています。

      実際の式では在りませんが $$Y = $$X にしたいと思っています。

      タイミングはA.fmp12からB.fmp12を呼び出すタイミングで継承したいと考えていますが、実際にはB.fmp12の中の処理になるとは理解しています。

      A.fmp12 のユーザーは複数存在します。そのユーザーごとに $$X を使いたいので、テーブルだと上手く処理できませんでした。

       

      FAQを参考にしたのですが、上手く行きませんでした。多分やり方が悪いのだと思いますが・・・。

       

      皆さま、よろしくご教示ください。

        • 1. Re: 変数の継承方法
          user14047

          A.fmp12から [スクリプト実行] スクリプトステップで B.fmp12のスクリプトを呼び出す際に、スクリプト引数で $$X の値を指定し、B.fmp12のスクリプトの頭で、Get ( スクリプト引数 ) 関数を使ってその値を取得するのがわかりやすいかと思います。

           

          FileMaker Pro 15 ヘルプ : スクリプト実行

          FileMaker Pro 15 ヘルプ : Get ( スクリプト引数 )

          • 2. Re: 変数の継承方法
            qbxxdp

            以下の様にすると、ファイル間の複数データの受け渡しが容易になります。

             

            送信元ファイルのスクリプト引数の指定

            {

            "$a=" & Quote ( test::f1 ) &

            ";$b=" & Quote ( test::f2 )

            }

             

            受信ファイル側

            {

            変数を設定 [$er; 値:Evaluate ( "Let ( [" & Get ( スクリプト引数 ) & "] ; 0 )" )]

            カスタムダイアログを表示 [$b; $a]

            }

            FILEMAKER プラグイン WINDOWS専用 など: FileMaker|異なるファイル間での複数データの受け渡し

             

             

            どうしても「グローバル変数」でないとイケない理由がなければ、ファイル間でのデータの共有は、

            「グローバルフィールド」の方が向いています。

            • 3. Re: 変数の継承方法
              sago350@未来Switch

              最終的な目標がファイルをまたいで値を渡したいのなら、「A.fmp12」の中に「B.fmp12」のテーブルを外部参照のテーブルとして定義してやれば

               

              変数に格納

              レイアウト切り替え

              (ここで新規レコードか検索か)

              フィールド設定

               

              といった具合に渡せるかと。

              • 4. Re: 変数の継承方法
                inoue

                user14047様

                 

                早々のご回答ありがとうございました。

                 

                一応ご指示の形式を、以前もやってみたのですが、スクリプト内の指定が違っているのでしょうか、上手く行きませんでした。

                 

                >$$X の値を指定し、

                とありますが、実データが必要なのでしょうか?

                 

                引数項目に『$$X』と指定して見たのですが、違いますでしょうか?

                また、Getの設定はB.fmp12の指定レイアウトでスクリプトトリガーの『OnLayoutEnter』に書いています。

                これもまずいのでしょうか?

                 

                お手数をお掛けします。よろしくご指導下さい。

                • 5. Re: 変数の継承方法
                  inoue

                  qbxxdp様

                   

                  早々のご回答ありがとうございました。

                   

                  ご指定のURLの内容を確認させていただきます。

                  • 6. Re: 変数の継承方法
                    inoue

                    sago350@未来Switch様

                     

                    早々のご回答、ありがとうございました。

                     

                    ご指定の手法は初期にやってみました。その後、B.mfp12 の内容が変更されることが想定されたために、A.fmp12 から参照したままにしておくと、メンテナンスの時点で支障がありそうだったので、B.fmp12 での処理にしたいと思い、投稿させていただきました。

                     

                    ご指導ありがとうございました。

                    • 7. Re: 変数の継承方法
                      user14047

                      引数項目に『$$X』と指定して見たのですが、違いますでしょうか?

                      また、Getの設定はB.fmp12の指定レイアウトでスクリプトトリガーの『OnLayoutEnter』に書いています。

                      これもまずいのでしょうか?

                      どこに引数を設定していますか?

                      OnLayoutEnter スクリプトトリガの設定で引数にグローバル変数 $$X の値を設定しても、すでに B.fmp12 に移っているわけですから、A.fmp12 のグローバル変数は引き継がれません。

                      A.fmp12 から B.fmp12 を呼び出すタイミングとは、どのように呼び出していますか?

                      A.fmp12から [スクリプト実行] スクリプトステップで B.fmp12のスクリプトを実行するようにして、そのスクリプト引数で $$X の値を指定してみてください。

                       

                      # もしかして、A.fmp12 のグローバル変数は、$$X の値はいろんなタイミングで都度変わっていくものですか?

                      # その変更されづつける $$X の値を B.fmp12 でも逐次反映させたい。という話ですか?

                      # もし、そのような利用法でしたら、qbxxdp さんがおっしゃったように、変数ではなくグローバルフィールドにするか、

                      # sago350@未来Switch さんがおっしゃったように、B.fmp12 を外部参照とするテーブルオカレンスを A.fmp12 においてしまって、スクリプトは A.fmp12 で完結させるようにされた方がいいかと思います。

                       

                       

                      無料で始められる FileMaker : 公式トレーニングカリキュラム FileMaker Training Series 基礎編や、有償ですが FileMaker Master Book 初級編/中級編/上級編 などで基本事項を整理されることから始められた方が、この先が楽になるかと思いますよ。

                      その他にも、FileMaker : ラーニング のページには、動画で学べる 録画Webセミナー (無料)や、ヘルプのように使える FileMaker 関数・スクリプト ビギナーズガイド などの紹介がありますので一度覗いてみてください。

                       

                      FileMaker : イベント/セミナー のページの下の方に、FileMaker Master Training があり、先ほど紹介した FileMaker Master Book を基にした有料のトレーニングがあります。開発の第一線で活躍されている有名な講師の方々から直接指導していただけるので、お金はかかってしまいますが、その分習得のスピードは早いかと思います。

                       

                      また、iOS デバイスで使える Help for FM(FileMaker のヘルプ)もあると便利かと思います。AppStore から無料でダウンロードできます。iPhone でも利用できますし、電波の入らないオフライン状態でもいつでも 気軽にヘルプを検索することができます。

                      • 8. Re: 変数の継承方法
                        inoue

                        user14047様

                         

                        各種のご指導、感謝申し上げます。

                        自己流の解釈があったようでした。Aを閉じていないから、$$Xは存在している、との思いから、Bで読み込もうとしていました。

                        仰るように今一度、勉強し直してから改めて出直します。

                         

                        ありがとうございました。