11 返信 最新の回答 日時: Nov 29, 2016 11:16 PM ユーザー:nkk47

    月別データを期別にポータルで表示

    nkk47

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

       

      ●テーブル

      ・月別

      ・期別

       

      ●フィールド

      【月別】

       ・年:数字

       ・月:数字

       ・A:数字

       ・B:数字

       ・C:数字

       ・X:数字

       ・Z:計算[ Round ( X * .5 ; 0 ) ]

       ・_1:計算[ 1 ]リレーション用

       

      【期別】

       ・年:数字

       ・月:数字

       ・期別合計_A:

       ・期別合計_B:

       ・期別合計_C:

       ・期別合計_X:

       ・期別合計_Z:

       ・_1:計算[ 1 ]リレーション用

       

      上記のような構成で[月別]テーブルには毎月データを入力し、[期別]テーブルで年間3期(4、8,12月)の集計を行いと思い、[期別]のレイアウトに[月別]のデータをポータルで表示させたのですが、4月期は前年の12月~当年3月までの4ヶ月間なので、この「前年の12月」をどう扱って良いのか分かりません。

       

      ポータル設定の「ポータルレコードのフィルタ」で下記のように設定すると、当然のことながら4月期の「前年の12月」は表示出来ません。

       

      Case

      (

      期別::月 = 4 ; ( 月別::年 = 期別::年 ) and (( 月別::月 >= 1 ) and ( 月別::月 <= 3 )) ;

      期別::月 = 8 ; ( 月別::年 = 期別::年 ) and (( 月別::月 >= 4 ) and ( 月別::月 <= 7 )) ;

      期別::月 = 12 ; ( 月別::年 = 期別::年 ) and (( 月別::月 >= 8 ) and ( 月別::月 <= 11 )) ;

      )

       

      期別::月 = 4 のところだけ

      ((( 月別::年 = 期別::年 - 1 ) and ( 月別::月 = 12 )) and (( 月別::年 = 期別::年 ) and ( 月別::月 >= 1 ) and ( 月別::月 <= 3 )))

      などとしてみましたがNGでした。

       

      そもそもポータルレコードのフィルタで設定する事では無いのでしょうか。

      ご教示の程宜しくお願い致します。

      キャプチャ_2_112816_031641_PM.jpgキャプチャ_1_112816_031531_PM.jpg

       

       

      作業環境

      Windos 7 Pro SP2

      FileMaker PRO 11 0v3

        • 1. Re: 月別データを期別にポータルで表示
          sago350@未来Switch

          年と月を別々に考えるとややこしいので、

           

          201512

          201601

          201602

           

          と考えればスッキリするのでは。

          • 2. Re: 月別データを期別にポータルで表示
            shin

            Year * 12 + Month で扱うと,年をまたいでも連続数になるのでお勧め。元に戻すには,

            Year = Div ( N - 1 ; 12 )

            Month = Mod ( N - 1 ; 12 ) + 1

            期 = Mod ( Div ( N - 4 ; 12 ) ; 3 ) + 1

            • 3. Re: 月別データを期別にポータルで表示
              nkk47

              sago350@未来Switch さん

               

              年と月は別のテーブルの別フィールドにリレーションさせたいので、出来れば分けたいのですが難しいでしょうか。

              • 4. Re: 月別データを期別にポータルで表示
                sago350@未来Switch

                分けているフィールドはそのままで

                結合させた計算フィールドを用意して・・・

                201603

                201602

                201601

                201512

                となるので、

                フィルタの条件を

                201512 <= 年月 and 年月 <= 201603

                とすればいいのでは。

                • 5. Re: 月別データを期別にポータルで表示
                  sago350@未来Switch

                  結合させる計算式はこんな感じで。

                   

                  年 & Right ( "00" & 月 ; 2 )

                  • 6. Re: 月別データを期別にポータルで表示
                    s tsubo

                    失礼します。FileMakerを勉強中の者です。至らない点がありましたらすみません。

                    shinさんの計算式を参考にサンプルを作ってみました。

                     

                    Dropbox - 年月管理テスト.fmp12

                     

                    「年度」と「月期」が一致するようにリレーションシップを組めば、

                    ポータルにうまく反映されるんじゃないかな、と思うのですが、どうでしょうか。

                    • 7. Re: 月別データを期別にポータルで表示
                      nkk47

                      shin さん

                      キャプチャ.PNG

                       

                      こういうことでしょうか?

                       

                      ヘルプを見ますと、

                      Div:数値除数で除算した後、次に小さい整数値を返します。 Div ( 数値 ; 除数 )

                      Mod:除数数値を割った後の余りを返します。 Mod ( 数値 ; 除数 )

                      計算は同じで、計算結果の「次に小さい整数を返す」か「割った余り」を返すかの違いですね。

                      ※なんで書き方(数値除数で除算した後・・・、除数数値を割った後の・・・)と違わせているんだろう?

                       

                      Year * 12 + Month (私の作ったものでは N)のは、

                      2015×12 = 24180 + 12 = 24192

                      2016×12 = 24192 + 1 = 24193 となり、ひと月毎に +1 の値が返ります。 おぉ!

                       

                      年を元に戻す計算式 Year = Div ( N - 1 ; 12 ) は、

                      Nから 1 を引いた値を 12 で割った後の次に小さい整数という事なので、2015年の場合は

                      (24192 - 1) = 24191

                      24191 / 12 = 2015.91666・・・ なので 2015 おぉ!

                       

                      月を元に戻す計算式 Month = Mod ( N - 1 ; 12 ) + 1 は

                      Nから 1 を引いた値を 12 で割った後の余りに 1 を足した値という事? 2015年12月の場合は

                      (24192 - 1) = 24191

                      24191 / 12 = 2015.91666・・・ なので余りは 0.9166・・・ ですよね?

                      0.91666・・・ + 1 = 1.91666・・・ おやっ?

                       

                      なんで 12 が返ってるんでしょう?

                      期の方はもっと分からなくなってます・・・ (T T)

                      • 8. Re: 月別データを期別にポータルで表示
                        nkk47

                        s tsubo さん

                         

                        ありがとうございます。

                        ただ、当方の FileMaker が Ver,11 のためにサンプルファイルは開けませんでした。

                        • 9. Re: 月別データを期別にポータルで表示
                          nkk47

                          sago350@未来Switch さん

                           

                          ありがとうございます。

                          年、月を統合するフィールド(年月)を作成し、ポータルのフィルターを下記のように致しましたら美味く表示出来ました。

                           

                          Case

                          (

                          期別::年 = 2016 and 期別::月 = 4 ; 201512 ≤ 月別::年月 and 201603 ≥ 月別::年月 ;

                          期別::月 = 8 ; ( 月別::年 = 期別::年 ) and (( 月別::月 ≥ 4 ) and ( 月別::月 ≤ 7 )) ;

                          期別::月 = 12 ; ( 月別::年 = 期別::年 ) and (( 月別::月 ≥ 8 ) and ( 月別::月 ≤ 11 )) ;

                          )

                           

                          毎年(もしくは事前に)4月期の年違いを作成する必要はあるようですが、10年分でも10行ですからOKです。

                          • 10. Re: 月別データを期別にポータルで表示
                            s tsubo

                            nkk47さん

                            失礼しました。うっかりでした(^^;)

                            shinさんの計算式を参考に、このようにフィールドを設定しました。

                             

                            ・日付(日付)

                            ・年月(テキスト、計算値自動入力)

                               Year ( 日付 ) & "年" & Month ( 日付 ) & "月"

                            ・年月_月換算(数字、計算値自動入力)

                               Year ( 日付 ) * 12 + Month ( 日付 )

                            ・年度(数字、計算値自動入力)

                               Div ( 年月_月換算 ; 12 )

                            ・月(数字、計算値自動入力)

                               Mod ( 年月_月換算 - 1 ; 12 ) + 1

                            ・月期(数字、計算値自動入力)

                               ( Div ( Mod ( 年月_月換算 ; 12 ) ; 4 ) + 1 ) * 4

                            ・年度月期(テキスト、計算値自動入力)

                               年度 & "年度 " & 月期 & "月期"

                             

                            すると、画像のようになりました。

                            スクリーンショット 2016-11-30 16.02.25.png

                            • 11. Re: 月別データを期別にポータルで表示
                              nkk47

                              s tsubo さん

                               

                              わざわざありがとうございます。

                              参考にさせて頂きます。