みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
先日こちらのトピックで質問させて頂いたものです。↓
https://fm-aid.com/bbs2/viewtopic.php?pid=71883
ここからユーザーが選択した年月に応じて表示する年月を変更したい場合どのような方法が考えられますでしょうか?ご教示頂けると大変助かります。
やったこととしては本日の日付の年から過去3年間の表示が出来たいたものに↓
https://www.dropbox.com/s/ws6n2t0nb48r4 … 2.png?dl=0
グローバルフィールド「g_集計日to」を追加して↓画像のYMフィールドのget( 日付 )の部分にg_集計日toと書き換えました。
そうすると↓画像のようにYMフィールド及びYM_フィールドが繰り返しされなくなりました。
https://www.dropbox.com/s/mqz76nynb0jj0 … 2.png?dl=0
ためしにYMフィールドのget( 日付 )の部分に直接入力する形で「2020/09/02」と変更しても状況は変わらず「"2020/09/02"」とした時に意図していた動きになりました。
そこで文字列で入れたらいいのかと考えgetastextや""を付けたりしてg_集計日toを入れようとしてみましたが意図した動きにならないようです。
なにかアドバイス頂けると大変助かります。よろしくお願いします。
まずは↑のように年をユーザーが選択したものを表示させ次の段階として月を変更できたらなと考えております。
繰り返しフィールドのようなので、Extend( g_集計日to ) としてみてください。
kmmn様
そうすると確かに年が繰り返し表示されるようになりました。がボディの金額が期待している箇所からずれて表示されてしまいます。
この問題は別箇所も修正する必要がありそうでしょうか?
すみません。勘違いかもしれません。画面縮小の問題かもしれません。
もう少し動きを精査してみます。
kmmn様
私の勘違いでした。すみません。ありがとうございます。
次の段階として現在固定で左から1月はじまりになっているものをユーザーが選んだ月はじまりに変更したいのですが、こちらはどのような方法がございますでしょうか?
トピックの続きですので、同じスレッドで続けられたほうがよかったかと思いますが。
表示をどうしたいのですか。指定の年月までの表示でしたら、現在の日付での年月と指定された日付の年月の差を、YM に加減しておくのが簡単です。
ただし、年集計の範囲が変わってしまい、3年分の集計になったり、4年になったりしますので、表示がややこしくなりますし、4年になると最初と最後は中途半端な数字になります
Last edited by Shin (2021-09-03 06:41:53)
Offline
Shin様
返信ありがとうございます。大変勉強になります。
また私の実現したいことを上手く伝えきれずすみません。。。
やりたいこととしては以下です。重ねて申し訳ありませんがアドバイス頂けると大変助かります。
【case1.】
ユーザーが集計基準日を「2019/05/23」で入力した場合
【期待する結果】
YM_の値が
2017.06 | 2018.06 | 2019.06 | 2017.07 | 2018.07 | 2019.07 | 2017.08 | 2018.08 | 2019.08 | ................2017.05 | 2018.05 | 2019.05 | 2017 | 2018 | 2019 |
【case2.】
ユーザーが集計基準日を「2021/09/03」で入力した場合
【期待する結果】
YM_の値が
2019.10 | 2020.10 | 2021.10 | 2019.11 | 2020.11 | 2021.11 | 2019.12 | 2020.12 | 2021.12 | ................2019.09 | 2020.09 | 2021.09 | 2019 | 2020 | 2021 |
この 2019 | 2020 | 2021 の区分はどうなりますか。
Offline
Shin様
区分...質問に対してクリティカルな回答かどうか曖昧ですが
↓こちらのように最右部から3列の年のみの表記の箇所はYM_フィールドにレイアウト重ねているだけのYMフィールドになります。
うまく回答になっていますでしょうか?
> YM_フィールドにレイアウト重ねているだけ
という意味がわかりませんが。
私の作ったサンプルをそのまま使っているのでしたら、同じ繰り返しフィールドで、計算式に細工をして2重表示にしてあり、それを基準に集計用のデータを作っています。
お聞きしているのは、ユーザーが集計基準日を「2021/09/03」で入力した場合、年月は2018年から始まりますが、2019|2020|2021 でいいですか。また、2019年2021年の集計は、2019/1〜2019/12、2021/1〜2021/12 ですか、それとも、2018/10〜2019/9、2020/10〜2021/9 ですか。それ以外ですか。
Last edited by Shin (2021-09-03 15:44:50)
Offline
Shin様
回答がズレたものになっておりすみません。
>お聞きしているのは、ユーザーが集計基準日を「2021/09/03」で入力した場合、2019年2021年の集計は、2019/1〜2019/12、2021/1〜2021/12 ですか、それとも、2018/10=2019/9、2020/10〜2021/9 ですか。それ以外ですか。
ユーザーが集計基準日を「2021/09/03」で入力した場合以下のようになるのが期待した結果になります。
2019 = 2018/10~2019/9
2020 = 2019/10~2020/9
2021 = 2020/10~2021/9
基準日を $$std に格納、$$YM に Year ( $$std ) * 12 + Month ( $$std ) - 1 を設定して、
YMを、
Case (
Get ( 計算式繰り返し位置番号 ) ≥ 37 ; Year ( $$std ) - 2 + Mod ( Get ( 計算式繰り返し位置番号 ) - 1 ; 3 ) ;
$$YM - 35 + Mod ( Get ( 計算式繰り返し位置番号 ) - 1 ; 3 ) * 12 + Div ( Get ( 計算式繰り返し位置番号 ) - 1 ; 3 )
)
金額を
Case (
売上YM[1] = YM ; 金額[1] ;
Year ( $$std ) - Div ( $$YM - 売上YM[1] ; 12 ) = YM ; 金額[1]
)
へ変更すればいいでしょう。
ただ、なぜこのような計算で求められるのかを理解しておかないと、後で苦労しますよ。
Last edited by Shin (2021-09-03 18:53:36)
Offline
Shin様
ありがとうございます。
確かにおっしゃる通り、「なぜこのような計算で求められるのかを理解しておかないとあとで苦労しますよ」という言葉の重みを感じています。
前回頂いたサンプルに関しても自分なりに調べて理解してみておりますが完全には理解できておりませんので、今回ご提案頂いた計算も自分のファイル上で実装できたタイミングで振り返り一つずつ理解できるようにしていきたいと思います。
ところで最初の段階で言われていたように年集計の範囲が3年になったり4年になってしまうのは、やはりどうしようもないものでしょうか?
Shin様
連投すみません。
もしくは他の方法であれば実現可能そうな方法があったりするのでしょうか?
年集計する時の、年の定義をしっかり考えて、矛盾がおきないように式を作っておくと、そのようなことは起こりません。
このような集計を行うときに、私が昔々に考えついた Year() * 12 + Month() という式(ある程度の数学力があれば、誰でも考えつくと思いますが)と、それを元に戻す式が何を意味しているかがわかれば、後は簡単です。
> 他の方法であれば実現可能そうな方法があったりするのでしょうか?
いくつもありますよ。SQLのクエリーで集計する方法、自己リレーションで集計値をだしておいてそれを別テーブルにリレーションで表示させる方法、などあります。クロス集計で検索してみると、いろいろ見つかります。
どの方法で集計するにしても、2021/1 2022/1 2023/1 2021/2 2022/2 2023/2 ... という並びは、なかなか面倒です。
全く別の作り方で、その並びを、2021/1 2021/2 2021/3 ... 2021/12 2022/1 ... という並びにしておき、レイアウト上で1繰り返しのフィールドを配置し、繰り返し位置の指定で並び替える、という方法もありますよ。
Last edited by Shin (2021-09-04 12:18:45)
Offline
基準日を $$std に格納、$$YM に Year ( $$std ) * 12 + Month ( $$std ) - 1 を設定して、
YMを、
Case (
Get ( 計算式繰り返し位置番号 ) ≥ 37 ; Year ( $$std ) - 2 + Mod ( Get ( 計算式繰り返し位置番号 ) - 1 ; 3 ) ;
$$YM - 35 + Mod ( Get ( 計算式繰り返し位置番号 ) - 1 ; 3 ) * 12 + Div ( Get ( 計算式繰り返し位置番号 ) - 1 ; 3 )
)
金額を
Case (
売上YM[1] = YM ; 金額[1] ;
Year ( $$std ) - Div ( $$YM - 売上YM[1] ; 12 ) = YM ; 金額[1]
)
へ変更すればいいでしょう。ただ、なぜこのような計算で求められるのかを理解しておかないと、後で苦労しますよ。
返信ありがとうございます。
Shin様に更新して頂いている前トピックのサンプルも上記のような実装内容になっていると思うのですが基準日を2021にすると繰り返しフィールドのYM_の値の最初の方が2018~になっていたりするのですが、もし良かったらこちらの正しい定義についてもご教示頂くことは出来ませんでしょうか?
全体で36ヵ月表示ですので、最初の月は、基準日の35ヶ月前です。
何になれば正しいのですか。
Last edited by Shin (2021-09-04 22:45:05)
Offline
Shin様
私の伝え方が悪く大変申し訳ありません。。。
下記のCase2.のようになれば私の期待する結果になるのですが現状は添付画像のように
2018.10|2019.10|2020.10.....のように3年前からではなく4年前からになってしまっていたり、後半になると
2019.06|2020.06|2021.06...のように狙っている結果になっていたりとするものですからこちらを全て下記のCase2.のようになれば私の期待する結果になります。
【case2.】
ユーザーが集計基準日を「2021/09/03」で入力した場合
【期待する結果】
YM_の値が
2019.10 | 2020.10 | 2021.10 | 2019.11 | 2020.11 | 2021.11 | 2019.12 | 2020.12 | 2021.12 | ................2019.09 | 2020.09 | 2021.09 | 2019 | 2020 | 2021 |
> 2019.10 | 2020.10 | 2021.10 | 2019.11 | 2020.
基準日を2021年9月にして、2021年10月11月の集計をするのですか????
あなたがいいと思うデータを、39個書き上げてください
ユーザーが集計基準日を「2021/09/03」で入力した場合以下のようになるのが期待した結果になります。
2019 = 2018/10~2019/9
2020 = 2019/10~2020/9
2021 = 2020/10~2021/9
と自分で書いておられますが、そこに回答があるのでは。
これ以上は、ご自分でお考えください。ここは、作って、機能追加して、を請け負うサイトではありません。ご希望なら、個人的にメールいただければ受託できるかもしれません。
Last edited by Shin (2021-09-05 15:48:48)
Offline
Shin様
大変お世話になっております。
返信ありがとうございます。ご指摘もおっしゃる通りだと思いますのでメールにて送信させて頂きました。大変失礼致しました。
>基準日を2021年9月にして、2021年10月11月の集計をするのですか????
あなたがいいと思うデータを、39個書き上げてください
こちら記載させて頂きます。
【case2.】
ユーザーが集計基準日を「2021/09/03」で入力した場合
【期待する結果】
YM_の値が
2019.10 | 2020.10 | 2021.10 | 2019.11 | 2020.11 | 2021.11 | 2019.12 | 2020.12 | 2021.12 | 2019.01 | 2020.01 | 2021.01 | 2019.02 | 2020.02 | 2021.02 | 2019.03 | 2020.03 | 2021.03 | 2019.04 | 2020.04 | 2021.04 | 2019.05 | 2020.05 | 2021.05 | 2019.06 | 2020.06 | 2021.06 | 2019.07 | 2020.07 | 2021.07 | 2019.08 | 2020.08 | 2021.08 |2019.09 | 2020.09 | 2021.09 | 2019 | 2020 | 2021 |
Offline
> 2019.12 | 2020.12 | 2021.12 | 2019.01 | 2020.01 | 2021.01
2019/12 の次の年月が 2019/1 ですが??
Offline
すみません。。。誤字になります。
正しくは以下になります。
【期待する結果】
YM_の値が
2019.10 | 2020.10 | 2021.10 | 2019.11 | 2020.11 | 2021.11 | 2019.12 | 2020.12 | 2021.12 | 2020.01 | 2021.01 | 2022.01 | 2020.02 | 2021.02 | 2022.02 | 2020.03 | 2021.03 | 2022.03 | 2020.04 | 2021.04 | 2022.04 | 2020.05 | 2021.05 | 2022.05 | 2020.06 | 2021.06 | 2022.06 | 2020.07 | 2021.07 | 2022.07 | 2020.08 | 2021.08 | 2022.08 |2020.09 | 2021.09 | 2022.09 | 2019 | 2020 | 2021 |
Offline
Shin様
すみません。今回の件ですが私の思い違いでShin様に最初頂いたご提案で私の期待する値は取得できていたのかと思います。
もう少し私の中で要件を整理したいと思います。
申し訳ございません。そして大変ありがとうございます。
Offline
ユーザーが集計基準日を「2021/09/03」で入力した場合以下のようになるのが期待した結果になります。
2019 = 2018/10~2019/9
2020 = 2019/10~2020/9
2021 = 2020/10~2021/9
月ごと集計で2018/10~2019/9は表示しないのに、年集計には表示する、という意味ですかね。
Last edited by Shin (2021-09-06 13:42:43)
Offline
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 626.09 KiB (Peak: 658.99 KiB) ]