みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
はじめまして
FMPro14で開発をしています。
集計フィールドを使用して、ひと毎のレコード件数とその人が買った商品の種類の件数を
横に並べてリスト形式で出したいのですが商品の種類の件数の出し方が分かりません。お知恵をお貸しください。
■■■データ■■■
ひと |日付 |商品
-------------------------------
Aさん |5/1 |リンゴ
Aさん |5/2 |ミカン
Aさん |5/3 |リンゴ
Bさん |5/1 |リンゴ
Bさん |5/2 |モモ
Bさん |5/3 |ミカン
Bさん |5/4 |ミカン
■■■出したい結果■■■
ひと |レコード件数 |商品の種類件数
--------------------------------------------------
Aさん | 3件 | 2種類
Bさん | 4件 | 3種類
レコード件数の方は普通に集計フィールド(カウント)を作成して、リスト形式の小計(ひとでソート)をやればよいのですが、
商品の種類は「ひと」「商品」で集計したレコードの件数(?)を求めるのでしょうか?
「ひと」、「商品」で自己リレーションして・・・これ以上思いつきません。
どうぞよろしくお願いします。
Offline
> 「ひと」、「商品」で自己リレーションして
これで求められますね。
「ひと」でリレーションして、
その動的値一覧を作り、その項目数
でも求められます。
いずれにせよ、
集計フィールドだけでは無理でしょうね。
Offline
チポ様
ありがとうございます。
動的値一覧を作ると重複しているものは1件になってくれるんですよね。
それで件数を出す・・・という認識でよろしいでしょうか?
その場合、計算フィールドで「ValueCount ( 作成した値一覧 )」で取得するのでしょうか?
それってそのレコードに該当する(AさんのレコードにはAさんに関する値一覧の件数)ものがとれるのでしょうか、
それとも、計算フィールド内で、If文でAさんだったら・・みたいなLoopが必要となってくるのでしょうか。(むずかしく考えすぎですかね。)
よろしくお願い致します。
Offline
> 動的値一覧を作ると重複しているものは1件になってくれるんですよね。
> それで件数を出す・・・という認識でよろしいでしょうか?
その通りです。
> その場合、計算フィールドで「ValueCount ( 作成した値一覧 )」で取得するのでしょうか?
これもその通りです。
> それってそのレコードに該当する(AさんのレコードにはAさんに関する値一覧の件数)ものがとれるのでしょうか
単に計算フィールドだけでそのレコードのひとの集計がでます。
Offline
チポ様
「ひと」で自己リレーションして、その自己リレーションテーブルから「商品」の値一覧を作りました。
そして、計算フィールドでValueCount ( ValueListItems ( Get ( ファイル名 ) ; "商品" ) )をしたところ、
小計パート(「ひと」でソート)で、Aさん:3種類、Bさん:3種類となってしまいました。
AさんBさんのトータルがどちらにも出ているように見えます。
値一覧を「ひと」「商品」で作成するのでしょうか・・。
よろしくお願い致します。
Offline
試しに
ValueListItems ( Get ( ファイル名 ) ; "商品" )
この計算フィールドをボディパートに置いてみたらいかがでしょう。
Offline
チポ様
できました!
計算フィールドを「非保存」にしていませんでした。
助かりました。ありがとうございます!
Offline
申し訳ありません。
出来たのですが、また分からなくなりました。
このデータを今度は、「日付」で5/3以降で検索をかけますと、トータルで出てきます。
(Aさん:2種類、Bさん:3種類)
自己リレーションのキーを「ひと」「日付」にすると、Aさん:1種類、Bさん:1種類で正しく表示されますが
今度はすべて表示にした時にもAさん:1種類、Bさん:1種類となってしまいます。
自己リレーションのオリジナルテーブルを絞り込んだときは自己リレーションも同じく絞られる方法はないでしょうか?
よろしくお願いします。
Offline
表示したい日付を入力するグローバルフィールドを作ります。
さらに計算フィールド・グローバルを二つ作り、
日付グローバルに入力が有ればその日付を入力
なければ、
遠い過去の日付(例えば 0001/1/1)
と
遠い未来の日付(例えば 3000/12/31)
リレーションの照合に
過去 <= 日付
and
未来 >= 日付
を加えます。
他のフィールドでも検索が有るのなら同様に考えればいいですが、
だんだんに厄介になりますよね ;;
そうなったらスクリプトかな。。
Offline
チポ様
ありがとうございます。
検索条件もリレーションのキーに含めるのですね。たくさん条件がある時は大変ですね(文言で含む検索など)
ずうずうしいですが、スクリプトになる場合はどのようにやるのでしょうか?
簡単に教えていただけるとありがたいです。
よろしくお願い致します。
Offline
検索後
ひと 商品 の順でソート
最初のレコードから順に、
ひとが変わったらカウントをリセット
商品が前のレコードと変わったら、カウントをアップ
手抜の説明ですが、
これを元にスクリプトを作ればいいでしょう。
Last edited by チポ (2016-06-22 16:21:48)
Offline
チポ様
ありがとうございます。
なるほど!1行ずつ読んでカウントしていくのですね。
こちらの方が私には馴染みがあります笑
たくさん質問をしてしまって申し訳ないです。
とても参考になりました!ありがとうございました。
Offline
Pages: 1
[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 524.45 KiB (Peak: 544.99 KiB) ]