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

DBGrid 加總要寫在哪裡比較好

尚未結案
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-31 11:17:58 IP:218.170.xxx.xxx 未訂閱
各位前輩好: DBGrid 加總應要寫在哪裡比較好 |數量|單價|小計 |XXXX|XXXX|XXXX |XXXX|XXXX|XXXX 1. 請問小計的計算程式應要寫哪? 2. 我還有一個 DBEdit 是 總價 加總程式又要寫哪呢? Carter
chih
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-31 11:40:07 IP:218.164.xxx.xxx 未訂閱
引言: 1. 請問小計的計算程式應要寫哪?
先在你的Query裡面 new 一個虛擬欄位..TOTAL.. 小計寫在數量Validate事件.. procedure TForm1.Query1數量Validate(Sender: TField); begin if Query1.State=dsBrowse then exit; Query1.FieldByName('TOTAL').Value=Query1.FieldByName('數量').Value*Query1.FieldByName('單價').Value; end; 然後再將 單價 的Validate指向該數量Validate事件...
引言:2. 我還有一個 DBEdit 是 總價 加總程式又要寫哪呢? Carter
貼一段我的做法給你參考看看...在queryafterpost事件... procedure TForm1.query1AfterPost(DataSet: TDataSet); var Lock_Record: TBookMark; WTOTAL_PRICE: REAL; begin Lock_Record := query1.GetBookMark; query1.DisableControls; query1.first; WTOTAL_PRICE:= 0; while not query1.eof do begin //加總DBGRID的金額 WTOTAL_PRICE := WTOTAL_PRICE query1PRICE.Value; query1.Next; end; query1.first; query1.EnableControls; Query2.Edit;//假設你的DBEdit DataSource是Query2 Query2.FieldByName('TOTAL').Value:= floattostr(WTOTAL_PRICE);//加總的金額 Query2.Post; query1.FreeBookMark(Lock_Record); end; TRY TRY SEE..
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-31 11:47:38 IP:218.170.xxx.xxx 未訂閱
謝謝chih 大大的答覆 : 可是我裡面已經有一個 小計 的欄位了 還要設一個 TOTAL 嗎 ?? 我學的還不是很深不好意思問那麼淺的問題... Carter
Miles
尊榮會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-31 11:58:45 IP:61.30.xxx.xxx 未訂閱
Hi carter6兄您好: 想請問你的小計欄位是資料庫裡面就有的欄位嗎? 通常我會在Design Time時, 在DataSet的Field Edit多加一個Calculated欄位, 並在DataSet的OnCalculate事件寫以下程式碼

Query1.FieldByName('CalculatedFieldName').AsInteger := 
   Query1.FieldByName('數量').AsInteger * Query1.FieldByName('單價').AsInteger; 
我不是高手, 高手是正在銀幕前微笑的人.
------


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


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-31 13:18:39 IP:218.170.xxx.xxx 未訂閱
您好 Miles : 我的小計是有實體欄位的 我還要在加一個欄位嗎?? Carter
Miles
尊榮會員


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-31 14:00:04 IP:218.160.xxx.xxx 未訂閱
Hello: 你可以實體欄位先隱藏(Visible := False), 以新欄位顯示, 若有資料要回存記得將Calculated欄位的值回填到實際欄位. 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
chih
版主


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-11-01 18:41:56 IP:218.165.xxx.xxx 未訂閱
引言: 謝謝chih 大大的答覆 : 可是我裡面已經有一個 小計 的欄位了 還要設一個 TOTAL 嗎 ?? 我學的還不是很深不好意思問那麼淺的問題... Carter
如果你已經有一個實體欄位,那就不用設TOTAL了.改為 procedure TForm1.Query1數量Validate(Sender: TField); begin if Query1.State=dsBrowse then exit; Query1.FieldByName('小計').Value=Query1.FieldByName('數量').Value*Query1.FieldByName('單價').Value; end;
ying0515
中階會員


發表:90
回覆:168
積分:81
註冊:2003-01-04

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-11-03 10:00:01 IP:61.218.xxx.xxx 未訂閱
也可用TClientDataSet.TAggregateField來處理 '小計' 的總計. 在Fields editor新增TAggregateField, 並在TAggregateField.Expression 設sum(小計) Delphi follower
------
Delphi
系統時間:2024-06-27 0:40:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!