全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1386
推到 Plurk!
推到 Facebook!

adoquery新增的問題

尚未結案
jachi
一般會員


發表:16
回覆:16
積分:11
註冊:2002-09-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-04 10:38:54 IP:61.222.xxx.xxx 未訂閱
我用adoquery 及sql語法,select出我想要的資料 然後..因為..最後一筆記錄想要用運算的方式,而不想再去滾資料庫去算 例如每個檔位最後都要算出平均值 想說這樣的效率會比較好.. 但..我複合查詢出來的dataset可以用新增的方法 把平均值當作是一筆記錄嗎... 要怎麼做才對呢..因為要用dbgrid匯出至excel.. 謝謝囉..
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-04 11:43:54 IP:218.165.xxx.xxx 未訂閱
Database是哪種??
jachi
一般會員


發表:16
回覆:16
積分:11
註冊:2002-09-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-04 11:57:27 IP:61.222.xxx.xxx 未訂閱
引言: Database是哪種??
SQL SERVER 店數 20 20 30 20 50 A銷售1 100 200 100 300 700 A銷售2 B銷售1 B銷售2 累計1 累計2 平均=累計/店數 因為使用者都是要一筆列的資料 所以有些週,累計的部分 因為GROUP BY的對象不同 所以都是用UNION ALL來做.. 但平均那不想再去資料庫裡再去滾一次.. 但我又不想寫入資料庫裡..要怎麼做呢..謝謝囉
mi86018
一般會員


發表:20
回覆:39
積分:21
註冊:2003-11-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-04 19:54:46 IP:61.222.xxx.xxx 未訂閱
我建議用adoquery下好sql語法後得到的RecordSet,用程式去一筆一筆的累計record,然後順便將資料一個一個的放到StringGrid,最後將StringGrid的最後一列填入計算後總和。這樣做會比較簡單,我覺得啦,不知道還有沒有更好的建議。 我是頭號「問題」份子...
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-05 00:55:18 IP:218.165.xxx.xxx 未訂閱
如果是我的話..我會把累計1,累計2開成欄位,當所有的銷售數字都填好了就可以作累計1,累計2寫入資料庫.. 你的平均可以用(累計1 累計2)/店數..然後用一個label來顯示..這樣或許會簡單的多.. TRY TRY SEE...
引言: SQL SERVER 店數 20 20 30 20 50 A銷售1 100 200 100 300 700 A銷售2 B銷售1 B銷售2 累計1 累計2 平均=累計/店數 因為使用者都是要一筆列的資料 所以有些週,累計的部分 因為GROUP BY的對象不同 所以都是用UNION ALL來做.. 但平均那不想再去資料庫裡再去滾一次.. 但我又不想寫入資料庫裡..要怎麼做呢..謝謝囉
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-05 13:36:54 IP:61.221.xxx.xxx 未訂閱
jachi 你好: 既然是sql server 那試一下 stored procesure
------
======================
昏睡~
不昏睡~
不由昏睡~
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-06 03:05:49 IP:203.204.xxx.xxx 未訂閱
jachi 你好:     建議你使用AdoQuery -> TDatasetProvider ->TClientDataSet 架構    DataSetProvider.Options := [poAllowCommandText] ; ClientDataSet.Commandtext := '你原來的SQL指令' ; CliendDataset.Open; CliendDataset.LogChanges := False ; // 因不更新回資料庫,故不用記錄異動資料(對於記憶體的使用較好)    在此 計算額外的資料值(平均值AVG)    Clientdataset.Append; // 新增新的記錄 Clientdataset.FieldByname('XXXXX').AsFloat := '平均值'; Clientdataset.FieldByname('Total').AsFloat := AVG; ....其他欄位 Clientdataset.Post; 最後將ClientDataset匯出到Excel即可 ※ClientDataset從後端取得資料後,對於它的所有異動(新增、修改、刪除),只要你沒使用Clientdataset.Applyupdates 它都不會影後端資料庫的,所以大可放心的對它作任何的處埋 祝好運..............
jachi
一般會員


發表:16
回覆:16
積分:11
註冊:2002-09-26

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-03-10 10:30:51 IP:61.222.xxx.xxx 未訂閱
謝謝各位大大的解答 真是好感動呀 兩個大大的方法都不錯.. 小弟也是自行用string Grid 跑程式去算.. 但因為chanse大大提供clientdataset的用法.. 讓小弟又學會了一招.所以就給大大得分囉.. 另外小弟又學到了一種..是就是下sql指令 在group by XXX,XXX 加上 with Cube 可以算到加總喔.. 提供給大家分享..謝謝囉
系統時間:2024-11-25 16:52:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!