虛擬欄位的問題 |
尚未結案
|
thomas0728
中階會員 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
各位大大好: 我有一個 sql 語法
select goods_no,price,quantity,(price*quantity) as amount from goods 其中 amount 是虛擬欄位,我的程式是三層式的,所以這個 sql 在 APSERVER 產生並取得資料在傳到後端,前端是透過如下方式串接資料 //BillData 是 OleVariant 型態 cds:=TClientDataSet.Create(self); CDS.dATA:=BillData; ds.DataSet:=cds; fdbgrid.DataSource:=ds 當我在編輯資料時,如果 price 或 quantity 任一欄位有修改到 只要我不去點選 amount 欄位,就不會有錯誤產生,但當我去點選 amount 欄位,並跳離此欄位時,就會出現錯誤訊息,並告訴我此欄位不能修改請問我該如何解決此問題 如果愛情也有味覺 那麼 有沒有ㄧ種愛 微微泛酸 不太苦澀 有點甜密 嚐起來的滋味讓人想起幸福 Thomas Chiou
------
Thomas Chiou |
thomas0728
中階會員 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
|
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
|
thomas0728
中階會員 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
因為我的欄位是執行時期產生的,並無法在設計時期就透過 cLIENTDATASET 的欄位編輯器來設定ProviderFlags的pfInUpdate,pfInWhere設成False
我在程式中加入
cds.FieldByName('amount').ProviderFlags 發現後面就沒屬性可以設定了
請問我該如何設定
謝謝大大 如果愛情也有味覺
那麼 有沒有ㄧ種愛
微微泛酸 不太苦澀 有點甜密
嚐起來的滋味讓人想起幸福
Thomas Chiou
------
Thomas Chiou |
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
引言: 因為我的欄位是執行時期產生的,並無法在設計時期就透過 cLIENTDATASET 的欄位編輯器來設定ProviderFlags的pfInUpdate,pfInWhere設成False 我在程式中加入 cds.FieldByName('amount').ProviderFlags 發現後面就沒屬性可以設定了1.ClientDataSet如果你知道欄位結構可以DesignTime時自己手動加入 2.cds.FieldByName('amount').ProviderFlags := []; 混心雜欲 棄修身~唉
------
唉~ |
thomas0728
中階會員 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
|
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
你試試把Provider的UpdateMode改成(upWhereKeyChange)
ResolveToDataSet改成False 如過還不行的話我建議你採用另一種做法,不要在sql中產生虛擬欄位
直接在前端ClientDataSet的用Calculated 或InternalCalc欄未來作
大略步驟如下
1.將sql修正為select goods_no,price from goods
2.雙擊ClientDataSet會顯示出空白的欄位編輯器 按右鍵選NewField
3.加入goods_no,price兩欄位 FieldType選Data(Type and Size 必須同資料庫設定)
4.加入amount欄位, FieldType選Calculated或InternalCalc (Type 選currency 或 float 若確定為整數 選integer也可) 5.在ClientDataSet的OnCalculated事件加入下述程式碼
procedure TForm1.ClientDataSet1CalcFields(DataSet: TDataSet); begin if not(DataSet.FieldByName('goods_no').IsNull or DataSet.FieldByName('price').IsNull) then DataSet['amount'] := DataSet['goods_no'] * DataSet['price']; end;混心雜欲 棄修身~唉
------
唉~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |