15.6.1.4 字段部件的訪問
字段部件對應著數據庫表中實際的字段,用戶要讀寫數據庫表中的字段值其實是通過訪問相應的字段部件進行的。在前面的章節中我們介紹過在Delphi的數據庫應用程序中有兩類字段部件:一類是利用字段編輯器創建的永久性字段部件;另一類是隨著數據集部件被激活(被打開)而動態生成的字段部件。對於永久性字段部件的訪問可以直接調用使用字段部件的名字進行。假設我們在設計階段利用字段編輯器創建了對應於Customer.DB表中Company字段的字段部件Table1Company,下面的代碼訪問Company字段的字段值,並將該字段值顯示在編輯框部件Edit1中。
Edit1.Text := Table1Company.Value;
因為company字段是字符串類型的數據,它與Edit1中的數據類型相匹配的,因此可以直接使用字段部件的Value屬性讀取字段值。如果兩個變量的類型不匹配,則要使用表15.9中的轉換函數進行字段值的讀取。例如:要讀取Customer.DB表中的CustNo字段的值並將它顯示在編輯模框Edit1中,假設我們已用字段編輯器(Fields Editor)創建了CustNo相應的字段部件,Table1CustNo,則程序代碼如下:
Edit1.Text := Table1CustNo.AsString;
訪問動態生成的字段部件相對要困難一些,因為動態生成的字段部件是沒有自己的名字的,我們必須利用特殊的手段獲得數據庫表中各字段對應的字段部件,然後對字段進行訪問。一般采用的方法有兩種:
● 使用數據集部件的Fields屬性
● 使用數據集部件的FieldByName方法
1. 使用數據集部件的Fields屬性訪問數據庫表中各字段
數據集部件的Fields屬性是與數據集部件相連的數據庫表中各個字段對應的動態字段部件的名字列表,因此我們可以通過Fields屬性的下標(即索引號)來訪問各字段部件,從而達到訪問數據庫表中的各個字段,索引號從0開始,也就是說數據庫表中第一個字段對應著Fields列表的第一行即0索引,第二個字段對應的Fields的索引號為1,以此類推。下面的例子是訪問Customer.DB表中的第一個字段並在編輯框Edit1中顯示其字段值。假設Table1與數據庫表Customer.DB相連。
Edit1.Text := Table1.Fields[0].AsString;
下面的代碼是將編輯框Edit1中的字符值賦給Customer.DB表中當前記錄的第一個字段,以實現修改Customer.DB表中的字段值。
Table1.Fields[0].AsString := Edit1.Text;
2.使用數據集部件的FieldByName方法訪問字段部件
在數據集部件所擁有的方法中,有一個FieldByName方法,它是專門用於訪問數據集部件中動態生成的字段部件的,調用FieldByName方法時,必須要把數據庫表中的字段名作為參數傳給FieldByName,調用該方法後便可以得到該字段所對應的字段部件,這樣通過字段部件我們便可以讀寫表中相應的字段值了,用這種方法訪問字段部件時,必須要知道數據庫表中各個字段的名字,否則是沒有辦法調用該方法的。還是基於上面的假設。下面是訪問Customer.DB表中的CustNo字段的程序代碼:
Edit1.Text := Table1.FieldByName('CustNo').AsString;
Table1.FieldByName('CustNo').AsString := Edit1.Text;
在使用這兩種方法訪問動態生成的字段部件時,可以使用表15.9中的轉換函數,在變量和字段值之間進行數據類型的轉換。
15.6.2 字段編輯器的使用
字段編輯器(Fields Editor)主要是用於創建永久性的字段部件。在前面的內容中我們知道,當TTable或TQuery部件與數據庫表相連接時,且TTable或TQuery部件被激活時(Active屬性被設置成True或調用Open方法),Delphi便動態地為表中各字段創建相應的字段部件,字段部件中包含著相應字段的很多信息如字段值、字段值的顯示、編輯格式等,有時我們在應用程序中為了更加方便、可靠地訪問數據庫表中各個字段,需要創建永久性的字段部件,這時我們必須要借助於字段編輯器來實現我們的設想。字段編輯器的主要功能如下:
● 創建永久性的字段部件
● 修改永久性字段的顯示屬性,如顯示格式、顯示寬度等
● 刪除永久性的字段部件
● 增加新的永久性的字段部件
● 定義計算字段(不對應數據庫表中實際的字段,字段值根據表中其他字段的值計算得出)
15.6.2.1 打開字段編輯器
為TTable和TQuery部件打開字段編輯有兩種方法:
● 用鼠標左鍵雙擊TTable或TQuery部件
● 選擇TTable部件或TQuery部件,然後單擊鼠標右鍵,然後從彈出式菜單中選擇 Fields Editor
字段編輯器Fields Editor被打開以後,窗體的名字和數據集部件的名字會顯示在窗口的標題上。
字段編輯器Fields itor中的Fields列表框是用於顯示已經創建的永久性字段部件的名字的。字段編輯器Fields Editor第一次被打開時,該列表框是空的,因為在此之前的字段部件都是動態生成的,只要Fields列表框中有字段部件,那麼與數據集部件相連的數據浏覽部件中只顯示Fields中列出的字段的字段值,在Fields列表框中,可以通過拖放字段部件的名字來改變相應的字段值在數據浏覽部件中的顯示順序,如在TDBGrid部件中根據各字段在Fields列表框中的順序顯示各字段的值。
在字段編輯器Fields Editor窗體上面的導航按鈕是用來移動TTable或TQuery部件中的記錄指針的,使用導航按鈕可以將記錄指針向前、向後移動,也可以移到第一條記錄處或最後一條記錄處。
字段編輯器中的彈出式菜單
15.6.2.2 增加字段部件
字段編輯器Fields Editor中的Add Fields菜單項用於向數據集部件中增加字段部件的,單擊Add Fields菜單項時便會打開增加字段部件對話框,如圖15.9所示。Available Fields列表框中顯示出數據集部件TTable或TQuery中當前可以用於創建永久字段部件的全部的字段,也就是說Available Fields列表框中顯示字段是數據庫表中實際存在的字段,而且還沒有為這些字段創建相應的永久性的字段部件,在缺省狀態下所有的字段都被選擇用於創建相應的永久性的字段部件,用鼠標單擊其中的字段名可以有選擇地創建其相應的永久性的字段部件,選擇好有關的字段名之後,單擊OK按鈕便可以創建永久性的字段部件。
字段編輯器的增加字段部件對話框