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

如何实现从DBGrid中提取符合条件的记录?

尚未結案
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-20 16:12:00 IP:218.15.xxx.xxx 未訂閱
各前辈 procedure TfindForm.DBGrid1DblClick(Sender: TObject); var bm:string; begin bm:=bmEdit.Text ; //最新价格 danjiaQuery.Active := false; danjiaQuery.Close ; danjiaQuery.SQL.Clear ; danjiaQuery.SQL.Text := 'Select bianma,mingcheng,danjia,jzrq from "' djpath 'cwjbmxz" where bianma="' bm '" and danjia<>0order by jzrq desc'; danjiaQuery.Active := true; DBEdit1.Text :=danjiaQuery.fieldByName('danjia').AsString; //recordQuery.Locate('bianma;jzrq',VarArrayOf([bm,danjiaQuery.fieldByName('jzrq').Value]),[]); danjiaQuery.Close; //最高价格 danjiaQuery.Active := false; danjiaQuery.Close ; danjiaQuery.SQL.Clear ; danjiaQuery.SQL.Text := 'Select bianma,mingcheng,danjia,jzrq from "' djpath 'cwjbmxz" where bianma="' bm '" and danjia<>0order by danjia desc'; danjiaQuery.Active := true; DBEdit2.Text :=danjiaQuery.fieldByName('danjia').AsString ; danjiaQuery.Close ; //recordQuery.Locate('bianma;jzrq',VarArrayOf([bm,chengbQuery.fieldByName('jzrq').Value]),[]); //平均价格 danjiaQuery.Active := false; danjiaQuery.close; danjiaQuery.SQL.Clear ; danjiaQuery.SQL .Text:='Select bianma, (SUM(danjia*sll) / SUM(sll)) as avgcb from "' djpath 'cwjbmxz" where bianma="' bm '" group by bianma'; danjiaQuery.Active := true; DBEdit3.Text := Format('%-10.4n',[danjiaQuery.fieldByName('avgcb').asfloat]); danjiaQuery.Close; //TFloatField(avgcbQuery.fieldByName('avgcb')).DisplayFormat := '0.000'; //DBEdit3.DataField :=avgcbQuery.fieldByName('avgcb') ; end; 现执行操作时发现所查找的最新价格,最高价格,平均价格,并不是从DBGrid中提取出的,而是从所有记录中提取出来的。 按钮1:所有记录,2: 介于DATE1和DATE2之间 现查不到介于DATE1和DATE2之间的最新价格,最高价格,平均价格。
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-20 16:49:35 IP:203.95.xxx.xxx 未訂閱
HI, 這只是在這三個查詢的 sql command 下條件即可. 如: var date1, date2: TDatetime; //最新价格 danjiaQuery.SQL.Text := 'Select bianma,mingcheng,danjia,jzrq from "' djpath 'cwjbmxz" where bianma="' bm '" and danjia<>0 and jzrq between "' formatdatetime('yyyy/mm/dd',date1) '" and "' formatdatetime('yyyy/mm/dd',date2) '"order by jzrq desc'; 以下兩種做法相同!! 使用 and xxx between date1 and date2 即可. 若是資料庫不支援 between 可以使用 and xxx >= date1 and xxx <= date2 是一樣的.
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-20 17:09:04 IP:218.15.xxx.xxx 未訂閱
timhuang前辈:如果说我查所有记录,也就是按按钮1时,就不会用到DATE1和DATE2了。 还有我在DBGrid 中的记录已经筛选了DATE1和DATE2之间的记录,也就说在DBGrid显示的记录就是介于DATE1和DATE2之间。
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-20 18:02:35 IP:203.95.xxx.xxx 未訂閱
對. 沒錯. 這只是一個 sql command 而已, 至於你要如何使用, 則看你的設計. 不過就你的說明來看. 你只是將 dbgrid1 中的資料篩選過了. 但是要算最新,最高,平均的值時, 就不能再重 dbgrid1 中來進行, 而是要再下 sql command 去做, 了解嗎? 所以建議你可以將按下 1 和 2 鈕分別用不同的 where 條件進資料庫查詢即可! 1 鈕就是現行的流程. 2 鈕則是加上日期的 between 條件!
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-21 08:59:14 IP:218.15.xxx.xxx 未訂閱
但是我是想双击DBGrid 栏位某产品时显示该产品的最新价格,最高价格,平均价格。就有种4情况:1:模糊查询 a:查询所有记录,b:查介于DATE1和DATE2之间的记录。2:精确查询 a:查询所有记录,b:查介于DATE1和DATE2之间的记录; 各查询结果显示在DBGrid栏中,然后想双击DBGrid 栏位某产品时显示该产品的最新价格,最高价格,平均价格。问前辈如何处理?谢谢前辈指点!
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-06-21 10:53:25 IP:218.15.xxx.xxx 未訂閱
问题已解决,谢谢前辈!
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-06-21 15:26:32 IP:218.15.xxx.xxx 未訂閱
前辈:出现了一个新问题,当我的最新价格,最高价格,平均价格,分别在DBEdit1,DBEdit2,DBEdit3显示出, 当我点击到其中任何一个DBEdit时,显示的结果就会消失,是怎么回事? 發表人 - deity 於 2003/06/21 15:27:29
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-06-21 18:54:18 IP:61.62.xxx.xxx 未訂閱
引言: 前辈:出现了一个新问题,当我的最新价格,最高价格,平均价格,分别在DBEdit1,DBEdit2,DBEdit3显示出, 当我点击到其中任何一个DBEdit时,显示的结果就会消失,是怎么回事?
ps.若有新的問題請另開新文章以配合版規, 並將本題先結案!! 就你的狀況來看有可能是你的 DBEdit 有寫什麼對應的事件, 請自行檢查看看. 或是你可以利用 TEdit 或 TLabel 來做顯示這些查詢的資料, 而不要使用 TDBEdit, 因為一般該元件都會連結到 datasource, 是一種資料感知元件, 它的內容會依照對應的 dataset 來變動的哦!
系統時間:2024-06-02 10:06:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!