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

請教DBGrid的問題

答題得分者是:T.J.B
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-23 11:28:10 IP:61.221.xxx.xxx 未訂閱
請教各位先進 小弟在DBgrid中處理以下欄位 建議售價 折讓金額 折扣金額 銷售金額 1.銷售金額 = 建議售價- 折扣金額 or 2.銷售金額 = 建議售價* (折讓金額/100) or 3.銷售金額 = 建議售價* (折讓金額/100)-折扣金額 因不知DBGrid該如何指定某一欄位的值 1,2兩ㄍ小弟可以算出但第三項則無法做到程式碼如下 請教各位前輩有好的方式可處理ㄇ procedure TSale.DBGrid1ColExit(Sender: TObject); begin if DBGrid1.SelectedField.FieldName = 'discount' then DM.Sale110.FieldByName('sell_price').AsInteger:= DM.Sale110.FieldByName('prodect_price').AsInteger - DBGrid1.SelectedField.AsInteger; if DBGrid1.SelectedField.FieldName = 'discount_percent' then DM.Sale110.FieldByName('sell_price').AsInteger:= Round(DM.Sale110.FieldByName('prodect_price').AsInteger * (DBGrid1.SelectedField.AsInteger/100)); end;
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-23 16:13:59 IP:61.220.xxx.xxx 未訂閱
你說第三項無法算出 是如何無法算出 比照一二項的做法即可ㄚ 只是要注意 3.銷售金額 = 建議售價* (折讓金額/100)-折扣金額 此式子中的折讓金額不可為0 如果為0會引發ERROR 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-23 17:07:09 IP:61.221.xxx.xxx 未訂閱
T.J.B版主 因為小弟是用DBGrid1.SelectedField.AsInteger 所以當刪除其中一ㄍ值的時候 如刪除折扣金額 但我卻無法取得 折讓金額 來加以計算 ***因不知DBGrid該如何指定某一欄位的值***
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-23 22:29:16 IP:218.160.xxx.xxx 未訂閱
抱歉沒有仔細看你的問題 仔細看了一下 你這樣寫當然會找不到值(看紅色部分)    你判斷的時候可以用DBGrid1.SelectedField.FieldName 但是計算的時候就用Query1.FieldByName('XXX').Asinteger := ....較好 你試試看    例如:(原文) procedure TSale.DBGrid1ColExit(Sender: TObject); begin if DBGrid1.SelectedField.FieldName = 'discount' then DM.Sale110.FieldByName('sell_price').AsInteger:= DM.Sale110.FieldByName('prodect_price').AsInteger -  DBGrid1.SelectedField.AsInteger;<--沒有指定欄位 if DBGrid1.SelectedField.FieldName = 'discount_percent' then DM.Sale110.FieldByName('sell_price').AsInteger:= Round(DM.Sale110.FieldByName('prodect_price').AsInteger * (DBGrid1.SelectedField.AsInteger/100));<--這個也是 end; (修改)[看藍色部分](較理想) procedure TSale.DBGrid1ColExit(Sender: TObject); begin if DBGrid1.SelectedField.FieldName = 'discount' then DM.Sale110.FieldByName('sell_price').AsInteger:= DM.Sale110.FieldByName('prodect_price').AsInteger - DM.Sale110.FieldByName('你的折扣金額欄位名稱').AsInteger; if DBGrid1.SelectedField.FieldName = 'discount_percent' then DM.Sale110.FieldByName('sell_price').AsInteger:= Round(DM.Sale110.FieldByName('prodect_price').AsInteger * (DM.Sale110.FieldByName('你的折讓金額欄位名稱').AsInteger/100)); end; 第三項比照辦理即可 天行健 君子當自強不息~~@.@ 發表人 - T.J.B 於 2003/09/23 22:33:52 發表人 - T.J.B 於 2003/09/23 22:35:03 發表人 - T.J.B 於 2003/09/23 22:45:09 發表人 - T.J.B 於 2003/09/23 22:48:06
------
天行健
君子當自強不息~~@.@
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-24 09:06:08 IP:61.221.xxx.xxx 未訂閱
T.J.B版主 經您的指導小弟試過已經可以了 之前小弟不知道在DBGrid內輸入值後"Query1.FieldByName('XXX').Asinteger" 即有剛剛輸入的值所以才會用"DBGrid1.SelectedField.AsInteger" 現在知道了感謝T.J.B版主的指導
系統時間:2024-06-28 19:10:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!