8 返信 最新の回答 日時: Jan 16, 2015 6:32 PM ユーザー:sunnyheights

    レコードの特定フィールド内容の出現回数を知る方法

    sunnyheights

      タイトル

      レコードの特定フィールド内容の出現回数を知る方法

      フォーラムに投稿

      お世話になります。

      また、わからないことがでてきましたのでお尋ねします。

       

      当方の使用環境はMac OS Yosemite 10.10.1、FMP 13です。

       

       全レコードを調べて、あるフィールドの内容が何回出現しているかをカウントして、その値を知りたいのですが、どうも適当な関数が見当たりません。

       

       その値により、別のリレーションを張ったテーブルのフィールドの参照する場所を変えたいのです。

       

       GetField(”フィールド名”)とすればそのフィールドの内容を知ることができますが、レコードを横断的に調べる方法と、同じ内容の出現回数を知る方法を知りたくよろしくお願いします。

        • 1. Re: レコードの特定フィールド内容の出現回数を知る方法
          sunnyheights

          ちょっと思いついたのですが、、、

          出現回数を調べるのは、新たな集計フィールドを作り、そこをカウントにすれば良いですね。

          それとExact関数を使えば一致した内容がわかるような気がしますが、どう組み合わせれば良いのかが全くわかりません。

          よろしくお願いします

           

           

           

           

           

           

          • 2. Re: レコードの特定フィールド内容の出現回数を知る方法
            Shin

            そのフィールド内容がどのような物かによって若干変わると思いますが、

            完全一致しているレコードをカウントするのでしたら、リレーションを張って Count() することで可能かもしれません。

            部分一致している物でしたら、PatternCount() 関数で出現するかどうかをみて、そのレコード数をカウントする、という方法でしょうか。

            • 3. Re: レコードの特定フィールド内容の出現回数を知る方法
              sunnyheights

              Shinさん、

              またまたお世話になります。

              最初の質問は我ながら、要領を得ない書き方だったと反省しております。

              フィールドの内容はアルファベットの後にシリアル番号をつけたもので、ある商品の利用台帳のID番号として使用しています。

              利用台帳はLP−001から始まり現在はLP−700までのID番号が振られています。

              このID番号を利用して、時々変わる利用者の氏名、住所の管理をしたいと思っています。

              台帳には過去と最新の利用者の氏名、住所を記録しておくため、氏名1から氏名5まで、住所1から住所5までのようにn個のフィールドが作られています。

              過去の利用者と新しく利用者になった人に一枚の誓約書の上にサインをしてもらうため、別のテーブルを用意し、最終の利用者の氏名と住所を台帳から引っ張ってきたいのです。

              また誓約書の新利用者の氏名、住所が入力された時点で、リレーションを張った台帳の次の場所に書き込めるようにしたいと考えました。

              誓約書には商品名、ID、旧利用者氏名、旧利用者住所などのフィールドを設けて、台帳のリレーションを張りました。

              新利用者が1回目の時は問題ないのですが、2回、3回、、、と変わると最後の利用者の氏名、住所がうまくリレーションしなくなり困っていました。

              そこで、同じID番号が2回出現すれば台帳の2番目の氏名、住所を、3回出現すれば3番目の氏名、住所を引っ張ってくることを思いつき、質問をさせていただきました。

              新利用者については台帳のn番目+1に情報が書き込まれるようにするためにも、ID番号が何回出現したかを知りたいのです。

              Count()関数というのは集計フィールドのカウントのことでしょうか。具体的にどう使えばいいのかまだちょっとイメージが湧きません。

              引き続き宜しくお願いします。

               

               

               

               

               

               

               

               

              • 4. Re: レコードの特定フィールド内容の出現回数を知る方法
                sago350@未来Switch

                何か理由があってそういう設計なのかもしれませんが、こういうのはどうでしょうか。

                サンプル

                • 5. Re: レコードの特定フィールド内容の出現回数を知る方法
                  sunnyheights

                  Sago35さん、

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

                  今度もまた簡潔なサンプルをご提示いただきありがとうございます。

                  ポータル設定で行数を必要な数だけ作るというのは初めて見せていただきました。とても参考になりました。

                  私の設計が相変わらず稚拙なので、回りくどいことをしているように思います。

                  先に書きましたが、新旧利用者の双方に利用者が変わった際に一枚の誓約書を発行して、そこに捺印をもらうようにしています。

                  誓約の内容は、新利用者には規則順守、利用料金支払いなど、旧利用者には利用台帳データと、他の請求・入金データを参照して、未払い料金があった場合の精算の確約について捺印を求めています。

                  最初は利用台帳のレイアウトを変えてこれらを表示させようとしたのですが、台帳と全く異なる性格の情報も扱うため、別の誓約書データベースを作って、必要なフィールドに利用台帳と請求・入金台帳のリレーションを張ったわけです。

                  Sago35さんのサンプルの氏名欄はポータル設定で行数を指定して、最新利用者は氏名フィールドを指定するだけで行の最上段が表示されています。これを誓約書の新利用者にすれば、目的は達成できます。ところが旧利用者、いわゆる氏名欄の2行目を引っ張ってくる方法が分かれば目的を達することができます。

                  それからこのサンプル例では利用台帳に新利用者が記載されてから、誓約書に名前が出てくるのですが、プロセスの流れとしては誓約書に新利用者が書き込まれてから、利用台帳の新利用者に登録されるのが筋ですが、これは実際には差がないことであり、全く問題はありません。

                  ポータル設定の行の2番目を知る方法について何卒ご教示下さい。

                   

                   

                   

                   

                  • 6. Re: レコードの特定フィールド内容の出現回数を知る方法
                    Shin

                    1行ポータルを表示し、開始行を2にしておけば、2行目のポータルだけが表示されます。

                    昔の書類が欲しい時には、日付などでポータルをフィルターしておくか、現在のレコードより過去のみを表示するリレーションに変更すれば良いでしょう。

                    • 7. Re: レコードの特定フィールド内容の出現回数を知る方法
                      sunnyheights

                      Shinさん、

                       

                      どうもありがとうございます。

                      あ、なるほど開始行が指定できるとは知りませんでした。

                      今テスト用のものを作って、ポータル設定を行ってみたのですが、設定画面のどこを指定すれば開始行を変えられるのかわかりません。宜しくお願いします。

                       

                       

                      • 8. Re: レコードの特定フィールド内容の出現回数を知る方法
                        sunnyheights

                        どうも依然としてよくわかりません。

                        やりたいことをテストファイルを作ってやってみました。

                        誓約書の内容は画像のような内容です。

                        前使用者が新所有者に権利を譲る。前使用者に未払金があった場合はその金額を表示し、支払期日を明確にして捺印させる。

                        新使用者は、前使用者の権利を譲り受けて、規約を守ることに同意してもらい捺印させる。

                        これらの情報を利用履歴台帳に記載する。新利用者を台帳の最上段に引っ張ってくることはできましたが、前利用者の情報を2段目に書くことができません。

                        先に書きましたが利用台帳を先に記録して、誓約書には、その2段目を前利用者に、最上段を新利用者として書き込んでも全く問題はありません。このやり方がどうもわからないで悩んでおります。宜しくお願いします。