10 返信 最新の回答 日時: Feb 8, 2015 5:34 PM ユーザー:sunnyheights

    計算フィールドに文字を書き込めるようにする方法は?

    sunnyheights

      タイトル

      計算フィールドに文字を書き込めるようにする方法は?

      フォーラムに投稿

      いつもお世話になっております。

      環境はMac OS10.10.2、FMP13です。

      ちょっと困った問題が発生して、お力をお借りしたいと思います。

      幾つかのテーブルをリレーションで結んであります。

      このうち、請求書テーブルの氏名フィールドは、計算フィールドとなっていて別の商品台帳の氏名フィールドを指定して、氏名が自動的に入力できるようにしてあります。ところが、ある所有状態の客は、商品台帳の氏名フィールド以外の名前を入力しなくてなりません。しかし、計算フィールドにすると、このフィールドには自由に文字を入れることができません。何か関数を使って、ある条件の時だけ計算フィールドに文字が入力できるようにすることはできませんか。

      よろしくお願いします。

        • 1. Re: 計算フィールドに文字を書き込めるようにする方法は?
          sago350@未来Switch

          請求テーブルにもう一つフィールドを用意します。
          そこの値が入った時のみ、そちらのフィールドを優先する。という計算式を書けばいいかと。

          Case(
          not IsEmpty( もう一つフィールド ) ; もう一つのフィールド ;
          商品台帳の氏名フィールド
          )

          こんな感じで。

          • 2. Re: 計算フィールドに文字を書き込めるようにする方法は?
            sunnyheights

            Sago35さん、

            素早いご返事ありがとうございます。

            やはりもう一つフィールドを作るのが良いですか。それは画面に表示する必要はないですよね。

            早速やってみます。

            • 3. Re: 計算フィールドに文字を書き込めるようにする方法は?
              sunnyheights

               Sago35さん、

              どうもうまく動作しませんので、宜しくお願いします。

              商品台帳テーブルの氏名は、1、2、3、4と古いものから新しいものに時系列で変わっています。

              請求テーブルの請求先氏名は商品台帳テーブルの最新のものを引っ張ってくるように、氏名のEmptyの一つ前のものを探して、それを請求先氏名フィールド(計算フィールド)に入るようにしています。

              請求テーブルにはラジオボタンA、B、Cの条件があり、今回は例えばBの条件の時だけ、自由入力ができるようにしたかったのです。

              アドバイスに従って、請求テーブルにもう一つ、条件氏名フィールドを作りました。

              not IsEmptyではこのケースではいけないだろうと考え、

              条件氏名=
              Case(
              PatternCount( 条件 = "A" ; 請求先氏名);
              PatternCount( 条件 = "B" ; "");
              PatternCount( 条件 = "C" ; 請求先氏名)
              )

              のように記述しました。ところが、請求先氏名が、前述のように計算フィールドになっているせいか、条件氏名フィールドに入りません。条件氏名フィールドを計算フィールドにすれば入るのですが、当然のことながらBのときには入力ができません。

              いろいろ変えてみたのですがどうもうまくいきません。

              今一度お教え頂きたくお願いします。

               

               

               

              • 4. Re: 計算フィールドに文字を書き込めるようにする方法は?
                sago350@未来Switch

                Case(

                条件="B" and Not isempty (条件氏名) ; 条件氏名 ;

                請求先氏名

                )

                これで、どうですかね。

                 

                • 5. Re: 計算フィールドに文字を書き込めるようにする方法は?
                  sunnyheights

                  Sagoさん、

                  早速に恐れ入ります。

                  やっぱりうまくいきませんね。

                  条件Bの時は自由入力ができるのですが、他の条件のときは商品台帳の請求氏名が現れません。

                  フィールドを計算にすると現れるのですが、今度は当然ですが、条件に関わらず自由入力はできなくなります、

                  どこが間違っているのかいまだにわかりません。

                  • 6. Re: 計算フィールドに文字を書き込めるようにする方法は?
                    sunnyheights

                     

                    Sago35さん、

                    おかしな現象が発生しております。

                    元の請求氏名をコピーして、条件氏名に貼り付けてやると、当然その氏名は見えます。これを削除しても別のフィールドをクリックすると再びその氏名が出現します。条件Bのところは自由入力で入れたものを一旦消して、別のフィールドクリックで請求氏名が出現します。もう一度元の氏名を入れるとその名前がキープされます。

                    どうも、Sagoさんの記述で動作しているような気がしますが、画面に現れないのかもしれません。

                    Macをリスタートしてもこの現象は変わりません。

                    手作業で請求氏名を条件氏名にコピーし、条件Bだけを新たに入力すれば良いかもしれませんが、どうも釈然としません。

                    このような変な現象になる理由はなんでしょうかね。ちなみにRAMは8GBで今フリーの領域は2GBあります。Yosemiteでは変な現象(頻発現象はショートカットキーが使えないものがあるなど)が報告されているのですが、そんなものでしょうかね。

                    何か分かりましたらご教示ください。

                     

                    • 7. Re: 計算フィールドに文字を書き込めるようにする方法は?
                      sago350@未来Switch

                      せめて、どういう設定をしたのか書いてくれないと、さすがに解りません。
                      FileMaker Proのバグを疑う前に、現象の再現性を確認して同様の報告がないか確認した方がいいです。たいていは自分の設定ミスですので。

                       

                      サンプルファイル

                      • 8. Re: 計算フィールドに文字を書き込めるようにする方法は?
                        sunnyheights

                         

                        Sago35さん、

                        外出していて返事が遅れました。

                        また、サンプルをご提示いただきありがとうございました。

                        おかげさまで私の考えていた形式とSago35さんのお考えの違いが分かりました。

                        このサンプルを方法で動作としては完璧ですが、当方の実情はちょっと複雑でして、請求書本人の名前で振込/引落するひとがほとんどですが、中には家族の名前で送金してくる例が少なからずあるのです。このため名義氏名フィールドが請求氏名の下に設けてあります(フィールドは単純にテキスト指定です)。サンプルのように記述すると、条件氏名、請求氏名、名義氏名の3段並びになって(ほどんどのケースは条件氏名は隠れるのですが)、ちょっとややこしいと考えて、条件氏名がそのまま請求氏名に、つまり条件Bの時だけ、書き込みができるようにしたかったのです。

                        ご提示の方法で、オペレータが迷わず操作できるようにもう一度レイアウトを工夫してみます。

                        インスペクタのデータから動作枠に条件を書いて隠すというのは、こんなやり方があるのかと目からウロコでした。

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

                        • 9. Re: 計算フィールドに文字を書き込めるようにする方法は?
                          sago350@未来Switch

                          フィールドを重ねればいいのでは

                          • 10. Re: 計算フィールドに文字を書き込めるようにする方法は?
                            sunnyheights

                            Sago35さん、

                            あっ、そうですね。条件氏名を上にしておけば良いですね。

                            なるほど、そんな技がありましたか。

                            またまた目からウロコです。本当にありがとうございます。