みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
環境:Windows8、Windows10、 FMPro15、WindoesServer2012 FMServer15
いつもお世話になっています。
数字フィールドに入力している使用年数(日付ではなく整数のみ)を年数毎(1、2、3、〜29までは1年毎で30以上は一まとめ)
に件数を棒グラフ化したいのですが、カテゴリが2つ(A or B)あります。
以下のような計算式でフィールドを60個(集計を入れると120個)作れば出来る事は理解しておりますが
if(カテゴリフィールド = "A" and 数字フィールド = 1;1;0)
グラフだけの為に120フィールドも増やすのは無駄だと思いますので何かいい方法があれば教えて頂きたいと思います。
また、カテゴリを選択式(選択後に検索してレコード抽出)にして、カテゴリ=Aのみ・カテゴリ=Bのみ・両方(積み上げグラフ)ができれば完璧です。
ちなみに集計対象のレコード数は100〜2000くらいで、複数の人が同時に操作していますので全置換は好ましくないです。
何卒よろしくお願い致します。
Last edited by nori (2017-11-17 08:56:20)
Offline
リレーション集計法によるクロス集計とそのグラフ化のサンプルです。
仕組みの説明が目的のため、このサンプルでは、検索状況に関わらず、
集計対象は全てのレコードを対象として、簡潔化しています。
※ もし実装に際し、検索絞込みレコードを集計対象にしたい場合は、その検索条件か、
或いは一覧集計フィールドで対象レコードのレコードID一覧リストを得て、
サンプル全使用リレーションにこの照合条件を追加条件設定してください。
●サンプル「クロス集計値のグラフ化.fmp12」 → https://yahoo.jp/box/Av0iYY
Offline
Hiroさん
すばらしい!のひと言です!
まさにやりたいのはこんな感じなのですがサンプル見ても、わたしの知識ではすぐに理解できないですwww
いただいたサンプルを読み解いて、不明点があれば(きっとあります)再度ご質問させていただきます!
本当にいつもありがとうございます。
Offline
Hiroさん
すみません解読中にわからないので早速質問させてください。
「使用年数キー」フィールドの計算式 Min(使用年数; 30) ですがMin(フィールド名)はそのフィールド内で一番小さな数字を返す関数だと記憶しておりますが「;数字」をつける事によってフィールドの数字が「;数字」より大きい場合は「;数字」の数を返すという関数に変わるのでしょうか?
本当に無知で申し訳ありません。
Offline
>#1 年数毎(1、2、3、〜29までは1年毎で30以上は一まとめ)
を請けて、その内容を具現化する補正式です。
使用年数 → Min(使用年数; 30)
※なお、Min または Max 関数は、数値比較に限らず、文字比較も可能です。
切替は、関数内の引数のタイプにより自動的に切り替わります。
・Min(2; 10) → 2 (数値比較結果)
・Min("2"; "10") → "10" (文字比較結果)
Offline
Hiro様
大変遅くなりましたが、集計結果を表示するところまでは出来ました。
ただ今回「検索絞込みレコードを集計対象にしたい」にしたいのですが下記の部分が理解出来ませんでした。
>一覧集計フィールドで対象レコードのレコードID一覧リストを得て、
>サンプル全使用リレーションにこの照合条件を追加条件設定してください。
フィールドタイプ:集計、繰り返しの集計:全体(個別)でIDを一覧にするフィールドを作ってみましたが
マスターテーブル2とリレーションを張ろうにもグレーアウトしていて選択出来ませんでした。
恐れ入りますが上記の部分をご教示下さい。
Offline
> フィールドタイプ:集計、繰り返しの集計:全体(個別)でIDを一覧にするフィールドを作ってみましたが、マスターテーブル2とリレーションを張ろうにもグレーアウトしていて選択出来ませんでした。
・集計フィールドは索引が取れないため、リレーション・キーには使えません。
リレーション集計法によるクロス集計とそのグラフ化のサンプルです。
仕組みの説明が目的のため、このサンプルでは、検索状況に関わらず、
集計対象は全てのレコードを対象として、簡潔化しています。
※ もし実装に際し、検索絞込みレコードを集計対象にしたい場合は、その検索条件か、
或いは一覧集計フィールドで対象レコードのレコードID一覧リストを得て、
サンプル全使用リレーションにこの照合条件を追加条件設定してください。
この対応を実装したサンプルv2をアップしましたので、解析ください。
●対応版サンプル「クロス集計値のグラフ化v2.fmp12」 → https://yahoo.jp/box/zY53eo
※このv2サンプルでは、
〇現在の対象レコードのレコードID一覧リストを得るのは、
・グローバルフィールドに変数計算値で全置換を掛け、一発取得。
・対象IDリストの更新は、カテゴリー選択フィールドのOnModifyトリガで発火。
・ただし、更新発火は、「対象レコードが変更されているか」の確認条件付き発火。
・更新による集計再計算は、索引が作られるまでの初期段階では多少時間が掛る。
〇グラフ項目ズレ・バグ改善
・「集計値データ」なし(空欄)は、グラフ枠がトルツメされるので、無 → 0 へ式変更。
Last edited by Hiro (2017-12-03 12:40:20)
Offline
Hiro様
何から何まで本当に有難う御座いました。
お陰様でイメージ通りの仕組を作ることが出来ました。
とはいえコピペでクリアしてしまったので根本的な知識に関することが伴っておりませんが...
まずは、いただいた計算式を一つずつ解読していきます。
今後とも宜しくお願い致します。
Offline
Hiroさま
ずいぶん前に解決のトピックに今頃すみません。
10年分の売り上げデータをクロス集計し、積み重ねグラフにするという課題に取り組んでいましたが
グラフを作ったことが全くなくて思い通りにならず、さらに集計にもものすごく時間がかかってしまい途方に暮れておりました。
あちこち検索してこちらにたどり着き、サンプルをダウンロードさせてもらい、
私にはかなり高度でしたがそれでも何とか近いものを作ることができました。
結果グラフも思い通り、集計スピードも劇的にあがり、もう本当に小躍りして喜びたい気持ちです。
絶対に自分では完成にたどり着けなかったと思いますので、どうしても御礼が言いたくて投稿させていただきました。
ありがとうございました!
こぞう さん
忘れ掛けた事に、お礼の言葉を頂き、ありがとうございます。
サンプルを参考に自力解析、目的を達成できたたとお聞きし、
こちらこそ嬉しい思いです。
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 587.33 KiB (Peak: 604.23 KiB) ]