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

统计filter后的sum值

答題得分者是:Fishman
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-31 08:45:13 IP:220.184.xxx.xxx 未訂閱
各位高手: 小弟想问一下,我使用了adoquery的filter功能,但我用sum之后出来的却是所有recorders的总和,而不是filter后的总和,有何好的方法吗?是否只能用sql中的like功能?我是用delphi6和sql7,code如下,多谢了! adoquery1.Active:=false; ADOquery1.Filtered := False; ADOquery1.Filter := 'name Like %' edit1.Text '%; ADOquery1.Filtered := True; adoquery1.close; adoquery1.sql.clear; adoquery1.sql.add('SELECT *'); adoquery1.sql.add('FROM mytable'); adoquery1.sql.add('UNION ALL'); adoquery1.sql.add('SELECT ' '总计' '''' 'AS name' ','); adoquery1.sql.add('SUM(je3) AS je3, NULL AS dj'); adoquery1.sql.add('FROM mytable'); adoquery1.Active:=active;
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-31 09:22:39 IP:210.65.xxx.xxx 未訂閱
Hi luowy651,    建議不要用 Filter,直接由 SQL Command 中過濾資料,程式修改如下:
procedure TForm1.Button1Click(Sender: TObject);
var
  filteer : string;
begin
  filter := 'name like '   quotedstr('%'   edit1.text  '%');
  adoquery1.close;
  adoquery1.sql.clear;
  adoquery1.sql.add('select *');
  adoquery1.sql.add('from mytable');
  adoquery1.sql.add('where '   filter);
  adoquery1.sql.add('union all');
  adoquery1.sql.add('select ' '??' '''' 'as name' ',');
  adoquery1.sql.add('sum(je3) as je3, null as dj');
  adoquery1.sql.add('from mytable');
  adoquery1.sql.add('where '   filter);
  adoquery1.active:=active;
end;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-31 09:25:22 IP:220.135.xxx.xxx 未訂閱
Hi luowy651 你好: Filter的功能是將已經Open出來的資料做篩選, 所以本身沒有加總的功能, 建議直接從SQL指令下手.
   adoquery1.close;
   adoquery1.sql.clear;
   adoquery1.sql.add('SELECT *');
   adoquery1.sql.add('FROM mytable');
   adoquery1.sql.add('UNION ALL');
   adoquery1.sql.add('SELECT ' '总计' '''' 'AS name' ',');
   adoquery1.sql.add('SUM(je3) AS je3, NULL AS dj');
   adoquery1.sql.add('FROM mytable');
   adoquery1.sql.add('Where name Like ''%' edit1.Text '%''');
   adoquery1.Open;
我不是高手, 高手是正在銀幕前微笑的人. Sorry Fishman大大已經先有答覆了 發表人 -
------


我不是高手, 高手是正在銀幕前微笑的人.
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-31 09:44:28 IP:220.184.xxx.xxx 未訂閱
原来如此,感谢两位高手的及时回应,小弟感激莫名,fishman大大先回复,所以就把分给fishman大大了,再谢两位!
系統時間:2024-06-30 11:44:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!