みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になります。
現在ファイルメーカーPro15 Advance Winでレジとして利用しています。
日付・時間・メーカー・品名・数量などのフィールドを集計してメーカー別の月間の集計表を作成して、
日付 A社 B社 C社 D社 E社 F社 その他 客数 売上
07/21 0 0 20,000 25,000 30,000 0 560 14 75,560
07/22
・
・
08/20
合計 0 0 20,000 25,000 30,000 0 560 14 75,560
1回のレジ精算ごとのレコードを集計して日ごとのレコードを作成し集計しています。
これに加えて、月別の集計や年別の集計を出したいのですが、以前ファイルメーカー9を使ってそのような集計を作成し、今も使用しているのですが、動きが重くて開くのに相当時間がかかってしまっています。
月別集計や年別の集計、前年比を出すのにどのようにリレーションしたらいいのか教えて頂けませんでしょうか?
よろしくお願い致します。
集計を使った方が簡単でしょう。リレーションは使いません。集計する範囲でレコードを抽出してから集計します。
https://www.dropbox.com/s/1efpf7uoai8l3 … 2.zip?dl=0
レコード数が傍大になると集計は遅くなります。計算結果を保存するような構造の工夫を行うといいです。
Last edited by Shin (2020-08-11 16:44:44)
Offline
Shin様
サンプルまで頂き、ありがとうございます。
中々進める時間後取れず、遅くなりすみません。
Letの使い方がいまいちわからず…
頂いたサンプルに当てはめて何とか集計させることができたのですが、
分からない事がいくつかありますのでご教授頂けると幸いです。
集計させるには、プレビューモードでソートしないといけないという事は分かったのですが
頂いたサンプルだときちんと表示されていますが、自分が作ったものだと用紙設定に合わせて切れてしまいます。
色々見比べてみてもさっぱりわかりません。
こちらは何か設定次第なのでしょうか?
また、年別にソートすれば年で集計できるのは分かったのですが、前年比を表示させる事は可能なのでしょうか?
月別の前年比やメーカ別前年比などを細かく集計の表で出すことは可能なのでしょうか?
よろしくお願い致します。
集計にプレビューは必要ありません。
前年比とか前年同月比なども計算出来ますが、比較的高度な処理が必要です。
書き出して、Excelなどで計算させた方が取っつきやすいと思います。
Offline
Shin様
お世話になります。
その後、時間を見つけて色々検証してみるのですが、うまくいきません。
>集計にプレビューは必要ありません
との事で、頂いた見本もブラウザモードで動作しているのを確認しているのですが、私の作ったものだとどうしてもプレビューでないときちんと表示されず、ブラウザモードだと1ヶ月分しか表示されません。
検証しているのが、時間帯別客数と年代別、性別別です。
例えば性別別の人数は
ttl_性別別=GetValue ( ValueListItems ( Get ( ファイル名 ) ; "性別" ) ; Get ( 計算式繰り返し位置番号 ) )
性別別人数_=
Case (
not IsEmpty ( ttl_性別別 ) ; ValueCount ( FilterValues ( 性別[1] ; ttl_性別別 ) )
)
で計算させています。
ソートは月別のみで行っています。
何が問題でしょうか?
また、やはり前年比をFMで表示させてたいのですが、どのような考え方で進めたら良いかアドバイス頂けませんでしょうか?
何卒よろしくお願い致します。
フォーム表示になっていませんか。リスト表示に変更してください。レポートの表示にプレビューが必要だったのは、FM10位以前です。
別の集計を行う際には、それぞれに必要な複数の集計計算用のフィールドとレイアウトを地道に作えばいいです。
ただ、結構煩雑です。技術があれば、例えば、フィールドの評価をGetField()でおこうように変更すると、今の構造のままで集計項目の変更が可能ですが。(かなり高度な仕組みです)
サンプル を更新して、前年同月比を計算させてあります。
Last edited by Shin (2020-08-10 10:48:19)
Offline
4項目についての集計の切替は、金額を展開する部分を条件分岐するだけで実現できました。
https://www.dropbox.com/s/1efpf7uoai8l3 … 2.zip?dl=0
あとは、期間内の2項目間のクロス集計くらいかな。
Offline
職員管理マスターから、辞令書(○年○月○日付け)を発行し、発令簿管理をしたいが、現在のマスターの内容を変更すると発行済みの辞令書の内容も変わってしまいます。 発行日単位に発令簿に書き出し、発令簿で辞令データを一覧できるようにしたいのですが、どうすればよろしいかわからず困っております。
初歩的な質問ですが、参考なるサンプルなどわかりやすく教えて頂けますと助かります。
どうか、お詳しい方からのご援助をお願い致します。
謝礼の準備を致しております。 どうか丁寧にわかりやすくご指導願います。
この質問と関係ない話題なので、「※新しい質問は、新規トピック から投稿して下さい。」でお願いします。
マスターを時系列管理するか、ルックアップを使うか、で、解決でしょうね。
Offline
お疲れ様です。
FM19 WIN10
こちらの質問の#2のサンプルにあるスクリプト「集計」のことなんですけど、
変数を設定[$$message; 値: Get (最終メッセージ選択) +3]
とあるのですがこの+3とはどういうことをしているのでしょうか。
それと12行目からのレコードのソートの前の
[$$message = ]が5の場合まであるのはなぜでしょうか。
初心者でスクリプト理解したいのでご教授お願い致します。
ブラウズモードに切り替え [ 一時停止: オフ ]
レイアウト切り替え [ 「集計」 (売上テーブル) ; アニメーション: なし ]
If [ Get ( スクリプト引数 ) ]
変数を設定 [ $$message ; 値: Get ( スクリプト引数 ) ]
Else If [ Get ( アクティブ修飾キー ) < 4 ]
カスタムダイアログを表示 [ "集計" ]
変数を設定 [ $$message ; 値: Get ( 最終メッセージ選択 ) ]
Else
カスタムダイアログを表示 [ "集計" ]
変数を設定 [ $$message ; 値: Get ( 最終メッセージ選択 ) + 3 ]
End If
If [ $$message = 1 ]
レコードのソート [ 記憶する ; ダイアログあり: オフ ]
Else If [ $$message = 2 ]
レコードのソート [ 記憶する ; ダイアログあり: オフ ]
Else If [ $$message = 3 ]
レコードのソート [ 記憶する ; ダイアログあり: オフ ]
Else If [ $$message = 4 ]
レコードのソート [ 記憶する ; ダイアログあり: オフ ]
Else If [ $$message = 5 ]
レコードのソート [ 記憶する ; ダイアログあり: オフ ]
End Ifのことですね。
カスタムダイアログで、修飾キーの状態で別のダイアログを出して選択子を選ばせていますが、そのさいに、それらの結果を一挙に処理するために、選択されたボタンに対応する Get ( 最終メッセージ選択 ) の返り値を拡張する動きにしています。
ブラウズモードに切り替え [ 一時停止: オフ ]
レイアウト切り替え [ 「集計」 (売上テーブル) ; アニメーション: なし ]
If [ Get ( スクリプト引数 ) ]
変数を設定 [ $$message ; 値: Get ( スクリプト引数 ) ]
If [ $$message = 1 ]
レコードのソート [ 記憶する ; ダイアログあり: オフ ]
Else If [ $$message = 2 ]
レコードのソート [ 記憶する ; ダイアログあり: オフ ]
Else If [ $$message = 3 ]
レコードのソート [ 記憶する ; ダイアログあり: オフ ]
Else If [ $$message = 4 ]
レコードのソート [ 記憶する ; ダイアログあり: オフ ]
Else If [ $$message = 5 ]
レコードのソート [ 記憶する ; ダイアログあり: オフ ]
End
Else If [ Get ( アクティブ修飾キー ) < 4 ]
カスタムダイアログを表示 [ "集計" ]
変数を設定 [ $$message ; 値: Get ( 最終メッセージ選択 ) ]
If [ $$message = 1 ]
レコードのソート [ 記憶する ; ダイアログあり: オフ ]
Else If [ $$message = 2 ]
レコードのソート [ 記憶する ; ダイアログあり: オフ ]
Else If [ $$message = 3 ]
レコードのソート [ 記憶する ; ダイアログあり: オフ ]
End If
Else
カスタムダイアログを表示 [ "集計" ]
変数を設定 [ $$message ; 値: Get ( 最終メッセージ選択 ) ]
If [ $$message = 1 ]
レコードのソート [ 記憶する ; ダイアログあり: オフ ]
Else If [ $$message = 2 ]
レコードのソート [ 記憶する ; ダイアログあり: オフ ]
Else If [ $$message = 3 ]
レコードのソート [ 記憶する ; ダイアログあり: オフ ]
End If
End Iffでもいいのですが、煩雑ですね。
それぞれのソートは、ソートの条件が異なっています。
Last edited by Shin (2022-10-15 12:52:05)
Offline
+3のところを+1や+2にすると返り値がかわるだけでしょうか。
ソートの部分は年月や性別等でそれぞれ分けているということでしょうか。
+3のところを+1や+2にすると返り値がかわるだけでしょうか。
取得関数の返り値は変わりませんが、変数の値がかわりますので、次の分岐点がかわり、処理が変更されます。
ソートの部分は年月や性別等でそれぞれ分けているということでしょうか。
スクリプトの中のソート条件を確認されればわかることでしょう。
Offline
Shinさま
ありがとうございました。
またよろしくお願いいたします。
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 603.01 KiB (Peak: 619.91 KiB) ]