線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1917
推到 Plurk!
推到 Facebook!

dbgrid中统计查询结果的方法

答題得分者是:cashxin2002
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-03 22:29:02 IP:222.184.xxx.xxx 未訂閱
在查询窗口中,点查询后相关的结果显示在DBGRID中,我想要这样做,在窗口下再放一个状态栏,上面的字为,符合查询条件的记录共有( )条,合计 ( ),就是要统计出符合条件的记录有几个,记录中其中有一个字段叫应收金额,要把所有的应收金额加在一起合计出来。请问前辈这样的代码如何写。写在什么事件里(写在点击查询的代码后吗),谢谢!
------
我的编程起步于ktop,我将永远支持ktop
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-04 08:25:56 IP:222.184.xxx.xxx 未訂閱
记录数我写成这样了:statusbar1.Panels [1].Text:= inttostr(dbgrid1.DataSource.DataSet.RecordCount);不知对不对,那么合计里面等于什么呢?
------
我的编程起步于ktop,我将永远支持ktop
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-04 09:07:32 IP:202.39.xxx.xxx 未訂閱
您好! 合計的部份可用個 Query 下個 SQL 把所要的合計值 Select 出來即可. -- hagar.
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-04 09:14:40 IP:202.62.xxx.xxx 未訂閱
您好﹗    在Form中再加一個ADOQuery元件(這里以ADOQuery2為名舉例)﹐然后在您查詢的程式碼最后(即查詢的資料集元件已經Open)增加如下﹕
  ADOQuery2.Close;
  ADOQuery2.SQL.Clear;
  ADOQuery2.SQL.Add('Select Sum(應收金額) From 資料表名稱');
  ADOQuery2.Open;
end;
然后在對應當前DBGrid元件的資料集元件(這里以ADOQuery1舉例)的AfterOpen事件中鍵入如下程式碼﹕
begin
  StatusBar1.Panel[0].Text := '符合查詢條件的記錄共有'+IntToStr(DBGrid1.DataSource.DataSet.RecordCount)+'條';
  StatusBar1.Panel[1].Text := '合計'+FloatToStr(ADOQuery2.Fields[0].Value);
end;
以上的方法在使用時﹐需要先設定StatusBar1元件的Panels屬性﹐開啟此屬性的對話窗口中﹐新增兩個Panel﹐并將SimplePanel屬性設為False﹐在顯示時也是將StatusBar1的顯示分為兩個區域﹒ 另外﹐從您的敘述來看﹐似乎在StatusBar1元件顯示資料時﹐只使用了單個Panel用作顯示﹐那樣的話﹐除了以上的方法﹐也可直接使用其SimplePanel屬性﹐將SimplePanel屬性設成True﹐然后將程式碼改成如下即可﹕
begin
  StatusBar1.SimpleText := '符合查詢條件的記錄共有'+IntToStr(DBGrid1.DataSource.DataSet.RecordCount)+'條﹐合計'+FloatToStr(ADOQuery2.Fields[0].Value);
end;
如果查詢出的資料是允許使用者修改﹑刪除﹐需要即時的在StatusBar1中反應出相對應的記錄筆數和合計數量更動﹐您可將以上StatusBar1元件部分的程式碼改寫在DataSource元件的OnDataChange事件中﹒ 供參考﹗ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-04 10:32:03 IP:222.184.xxx.xxx 未訂閱
ADOQuery2.SQL.Add('Select Sum(應收金額) From 資料表名稱'); 这个资料表名称是什么?我关键是在这一点不懂,比如我第一个ADOQeyr1的资料表名称是xx,那么我这个ADQUERY2 应该是从ADOQUERY1中查询的结果中来的,而不是整个的数据表中的资料。就是说我这个应收金额合计是从动态的查询结果中统计来的。
------
我的编程起步于ktop,我将永远支持ktop
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-04 11:18:57 IP:202.62.xxx.xxx 未訂閱
您好﹗    很簡單的方法﹐就是把ADOQuery1的SQL查詢寫在ADOQuery2的資料庫名稱部分﹐即子查詢語法﹐如下﹕ Select Sum(應收金額) From (Select * From 資料表 Where 字段=1) 把您的ADOQuery1的所有SQL語法寫到如上範例的紅色部分即可﹒ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-04 12:02:55 IP:222.184.xxx.xxx 未訂閱
cashxin2002前辈,好象不好办,因为ADOQUERY1的SQL好长呀,是为8个查询条件设的,IF CHECKBOX1 THEN......一共8个可能,而且是多选也可以的。
------
我的编程起步于ktop,我将永远支持ktop
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-04 12:12:58 IP:202.62.xxx.xxx 未訂閱
您好﹗    因為ADOQuery1中的SQL敘述已經被指定﹐所以可以使用組字串來加入到ADOQuery2的SQL中﹐如下﹕
ADOQuery2.Close;
  ADOQuery2.SQL.Clear;
  ADOQuery2.SQL.Text := 'Select Sum(應收金額) From ('
    + ADOQuery1.SQL.Text
    + ')';
  ADOQuery2.Open;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
amy012117
一般會員


發表:13
回覆:5
積分:3
註冊:2005-06-04

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-04 23:25:41 IP:220.229.xxx.xxx 未訂閱
雖然寫得很清楚,可是我還是看不太懂,可不可以用圖表說明呀!!!!
anags
一般會員


發表:0
回覆:1
積分:0
註冊:2007-09-24

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-09-24 09:38:20 IP:60.0.xxx.xxx 訂閱
你好
你的思路很好,但sql语句无法执行。出现错误:')' 附近有语法错误
请指教
jackiemi2_seed
中階會員


發表:37
回覆:97
積分:76
註冊:2006-09-11

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-10-18 17:18:53 IP:61.218.xxx.xxx 訂閱
Select Sum(應收金額) From (Select * From 資料表 Where 字段=1) A
(Select * From 資料表 Where 字段=1) 後面需要加上新名字,如上面的"A" 就可以了
===================引 用 anags 文 章===================
你好
你的思路很好,但sql语句无法执行。出现错误:')' 附近有语法错误
请指教
------
OS : Win 7 pro
Program : Delphi 7
DataBase : Ms Sql 2008
系統時間:2024-05-17 14:19:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!