2 返信 最新の回答 日時: Aug 5, 2014 3:42 AM ユーザー:sunnyheights

    繰り返しフィールドのラジオボタン”はい”と”いいえ”をカウントする...

    sunnyheights

      タイトル

      繰り返しフィールドのラジオボタン”はい”と”いいえ”をカウントする方法

      フォーラムに投稿

           ナレッジベースには非常に簡単なカウント方法が載っています。

      計算フィールド(PatternCount 関数)と集計フィールドを使用します。
           
           たとえば、「回答」テキストフィールドにラジオボタン(チェックボックス)を設定し、その値の中で「はい」を選択している数を集計します。


      1.[フィールド定義] で「はい」計算フィールドを作成し次の計算式を定義します。
           
            はい(計算フィールド、計算結果は数字) =  
            PatternCount (回答 , "はい" )
           
           2.「はいの件数」という名前の集計フィールドを作成し、「はい」フィールドの合計にします。
           
           「回答」フィールドの他の値の数も集計する場合は、上記の方法で、値ごとに計算フィールドと集計フィールドを作成します。

           --------------------

       今、手がけているDBに応用すべく取りかかりましたが、どうもうまく行きません。

        

       例えば商品フィールドが5個あるとし、それぞれに顧客フィールド10個が繰り返しフィールドで作られています。

       顧客ランクは「一般」と「大口」が値一覧に登録されていて、ラジオボタンが一般と大口の2個がついています。

       この商品フィールド1に集計フィールドを設け、「一般」客の数と、「大口」客の数をそれぞれ足して表示したいのです。

            ナレッジベースのように

            一般集計=

            PatternCount ( 商品フィールド1; "一般")

       大口集計=

       PatternCount (商品フィールド1; "大口"

      しただけでは、当然一番上の顧客分しか合計してくれません。

       何とか10行目まで合計させるべく、いろいろ試しましたがうまく動作しません。

       例えば 顧客#というフィールドを作り、これも10個の繰り返しフィールドとして;

             一般集計=

            GetRepetition ( 商品フィールド1; 顧客#) & PatternCount ( 商品フィールド1; "一般")

      としたのですが、これも一番上の顧客が 大口なら、その下の顧客が一般でも、全て大口の客の数として合計してしまいます。

            

       どうも、どの関数を使ったら良いのか分かりません。

       なにとぞご教示のほどよろしくお願いします。

            

        

            

        • 1. Re: 繰り返しフィールドのラジオボタン”はい”と”いいえ”をカウントする...
          Shin

               集計は、商品ごと、または、レコードごとになりますか。それによって考え方が変わります。

               ファイルの構成に、いろいろと問題があります。 将来的にどのように発展させていきたいかで大きく変わるのですが、

               一般的な構築方法としては、 1商品1レコードにしたテーブル。
                商品名、商品IDなどのフィールド
               1顧客1レコードのテーブル。
                顧客名、顧客ID、顧客ランク、ランク区分_大口、ランク区分_個人 フィールドなど。
               その両方からリレーションを張った、関連テーブル
                顧客ID、商品ID
               を追加します。
               商品テーブルのレイアウトにポータルで関連テーブルを表示し、その中に顧客名、ランクを表示します。
               商品ごとに、Sum ( 関連テーブル::ランク区分_大口 ) を計算し、さらに、それを合計で集計すれば、求められます。
                

               今のままの構造で計算させるには、繰り返しフィールド毎に PatterCount ( 顧客ランク ; "大口" ) PatterCount ( 顧客ランク ; "一般" ) という2個の計算繰り返しフィールドを作り、Sum () を計算させ、それをさらに合計するフィールドを作れば、集計できます。ただ、商品が増えたりすると作り直しなどが発生する可能性が高いので、実験的な使用のみの方が良いでしょう。

               環境も書いてくださいね。

          • 2. Re: 繰り返しフィールドのラジオボタン”はい”と”いいえ”をカウントする...
            sunnyheights

                 Shinさん、

                  

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

                  お答えをいただきましたが、野暮用でご返事が遅れて済みません。

                  なるほど基本設計が悪いですか。

                  そうですね、やはり、1商品1レコードが基本になりますかね。また顧客もそれぞれ1レコードを取った方が良いということですね。

                  確かにそのようにすると拡張性が高まりますね。商品の数がこの後どうなるか分からないので、フレキシビリティがあったほうがいいですね。

                  まだ、DBを再設計する余地がありそうなので考え直してみます。

                  今の設計を活かそうとするならPatternCount (商品1  ; "大口")を繰り返しフィールドすること、分かりました。これはこれで勉強のためにやってみます。

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