在不少狀況下,咱們須要的數據與數據庫中其它字段的數據相關,例如訂單的金額爲數量與單價的乘積。在應用程序中,若要在顯示訂單具體條目的同時顯示金額,一般要建立一個字段,在顯示該字段以前先進行乘法運算,將金額值存儲在該字段中。可是,若用戶修改了數量或單價,那就不得不更改金額值。這個問題馬上變得複雜起來,幸虧Delphi提供了在數據庫表中定義附加字段的容易方法。這種字段被稱爲計算出的字段(Calculatedfields),它們以數據庫表中的其餘字段爲基礎。計算出的字段的優勢是計算出的值不被存儲在數據庫中,不過,每次記錄發生變化時都要對其進行計算,且須要訪問和顯示字段。下面說明使用計算出的字段的方法。
1. 創建新的工程文件project1, 在form1上放置一個Table、一個Datasource和一個Dbgrid 控件,Datasource1的Datasource 屬性爲Table1,Dbgrid1的Datasource屬性爲Datasource1。Table1中所用的數據庫表爲order.db,將Table1的Active屬性置爲True。 下面是Table1的定義:html
字段名
|
類型
|
說明字段含義
|
Productid
|
+產品
|
編號
|
Quantity
|
N
|
數量
|
Price
|
$
|
單價
|
2. 添加計算出的字段Cash。用鼠標右鍵單擊Table1組件,在彈出菜單中選取FieldsEditor…項,進入字段編輯器;再用鼠標右鍵單擊字段編輯器的字段顯示區? 在彈出菜單中選取Add Fields…項,將<fontface="bookantiqua">Table1的全部字段都加入字段編輯器中;再次用鼠標右鍵單擊字段編輯器的字段顯示區域,在彈出菜單中選取New Field…項,進入新字段編輯器,設新字段的Name爲Cash,Type爲<fontface="bookantiqua">Currency,FieldType爲Calculated,用鼠標單擊OK命令按鈕,即完成了添加計算出的字段Cash。
3 .添加<fontface="bookantiqua">Table1的OnCalcFields事件。其代碼爲:數據庫
procedureTForm1.Table1CalcFields(DataSet: TDataSet);
var
quantity1:single;
price1:Currency;
begin
quantity1:=Table1.FieldByName(quantity).asfloat; //數量
price1:=Table1.FieldByName(price).asCurrency; //單價
Table1.FieldByName(cash).asCurrency:=quantity1*price1; //應付資金
end;編輯器
運行程序,你能夠在表格的Quantity 和Price欄中任意修改數據並移動記錄,Cash欄即刻顯示出與 之相應的金額值。spa