全國計算機(jī)等級考試二級Delphi輔導(dǎo)講義 157

字號:

15.6.1.4 字段部件的訪問
    字段部件對應(yīng)著數(shù)據(jù)庫表中實(shí)際的字段,用戶要讀寫數(shù)據(jù)庫表中的字段值其實(shí)是通過訪問相應(yīng)的字段部件進(jìn)行的。在前面的章節(jié)中我們介紹過在Delphi的數(shù)據(jù)庫應(yīng)用程序中有兩類字段部件:一類是利用字段編輯器創(chuàng)建的永久性字段部件;另一類是隨著數(shù)據(jù)集部件被激活(被打開)而動態(tài)生成的字段部件。對于永久性字段部件的訪問可以直接調(diào)用使用字段部件的名字進(jìn)行。假設(shè)我們在設(shè)計階段利用字段編輯器創(chuàng)建了對應(yīng)于Customer.DB表中Company字段的字段部件Table1Company,下面的代碼訪問Company字段的字段值,并將該字段值顯示在編輯框部件Edit1中。
    Edit1.Text := Table1Company.Value;
    因為company字段是字符串類型的數(shù)據(jù),它與Edit1中的數(shù)據(jù)類型相匹配的,因此可以直接使用字段部件的Value屬性讀取字段值。如果兩個變量的類型不匹配,則要使用表15.9中的轉(zhuǎn)換函數(shù)進(jìn)行字段值的讀取。例如:要讀取Customer.DB表中的CustNo字段的值并將它顯示在編輯??駿dit1中,假設(shè)我們已用字段編輯器(Fields Editor)創(chuàng)建了CustNo相應(yīng)的字段部件,Table1CustNo,則程序代碼如下:
    Edit1.Text := Table1CustNo.AsString;
    訪問動態(tài)生成的字段部件相對要困難一些,因為動態(tài)生成的字段部件是沒有自己的名字的,我們必須利用特殊的手段獲得數(shù)據(jù)庫表中各字段對應(yīng)的字段部件,然后對字段進(jìn)行訪問。一般采用的方法有兩種:
    ● 使用數(shù)據(jù)集部件的Fields屬性
    ● 使用數(shù)據(jù)集部件的FieldByName方法
    1. 使用數(shù)據(jù)集部件的Fields屬性訪問數(shù)據(jù)庫表中各字段
    數(shù)據(jù)集部件的Fields屬性是與數(shù)據(jù)集部件相連的數(shù)據(jù)庫表中各個字段對應(yīng)的動態(tài)字段部件的名字列表,因此我們可以通過Fields屬性的下標(biāo)(即索引號)來訪問各字段部件,從而達(dá)到訪問數(shù)據(jù)庫表中的各個字段,索引號從0開始,也就是說數(shù)據(jù)庫表中第一個字段對應(yīng)著Fields列表的第一行即0索引,第二個字段對應(yīng)的Fields的索引號為1,以此類推。下面的例子是訪問Customer.DB表中的第一個字段并在編輯框Edit1中顯示其字段值。假設(shè)Table1與數(shù)據(jù)庫表Customer.DB相連。
    Edit1.Text := Table1.Fields[0].AsString;
    下面的代碼是將編輯框Edit1中的字符值賦給Customer.DB表中當(dāng)前記錄的第一個字段,以實(shí)現(xiàn)修改Customer.DB表中的字段值。
    Table1.Fields[0].AsString := Edit1.Text;
    2.使用數(shù)據(jù)集部件的FieldByName方法訪問字段部件
    在數(shù)據(jù)集部件所擁有的方法中,有一個FieldByName方法,它是專門用于訪問數(shù)據(jù)集部件中動態(tài)生成的字段部件的,調(diào)用FieldByName方法時,必須要把數(shù)據(jù)庫表中的字段名作為參數(shù)傳給FieldByName,調(diào)用該方法后便可以得到該字段所對應(yīng)的字段部件,這樣通過字段部件我們便可以讀寫表中相應(yīng)的字段值了,用這種方法訪問字段部件時,必須要知道數(shù)據(jù)庫表中各個字段的名字,否則是沒有辦法調(diào)用該方法的。還是基于上面的假設(shè)。下面是訪問Customer.DB表中的CustNo字段的程序代碼:
    Edit1.Text := Table1.FieldByName('CustNo').AsString;
    Table1.FieldByName('CustNo').AsString := Edit1.Text;
    在使用這兩種方法訪問動態(tài)生成的字段部件時,可以使用表15.9中的轉(zhuǎn)換函數(shù),在變量和字段值之間進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換。
    15.6.2 字段編輯器的使用
    字段編輯器(Fields Editor)主要是用于創(chuàng)建永久性的字段部件。在前面的內(nèi)容中我們知道,當(dāng)TTable或TQuery部件與數(shù)據(jù)庫表相連接時,且TTable或TQuery部件被激活時(Active屬性被設(shè)置成True或調(diào)用Open方法),Delphi便動態(tài)地為表中各字段創(chuàng)建相應(yīng)的字段部件,字段部件中包含著相應(yīng)字段的很多信息如字段值、字段值的顯示、編輯格式等,有時我們在應(yīng)用程序中為了更加方便、可靠地訪問數(shù)據(jù)庫表中各個字段,需要創(chuàng)建永久性的字段部件,這時我們必須要借助于字段編輯器來實(shí)現(xiàn)我們的設(shè)想。字段編輯器的主要功能如下:
    ● 創(chuàng)建永久性的字段部件
    ● 修改永久性字段的顯示屬性,如顯示格式、顯示寬度等
    ● 刪除永久性的字段部件
    ● 增加新的永久性的字段部件
    ● 定義計算字段(不對應(yīng)數(shù)據(jù)庫表中實(shí)際的字段,字段值根據(jù)表中其他字段的值計算得出)