みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
販売明細から月次集計をまとめたテーブル
1レコード(年月/営業/販売数計/販売額計)
を新たに作成しようとしています。
月が変わってから返品や修正などがありますので、
一度作られた月次記録レコードも修正する必要があります。
●月次記録テーブル
日付から(グローバル日付)
日付まで(グローバル日付)
営業(グローバル数字)
年月(数字)
営業(数字)
販売数計(数字)
販売額計(数字)
●販売明細テーブル
年月日(日付)
営業(数字)
販売数(集計)
販売額(集計)
下記のようにつないでスクリプトをつくろうとしているのですが、
全然うまくいかず、よくわからなくなってきました。
日付から(グローバル日付)<=年月日(日付)
日付まで(グローバル日付)>=年月日(日付)
営業(グローバル数字)=営業(数字)
どのようにすればよいでしょうか。
ご教授お願い致します。
月次テーブルでグローバルにしていると、
データを使い捨てることになりますよ。
1営業&ひと月ごとに1レコード作るべきなのでは。
リレーションが出来ていれば集計関数で集計できるでしょう。
これは明細の変更に追随しますね。
販売明細で、日付から年月フィールドを作っておけば
月次テーブルの日付は不要でしょう。
Offline
仰るとおり、1営業&ひと月ごとに1レコードの考えでした。
年月(数字)というのが、ひと月です。
適切なリレーションをして、月次テーブルにレコードをつくるわけですが、
どのようにレコードを作成させるかがわかりません。
レコードはひと月に一レコードで、修正があるため更新は毎日したいと考えています。
(1日1レコードで修正なしなら、単純にレコード作成でよいのですが。。)
方法はいくつか考えられますが、、
その一つ
明細のレコード作成時に、
月次テーブルで関連レコードが無ければ、新規レコードを作る。
スクリプトとトリガで自動化できます。
Offline
チポさんありがとうございます。
販売明細は多い時に一日に何百件も作られてレスポンスも要求されますので、
集計の更新は一日に一度だけするスクリプトをつくろうと考えています。
(集計されたデータを見るのは月に一度あるかないかです)
そこで月次記録テーブルの方で月を決めて、
データを集めるようにしようと考えています。
●月次記録テーブル
月初(グローバル日付)
月末(グローバル日付)
営業(グローバル数字)
年月(日付)※日付は月初
営業(数字)
販売数計(数字)
販売額計(数字)
●販売明細テーブル
日付(日付)
営業(数字)
販売数(集計)
販売額(集計)
●月次記録テーブルと販売明細テーブルのリレーション
月初(グローバル日付)<=日付(日付)
月末(グローバル日付)>=日付(日付)
営業(グローバル数字)=営業(数字)
●月次記録テーブルと自己リレーション
月初(グローバル日付)= 年月(日付)
営業(グローバル数字)= 営業(数字)
月次記録テーブルの月初と年月を自己リレーションして
販売明細テーブルとのリレーションで得られた値をコピー、
月初と月末をスクリプトで一ヶ月ごとにさかのぼって
修正を上書きしていこうと思っています。
2014.12.01
2014.11.01
2014.10.01
2014.09.01
2014.08.01
...
ところが、自己リレーションされた月次記録テーブルに
「なければレコードをつくる、あれば上書き」がされません。
すべてレコード1に上書きされてしまいます。
スクリプトは単純なフィールド設定です。
このリレーションシップを使用して、
このテーブルでのレコードを作成を許可
はチェックを入れています。
初歩的な質問だと思うのですが、どうすればよいのかわかりません。
教えていただけないでしょうか。
●販売明細テーブルで
販売数(集計)
販売額(集計)
というのは、集計フィールドになっているのですか。
それが作ってあるのなら、日付から年月という計算フィールドを作り、それをキーにして集計してしまった方が簡単では。
Offline
スクリプトの内容が分かりませんが、、
フィールド設定で
ターゲットフィールドを
自己リレーション::販売数計
(グローバルではない方のテーブル名です)
として、
値を
Sum ( 販売明細::販売数 )
とすればいいのでは。
リレーションで集計しても明細のレスポンスに影響は無いでしょう。
Offline
ああ!
販売数(集計)
集計フィールドですか?
とすれば、前レス
Sum ( 販売明細::販売数 )
これは、
集計フィールドが集計しているフィールドとします。
集計フィールドが有るのは何のため?
これの方がよっぽどレスポンスに影響しますよ。
Offline
チポ様、Shin様、ありがとうございます。
うまくいきました!
動かしてみるとあっという間に集計できてびっくりしました。
>Shin様
明細の方に年月をつくるというのは目からウロコでした!
>チポ様
伝票レイアウトのために、もともと集計フィールドは作ってありました。
Sumを使うのと、集計フィールドでは、計算速度が変わってくるのでしょうか。
Pages: 1
[ Generated in 0.011 seconds, 7 queries executed - Memory usage: 520.38 KiB (Peak: 524.91 KiB) ]