ClientDataSetの内容を集計するには?

解決


ぺんぺん  2006-01-18 02:41:12  No: 19738

複数のテーブルよりデータを抽出しClientDataSetに登録して
その内容をあるキーで集計したいのですが、

SQLで言うところの
select key, sum(data) from Table group by key
のTable部分をClientDataSetを使って実行するのは可能でしょうか?

これで意味が通じるかなぁ?


通りすがお  2006-01-18 18:22:11  No: 19739

的外れな回答かもしれませんがとりあえず今やってる方法を。

①オブジェクトツリーでClientDataSetを選択し、その中のFieldsで
  右クリック→全ての項目追加で項目を追加する。  

②同じくFieldsで右クリック→項目の新規作成を選択。
  型:Aggregate、項目の種類:集合体、名前:適当(仮にSUM_KINGAKとする)

③作成したフィールド(SUM_KINGAK)を選択しプロパティを変更する。
  Active : True、Expression:SUM(KINGAK)←KINGAKというフィールドを集計する場合

もっとスマートな方法がありそうですがとりあえずこれで集計はできるのではないかと思います。

外していたらごめんなさい_(._.)_


ぺんぺん  2006-01-20 01:11:30  No: 19740

通りすがおさん
レスありがとうございます
どーもうまくいきませんねぇ

それで
Tableを使ってキャッシュに一時保存してそれをSQL文で集計しようと思ったんですがどうも無理みたいです
なにか良い策はないですかねぇ?


通りすがお  2006-01-20 01:44:25  No: 19741

すいません、記述忘れがありました。

ClientDataSetのAggregatesActiveプロパティをTrueに変える必要があります。

最近このClientDataSetを使い始めたのでまだまだ勉強中なのですが、
これで抽出したデータの合計を取得することができているようです。


ぺんぺん  2006-01-20 02:39:31  No: 19742

この合計はClientDataSetのすべての合計なんでしょうか?
それともキーでGroup byされた合計なんでしょうか?


通りすがり  2006-01-20 04:21:57  No: 19743

掲示した内容だとClientDataSetにあるデータ全てですね。
どうやらぺんぺんさんのお望みのものとは違うようです、申し訳ありません。

>>複数のテーブルよりデータを抽出
の段階でグループ化してその結果をClientDataSetni登録してはだめなのでしょうか?
文章の理解力がなくて申し訳ありません(TдT)


ぺんぺん  2006-01-20 17:21:05  No: 19744

通りすがりさん
ありがとうございます。

その段階ではちょっと無理なんです。
複数のテーブルで抽出条件が違うので。。。。。

一旦解決して上記のキャッシュについて再度質問してみます
何か良い情報がありましたらお知らせください。m(_ _)m


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加