如何实现从DBGrid中提取符合条件的记录? |
尚未結案
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
各前辈
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 發送簡訊給我 |
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 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
引言: 前辈:出现了一个新问题,当我的最新价格,最高价格,平均价格,分别在DBEdit1,DBEdit2,DBEdit3显示出, 当我点击到其中任何一个DBEdit时,显示的结果就会消失,是怎么回事?ps.若有新的問題請另開新文章以配合版規, 並將本題先結案!! 就你的狀況來看有可能是你的 DBEdit 有寫什麼對應的事件, 請自行檢查看看. 或是你可以利用 TEdit 或 TLabel 來做顯示這些查詢的資料, 而不要使用 TDBEdit, 因為一般該元件都會連結到 datasource, 是一種資料感知元件, 它的內容會依照對應的 dataset 來變動的哦! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |