8 返信 最新の回答 日時: Jul 24, 2014 1:02 AM ユーザー:sunnyheights

    別テーブル(複数)の繰り返しフィールドを持って来たい

    sunnyheights

      タイトル

      別テーブル(複数)の繰り返しフィールドを持って来たい

      フォーラムに投稿

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

           以前沢山のアドバイスをいただいたおかげで、今取り組んでいるDBは大分完成に近づいたように思います。

           しかし、どうも最後の難関で引っかかりました。

           お助けください。

            

           商品A、商品B、商品C、、、、があります。この商品は、数年ごとに値上がりが見込まれるものとします。

           顧客のランクが「一般」、「大口」、「特待」の3ランクがあり、それぞれの商品単価が異なります。

           顧客ごとに請求金額を決定するレコードを作り、入金記録も残したいと思い、添付のような「請求・入金管理表」テーブルを作りました。

            ある年度の商品価格は別の顧客ランクごとに3種類(「一般」、「大口」、「特待」)の基準請求額表を作り、請求・入金管理表のラジオボタンの顧客ランクを選ぶと、それぞれの基準請求額表のある年度の単価を引っ張って、「年度商品A価格」、「年度商品B価格」、「年度商品C価格」に反映されるようにしたいと考えました。

           さらに、その年度に購入した数量を掛けて請求・入金管理表の請求欄に計算結果を落とし込むようにしました。

            

            

            ところが、基準請求額表の最初の1行目は引っ張って来れるのですが、2行目以降が無視されます。 

            

            Case (PatternCount( 顧客ランク ; "一般" ) ; 「一般」基準請求額表::g商品A[g適年#] ; 

                    PatternCount( 顧客ランク ; "大口" ) ; 「大口」基準請求額表::g商品A[g適年#] ; 
                    PatternCount( 顧客ランク ; "特待" ) ; 「特待」基準請求額表::g商品A[g適年#]
           )

            

            繰り返しフィールドの2行目以降を表示させるにはどのようにしたら良いのでしょう。

            さらに表下部の請求額も1行だけうまく計算結果が反映されるのですが、2行目以下に思ったような表示をさせる方法が分かりません。

            どうも自分の実力を超えたことをやろうとしているようですが、なにとぞよろしくお願いします。

            

      %E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2014-07-23_10_35_01.png

        • 1. Re: 別テーブル(複数)の繰り返しフィールドを持って来たい
          sago350@未来Switch

               これでうまくいきませんかね

               Case (
               PatternCount( Extend ( 顧客ランク ) ; "一般" ) ; 「一般」基準請求額表::g商品A[g適年#] ; 
               PatternCount( Extend ( 顧客ランク ) ; "大口" ) ; 「大口」基準請求額表::g商品A[g適年#] ; 
               PatternCount( Extend ( 顧客ランク ) ; "特待" ) ; 「特待」基準請求額表::g商品A[g適年#]
               )
                
               顧客ランクが非繰り返しフィールドなのが原因が気がします。
          • 2. Re: 別テーブル(複数)の繰り返しフィールドを持って来たい
            sunnyheights

                 sago35さん、

                  

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

                  ご指摘バッチリです。

                  なるほど、これが顧客ランクが非繰り返しフィールドだから、ここにExtend関数を入れてやれば良いということですね。

                  いや、助かりました。ありがとうございました。

                  請求額も同じ適年#を入れてやれば反映するはずですね。この部分に取りかかります。

            • 3. Re: 別テーブル(複数)の繰り返しフィールドを持って来たい
              sunnyheights

                   しまった。

                   sago35さんの回答にベストアンサーを選んだつもりが、自分の回答にチェックを入れてしまいました。

                   お恥ずかしい。

                   sago35さん、お許しを。

              • 4. Re: 別テーブル(複数)の繰り返しフィールドを持って来たい
                sunnyheights

                     引き続き質問です。

                     別の顧客ランク別の「基準請求額表」をある年度の請求額表に落とし込むことは、先に書きましたようにsago35さんのご指摘の、Extend関数を入れてやることで無事に表示できるようになりました。

                     ここで、この基準請求額をベースに購入個数を掛けて半年ごとの請求額を作り込まねばならないのですが、新たな問題が発生しました。

                     それは、請求・入金は繰り返しフィールドを20個(これで10年分)作ってありますが、基準請求額表は3年ぐらいに一度しか価格の変更が無いということで、4個の繰り返しフィールドになっています(先の例では(g適年#)としました)。つまり、繰り返しフィールドの数が違うため、やむを得ず、別の20個の繰り返しフィールドを作り、よく似た名前ですが(g適年No)として、フィールドの定義にはg適年No = g適年#としたのですが、全く反応しません。何か関数を入れなければならないように思うのですが、よくわかりませんので、お教えください。

                     それと、今頃になって気づきましたが、集計は繰り返しフィールドでは、全部が足されたものが表示されるのですね。集計に先に述べたg適年#のような、年度ごとに集計する機能は備わっていないのでしょうかね。もし、出来ないなら、今のうちに請求・入金の繰り返しフィールドを商品ごとに20個作り直す必要があるのでしょうか。この辺りについてもご教示いただきたくお願いします。

                • 5. Re: 別テーブル(複数)の繰り返しフィールドを持って来たい
                  sago350@未来Switch

                       解決策としては、繰り返しフィールドの数を同じにして数年同じ価格を入れておく方向でいいと思います。

                  フィールドの定義にはg適年No = g適年#とした

                       ↑ここが何をしているのか良く解りません。

                        

                       年度毎に商品A,B,Cのそれぞれの請求・入金を合計したいのですね。
                       繰り返しの計算フィールドを作って、商品A + 商品B....とすれば足された結果が出ますよ。

                        

                        

                       そもそもの設計の話なんですが、繰り返しフィールドじゃなくて別テーブル&ポータルにした方が扱いやすいと思います。
                       ただ、引き返せない所まで来てる気もするので、使えればこのままでもいいかなと。

                  • 6. Re: 別テーブル(複数)の繰り返しフィールドを持って来たい
                    sunnyheights

                         sago35さん、

                          

                          続けてのご教示誠にありがとうございます。

                          やっぱり繰り返しフィールドの数を合わさねばなりませんか。

                          確かにそうすれば、適用する年度を合わせるために20フィールド用と4フィールド用の別のフィールドは不要ですね。

                           

                          集計はその顧客の年度合計は出来ています(商品A+商品B+商品C+、、、)。

                          書き方が悪くて申し訳ありませんでしたが、実はやりたかったのは年度ごとの全顧客の合計です。

                          集計フィールドで全てのレコードを加算するような、例えば2014年度の全体の商品の総売上や商品ごとの総売上を見ることが出来れば便利と思いました。現在の繰り返しフィールドでは2014年度+2015年度+ 、、、、と全てを合算した売上げになってしまいますね。どうも繰り返しフィールドをバラバラに集計(この場合は年度ごとに)する機能は無いように思えました。

                          となると、今のうちにフィールドをばらして、年度分20個x商品種類(現在は6種類)を作らねばならないのかと思っています。確かに既に遅いかもしれませんが、まだ、根気よくやればもしかすると出来るのかもという気もしています。ただ、ヘルプやナレッジベースで検索すると繰り返しフィールドをポータルで個々のフィールドに変換する例がありましたが、いかにも敷居が高くて、なにかうまい方法は無いのかと思っています。もし、うまい方法がありましたらお教えください。

                          

                          

                    • 7. Re: 別テーブル(複数)の繰り返しフィールドを持って来たい
                      sago350@未来Switch

                           ああ、そういうことですね。
                           であれば集計フィールドの設定を変えれば表示されます。

                      サンプルファイル

                      • 8. Re: 別テーブル(複数)の繰り返しフィールドを持って来たい
                        sunnyheights

                             sago35さん、

                              

                              いつも的確なご教示をいただき本当にありがとうございます。

                              なるほど、集計フィールドも個別を選べば繰り返しフィールドになるのですね。

                              これで、今のところ本件はバッチリです。

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