みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
よろしくお願いします。
ファイルメーカー18です。
集計フィールドを作らずに対象レコードのフィールドを関数で合計することはできるのでしょうか。
sum( フィールド名 ) ではうまくいきませんでした。
初歩的な質問で恐れ入ります。
Offline
任意絞込結果「対象レコード」に対しての集計計算は、反って非常に面倒です。
この場合つまり単純合計するだけなら集計フィールドが最適と思います。
より複雑な条件付き集計で集計フィールドを使わない次案としては、
繰越変数計算式で「フィールド内容の全置換」をグローバルフィールドに適用する方法です。
何れにせよ、説明が大雑把で抽象的なので、より具体的な詳細説明があればより的確な回答が付くと思います。
Last edited by Hiro (2020-02-17 14:08:06)
Offline
テーブルを複雑にしたくないのでフィールドを増やさずできるかと考えましたが、
そんなに難しいことだったのですね。やめておこうと思います。
Hiro様、アドバイスありがとうございます。
Offline
解決している質問に恐縮なのですが質問者さんの仰るテーブルを複雑にしたくないについて
複雑とはどんなことを指しているのでしょう?素朴な疑問です。
例えば集計フィールドを作らないとか......
データベースを複雑にしないというのは間違いではないと思うのですがその考えに至るにあたり
参考にされた書籍やサイトがありましたらあわせて教えて頂けると嬉しいです。
もちろん答えられる範囲で良いのですが
ここ最近の質問で簡単とかシンプルとかを求められる方が大勢見受けられるので疑問に思ったのです。
変な方向からの逆質問ですみません。
Offline
私も同じ問題で調べていますが、結論は集計フィールドを作るのが最も簡単な方法だと思いますが、関数で集計できないのでしょうか?。
フィールドの数値を合計したいだけなので、sum関数のようなものがあっても良さそうなものですが、、。
というのも店舗の日次売上実績と月次売上げを作成しています。
日次売上実績には、売上、部門別売上、客数、午前客、午後客、品目数などなど、20程のフィールドがあります。
全てのフィールドに集計フィールドを作成すると、同数の集計フィールドが20必要で合計40フィールドとなります。
その日次売上を、月次実績に集計します。そして年次実績が必要になります。
月次実績でも40フィールド。年次では集計フィールドは必要ないので20フィールドとなります。
結果、集計フィールドで集計するのであれば、かなりのフィールド数が必要になってしまいます。
何か良い方法があればご教授お願いします。
計算フィールド1個と集計フィールドのみで、何項目でも集計可能です。
Choose ( Get ( 計算式繰り返し位置番号 ) - 1 ;
売上[1] ;
部門別売上[1] ;
客数[1] ;
…
)
という繰り返しの計算フィールドと、それを個別に合計する集計フィールドを作れば簡単です。大元のレコードからこの構造にしておけば、日次、月次、年次に関係なく、集計できますよ。
https://fm-aid.com/bbs2/viewtopic.php?id=13194
のサンプルファイルで、イメージしてみてください。
Last edited by Shin (2022-07-16 15:55:58)
Offline
早速ありがとうございます。サンプルファイルも拝見しました。
ヨクヨクやってみたのですが、とりあえず集計できたのですが、
計算フィールドと集計フィールドに値が入るとき、1マス?(繰返フィールド1つおき)に入ってしまいます。
計算フィールド、集計フィールド、どちらも「ひとつおき」に入ってしまいます。
先ほど教えていただいた、
Choose ( Get ( 計算式繰り返し位置番号 ) - 1 ;
項目[1] = "売上" ; 売上[1] ;
項目[1] = "部門別売上" ; 部門別売上[1] ;
項目[1] = "客数" ; "客数" ;
…
)
質問ですが
1.「Choose ( Get ( 計算式繰り返し位置番号 ) ; -1 ;」の -1 はなぜ 取得した繰返位置番号から -1 する必要があるのでしょうか?。
2.「項目[1] = "売上" ;売上[1] ;」にある、項目[1]と売上[1]、両方の[1]は繰返し位置番号という意味でしょうか?。
3. 3行目「項目[1] = "客数" ; "客数" ;」→「項目[1] = "客数" ; 客数[1] ;」ですか?
わかっていないので、1行抜け空白とになっていると思います。
色々調べたのですが、、お手数かけてすみません。再度よろしくお願いします。
計算フィールドと集計フィールドに値が入るとき、1マス?(繰返フィールド1つおき)に入ってしまいます。
計算フィールド、集計フィールド、どちらも「ひとつおき」に入ってしまいます。
別の考え方の式と混同して、書き間違いました。上のように書き直してください。
別の方法は、繰り返しグローバルフィールドを作り、それに、"売上"、"部門別売上"、客数" .... と設定しておき、
Case ( 項目[1] = グローバルフィールド ; 数値[1] )
という繰り返しの計算フィールドにします。それを集計します。
1.「Choose ( Get ( 計算式繰り返し位置番号 ) ; -1 ;」の -1 はなぜ 取得した繰返位置番号から -1 する必要があるのでしょうか?。
https://help.claris.com/ja/pro-help/content/choose.html
を参照ください。無くてもいいですよ。その場合、最初の項目に "" を追加します。
2.「項目[1] = "売上" ;売上[1] ;」にある、項目[1]と売上[1]、両方の[1]は繰返し位置番号という意味でしょうか?。
繰り返しフィールドの中で、繰り返しのないフィールドを参照するときのお約束です。
Extend() を使って
Extend ( 売上 ) ;
でもいいのですが、[1] の書き方の方が簡便です。
3. 3行目「項目[1] = "客数" ; "客数" ;」→「項目[1] = "客数" ; 客数[1] ;」ですか?
修正しましたが、間に合わなかったようで
Last edited by Shin (2022-07-17 14:25:42)
Offline
不躾な質問で失礼しました。
なんとか解決できました。
ヒントを頂き大変助かりました。
ありがとうございます。
教えてください
計算フィールドでvaluecountで数字を出したのですが、それを集計フィールドで合計出来なくて(押せない)て困ってます
新たな質問は、新たなスレを立てるべきですが。。
その計算フィールドは数字タイプになっていますか?
Offline
Pages: 1
[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 546.64 KiB (Peak: 567.55 KiB) ]