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