15.6.2.1 打開字段編輯器
為TTable和TQuery部件打開字段編輯有兩種方法:
● 用鼠標(biāo)左鍵雙擊TTable或TQuery部件
● 選擇TTable部件或TQuery部件,然后單擊鼠標(biāo)右鍵,然后從彈出式菜單中選擇 Fields Editor
字段編輯器Fields Editor被打開以后,窗體的名字和數(shù)據(jù)集部件的名字會(huì)顯示在窗口的標(biāo)題上。
字段編輯器Fields itor中的Fields列表框是用于顯示已經(jīng)創(chuàng)建的永久性字段部件的名字的。字段編輯器Fields Editor第一次被打開時(shí),該列表框是空的,因?yàn)樵诖酥暗淖侄尾考际莿?dòng)態(tài)生成的,只要Fields列表框中有字段部件,那么與數(shù)據(jù)集部件相連的數(shù)據(jù)瀏覽部件中只顯示Fields中列出的字段的字段值,在Fields列表框中,可以通過拖放字段部件的名字來改變相應(yīng)的字段值在數(shù)據(jù)瀏覽部件中的顯示順序,如在TDBGrid部件中根據(jù)各字段在Fields列表框中的順序顯示各字段的值。
在字段編輯器Fields Editor窗體上面的導(dǎo)航按鈕是用來移動(dòng)TTable或TQuery部件中的記錄指針的,使用導(dǎo)航按鈕可以將記錄指針向前、向后移動(dòng),也可以移到第一條記錄處或最后一條記錄處。
字段編輯器中的彈出式菜單
15.6.2.2 增加字段部件
字段編輯器Fields Editor中的Add Fields菜單項(xiàng)用于向數(shù)據(jù)集部件中增加字段部件的,單擊Add Fields菜單項(xiàng)時(shí)便會(huì)打開增加字段部件對(duì)話框,如圖15.9所示。Available Fields列表框中顯示出數(shù)據(jù)集部件TTable或TQuery中當(dāng)前可以用于創(chuàng)建永久字段部件的全部的字段,也就是說Available Fields列表框中顯示字段是數(shù)據(jù)庫(kù)表中實(shí)際存在的字段,而且還沒有為這些字段創(chuàng)建相應(yīng)的永久性的字段部件,在缺省狀態(tài)下所有的字段都被選擇用于創(chuàng)建相應(yīng)的永久性的字段部件,用鼠標(biāo)單擊其中的字段名可以有選擇地創(chuàng)建其相應(yīng)的永久性的字段部件,選擇好有關(guān)的字段名之后,單擊OK按鈕便可以創(chuàng)建永久性的字段部件。
字段編輯器的增加字段部件對(duì)話框
15.6.2.3 刪除字段部件
用字段編輯器Fields Editor為數(shù)據(jù)集部件創(chuàng)建好的字段部件都會(huì)顯示在字段編輯器的Fields列表框中,如果用戶認(rèn)為其中的一些字段部件不合適或不再需要時(shí),可以單擊這些不需要的字段部件,然后單擊鼠標(biāo)右鍵彈出一傭彈出式菜單,從彈出式菜單中選擇Delete菜單項(xiàng),便可刪除相應(yīng)的字段部件,如果在彈出式菜單中單擊Select All菜單項(xiàng),然后選擇Delete菜單項(xiàng),這樣會(huì)刪除已創(chuàng)建好的所有的字段部件。某一個(gè)字段部件被刪除以后,通過單擊Add Fields菜單項(xiàng)可以重新創(chuàng)建,只是先前為該字段部件設(shè)定的一些屬性將不復(fù)存在。
15.6.2.4 定義新的字段部件
字段編輯器Fields Editor中的彈出式菜單中New Fields菜單項(xiàng)是用來為數(shù)據(jù)集部件TTable或TQuery創(chuàng)建用于顯示目的的新的字段部件,我們可以用它來為數(shù)據(jù)庫(kù)表中實(shí)際存在的字段創(chuàng)建新的字段部件(如改變字段的數(shù)據(jù)類型,使它的字段值被顯示時(shí)不再需有關(guān)的類型轉(zhuǎn)換),但是我們使用New Fields菜單項(xiàng)創(chuàng)建新的字段部件主要是創(chuàng)建計(jì)算字段。計(jì)算字段并不與數(shù)據(jù)庫(kù)表中實(shí)際存在的字段對(duì)應(yīng),它的字段值是根據(jù)表中其它的字段值計(jì)算而來的,具體的計(jì)算表達(dá)式由用戶為TTable部件或TQuery部件的OnCalCFields事件編寫程序代碼時(shí)決定。
定義(創(chuàng)建)計(jì)算字段的過程如下:
1.單擊字段編輯器中的New Fields菜單項(xiàng),定義字段對(duì)話框如圖15.11所示。
2.在FieldName編輯框中輸入新字段部件的名字,或者從下拉式列表框中選擇一個(gè)已存在的字段部件的名字。
3.在FieldType列表框中為新字段部件選擇一個(gè)字段類型。
4.單擊Calculated檢查框,確認(rèn)定義的新字段部件是計(jì)算字段。
5.單擊ok按鈕,創(chuàng)建上述定義的計(jì)算字段部件,此時(shí)該字段部件的名字會(huì)自動(dòng)地加入到字段編輯中的Fields列表框中。
創(chuàng)建新的計(jì)算字段
新的計(jì)算字段創(chuàng)建好了之后,它是沒有任何字段值的,我們必須要編寫相應(yīng)的程序代碼,根據(jù)數(shù)據(jù)庫(kù)表中實(shí)際存在的字段的字段值為計(jì)算字段的寶定義字段值,我們?yōu)橛?jì)算字段所在數(shù)據(jù)集部件的OnCalcFields事件編寫代碼來為計(jì)算字段賦值,其步驟如下:
1.選擇數(shù)據(jù)集部件TTable或TQuery
2.單擊數(shù)據(jù)集部件的事件頁(yè)
3.雙擊OnCalcFields事件為TTable或TQuery部件編寫事件處理過程
15.7 TReport部件及其應(yīng)用
在一般的數(shù)據(jù)庫(kù)應(yīng)用程序中都包含著為最終用戶提供輸出報(bào)表的功能,使用Delphi開發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序時(shí),可以使用一個(gè)叫TReport的部件來執(zhí)行報(bào)表功能的,報(bào)表的具體格式和內(nèi)容是由Delphi提供的一個(gè)專用報(bào)表生成工具ReprotSmith創(chuàng)建的,它報(bào)表的具體格式和內(nèi)容生成一個(gè)報(bào)表文件,然后為TReport部件設(shè)置相應(yīng)的屬性參數(shù),由TReport部件執(zhí)行報(bào)表功能。
我們可以在設(shè)計(jì)階段雙擊TReport部件,調(diào)用ReportSimith工具或者在Delphi程序組內(nèi)雙擊ReportSmith圖標(biāo)來調(diào)用ReportSmith工具來創(chuàng)建一個(gè)報(bào)表文件,具體的操作步驟和設(shè)計(jì)方法請(qǐng)參看ReportSimth工具的使用說明。
我們?cè)谑褂肨Report部件執(zhí)行報(bào)表功能時(shí),要設(shè)置TReport部件的一些的一些屬性,這些屬性是:
ReportName屬性:說明報(bào)表文件的名字,就是用ReportSmith創(chuàng)建的報(bào)表文件。
ReportDir屬性:說明報(bào)表文件所在的途徑名。
PreView屬性:這是一個(gè)布爾型屬性。若它的值為True,那么在執(zhí)行報(bào)表功能時(shí),只是在屏幕上顯示報(bào)表;若它的值為False,則報(bào)表內(nèi)容將在缺省的打印機(jī)打印出來。
AutoUnload屬性:布爾型屬性,它的值為True時(shí),在執(zhí)行完一個(gè)報(bào)表功能后,自動(dòng)地從內(nèi)存中卸出ReportSmith工具;它的值為False時(shí),在運(yùn)行完一個(gè)報(bào)表功能后,不從內(nèi)存中卸出ReportSmith工具。一般情況下,如果應(yīng)用程序只有一個(gè)報(bào)表或者只有較少的報(bào)表要輸出時(shí),應(yīng)設(shè)置AutoUnload屬性為True,如果應(yīng)用程序一次要輸出多個(gè)報(bào)表,那么要應(yīng)設(shè)置AutoUnload屬性為False。
InitialValues屬性:這是一個(gè)字符串類型的屬性,它是說明報(bào)表文件中使用的變量,每一條說明一個(gè)變量。如:
ReportVAR := Value;
要詳細(xì)了解創(chuàng)建和使用報(bào)表變量的過程請(qǐng)參看創(chuàng)建報(bào)表一節(jié)。
TReport部件要真正執(zhí)行報(bào)表功能以輸出一個(gè)報(bào)表需要調(diào)用Run方法。如下所示:
Report1.Run;
TReport部件所具有的重要方法如表15.10所示。
表15.10 TReport部件的方法
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
方法 功 能
────────────────────────────
Run 執(zhí)行報(bào)表功能,輸出報(bào)表
RunMacro 發(fā)送一個(gè)宏命令給Reportimith工具
Connect 預(yù)先連接報(bào)表文件和數(shù)據(jù)庫(kù),在輸出報(bào)表時(shí)不
需要登錄到數(shù)據(jù)庫(kù)
SetVariable 改變說明的報(bào)表變量
ReCalcReport 當(dāng)報(bào)表變量改變以后,重新輸出報(bào)表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
還有一些其他的數(shù)據(jù)訪問部件如TBatchMove部件,它主要用在兩個(gè)數(shù)據(jù)庫(kù)表之間移動(dòng)或拷貝帆數(shù)據(jù)記錄,具體的使用請(qǐng)參看本地SQL服務(wù)器的使用。
為TTable和TQuery部件打開字段編輯有兩種方法:
● 用鼠標(biāo)左鍵雙擊TTable或TQuery部件
● 選擇TTable部件或TQuery部件,然后單擊鼠標(biāo)右鍵,然后從彈出式菜單中選擇 Fields Editor
字段編輯器Fields Editor被打開以后,窗體的名字和數(shù)據(jù)集部件的名字會(huì)顯示在窗口的標(biāo)題上。
字段編輯器Fields itor中的Fields列表框是用于顯示已經(jīng)創(chuàng)建的永久性字段部件的名字的。字段編輯器Fields Editor第一次被打開時(shí),該列表框是空的,因?yàn)樵诖酥暗淖侄尾考际莿?dòng)態(tài)生成的,只要Fields列表框中有字段部件,那么與數(shù)據(jù)集部件相連的數(shù)據(jù)瀏覽部件中只顯示Fields中列出的字段的字段值,在Fields列表框中,可以通過拖放字段部件的名字來改變相應(yīng)的字段值在數(shù)據(jù)瀏覽部件中的顯示順序,如在TDBGrid部件中根據(jù)各字段在Fields列表框中的順序顯示各字段的值。
在字段編輯器Fields Editor窗體上面的導(dǎo)航按鈕是用來移動(dòng)TTable或TQuery部件中的記錄指針的,使用導(dǎo)航按鈕可以將記錄指針向前、向后移動(dòng),也可以移到第一條記錄處或最后一條記錄處。
字段編輯器中的彈出式菜單
15.6.2.2 增加字段部件
字段編輯器Fields Editor中的Add Fields菜單項(xiàng)用于向數(shù)據(jù)集部件中增加字段部件的,單擊Add Fields菜單項(xiàng)時(shí)便會(huì)打開增加字段部件對(duì)話框,如圖15.9所示。Available Fields列表框中顯示出數(shù)據(jù)集部件TTable或TQuery中當(dāng)前可以用于創(chuàng)建永久字段部件的全部的字段,也就是說Available Fields列表框中顯示字段是數(shù)據(jù)庫(kù)表中實(shí)際存在的字段,而且還沒有為這些字段創(chuàng)建相應(yīng)的永久性的字段部件,在缺省狀態(tài)下所有的字段都被選擇用于創(chuàng)建相應(yīng)的永久性的字段部件,用鼠標(biāo)單擊其中的字段名可以有選擇地創(chuàng)建其相應(yīng)的永久性的字段部件,選擇好有關(guān)的字段名之后,單擊OK按鈕便可以創(chuàng)建永久性的字段部件。
字段編輯器的增加字段部件對(duì)話框
15.6.2.3 刪除字段部件
用字段編輯器Fields Editor為數(shù)據(jù)集部件創(chuàng)建好的字段部件都會(huì)顯示在字段編輯器的Fields列表框中,如果用戶認(rèn)為其中的一些字段部件不合適或不再需要時(shí),可以單擊這些不需要的字段部件,然后單擊鼠標(biāo)右鍵彈出一傭彈出式菜單,從彈出式菜單中選擇Delete菜單項(xiàng),便可刪除相應(yīng)的字段部件,如果在彈出式菜單中單擊Select All菜單項(xiàng),然后選擇Delete菜單項(xiàng),這樣會(huì)刪除已創(chuàng)建好的所有的字段部件。某一個(gè)字段部件被刪除以后,通過單擊Add Fields菜單項(xiàng)可以重新創(chuàng)建,只是先前為該字段部件設(shè)定的一些屬性將不復(fù)存在。
15.6.2.4 定義新的字段部件
字段編輯器Fields Editor中的彈出式菜單中New Fields菜單項(xiàng)是用來為數(shù)據(jù)集部件TTable或TQuery創(chuàng)建用于顯示目的的新的字段部件,我們可以用它來為數(shù)據(jù)庫(kù)表中實(shí)際存在的字段創(chuàng)建新的字段部件(如改變字段的數(shù)據(jù)類型,使它的字段值被顯示時(shí)不再需有關(guān)的類型轉(zhuǎn)換),但是我們使用New Fields菜單項(xiàng)創(chuàng)建新的字段部件主要是創(chuàng)建計(jì)算字段。計(jì)算字段并不與數(shù)據(jù)庫(kù)表中實(shí)際存在的字段對(duì)應(yīng),它的字段值是根據(jù)表中其它的字段值計(jì)算而來的,具體的計(jì)算表達(dá)式由用戶為TTable部件或TQuery部件的OnCalCFields事件編寫程序代碼時(shí)決定。
定義(創(chuàng)建)計(jì)算字段的過程如下:
1.單擊字段編輯器中的New Fields菜單項(xiàng),定義字段對(duì)話框如圖15.11所示。
2.在FieldName編輯框中輸入新字段部件的名字,或者從下拉式列表框中選擇一個(gè)已存在的字段部件的名字。
3.在FieldType列表框中為新字段部件選擇一個(gè)字段類型。
4.單擊Calculated檢查框,確認(rèn)定義的新字段部件是計(jì)算字段。
5.單擊ok按鈕,創(chuàng)建上述定義的計(jì)算字段部件,此時(shí)該字段部件的名字會(huì)自動(dòng)地加入到字段編輯中的Fields列表框中。
創(chuàng)建新的計(jì)算字段
新的計(jì)算字段創(chuàng)建好了之后,它是沒有任何字段值的,我們必須要編寫相應(yīng)的程序代碼,根據(jù)數(shù)據(jù)庫(kù)表中實(shí)際存在的字段的字段值為計(jì)算字段的寶定義字段值,我們?yōu)橛?jì)算字段所在數(shù)據(jù)集部件的OnCalcFields事件編寫代碼來為計(jì)算字段賦值,其步驟如下:
1.選擇數(shù)據(jù)集部件TTable或TQuery
2.單擊數(shù)據(jù)集部件的事件頁(yè)
3.雙擊OnCalcFields事件為TTable或TQuery部件編寫事件處理過程
15.7 TReport部件及其應(yīng)用
在一般的數(shù)據(jù)庫(kù)應(yīng)用程序中都包含著為最終用戶提供輸出報(bào)表的功能,使用Delphi開發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序時(shí),可以使用一個(gè)叫TReport的部件來執(zhí)行報(bào)表功能的,報(bào)表的具體格式和內(nèi)容是由Delphi提供的一個(gè)專用報(bào)表生成工具ReprotSmith創(chuàng)建的,它報(bào)表的具體格式和內(nèi)容生成一個(gè)報(bào)表文件,然后為TReport部件設(shè)置相應(yīng)的屬性參數(shù),由TReport部件執(zhí)行報(bào)表功能。
我們可以在設(shè)計(jì)階段雙擊TReport部件,調(diào)用ReportSimith工具或者在Delphi程序組內(nèi)雙擊ReportSmith圖標(biāo)來調(diào)用ReportSmith工具來創(chuàng)建一個(gè)報(bào)表文件,具體的操作步驟和設(shè)計(jì)方法請(qǐng)參看ReportSimth工具的使用說明。
我們?cè)谑褂肨Report部件執(zhí)行報(bào)表功能時(shí),要設(shè)置TReport部件的一些的一些屬性,這些屬性是:
ReportName屬性:說明報(bào)表文件的名字,就是用ReportSmith創(chuàng)建的報(bào)表文件。
ReportDir屬性:說明報(bào)表文件所在的途徑名。
PreView屬性:這是一個(gè)布爾型屬性。若它的值為True,那么在執(zhí)行報(bào)表功能時(shí),只是在屏幕上顯示報(bào)表;若它的值為False,則報(bào)表內(nèi)容將在缺省的打印機(jī)打印出來。
AutoUnload屬性:布爾型屬性,它的值為True時(shí),在執(zhí)行完一個(gè)報(bào)表功能后,自動(dòng)地從內(nèi)存中卸出ReportSmith工具;它的值為False時(shí),在運(yùn)行完一個(gè)報(bào)表功能后,不從內(nèi)存中卸出ReportSmith工具。一般情況下,如果應(yīng)用程序只有一個(gè)報(bào)表或者只有較少的報(bào)表要輸出時(shí),應(yīng)設(shè)置AutoUnload屬性為True,如果應(yīng)用程序一次要輸出多個(gè)報(bào)表,那么要應(yīng)設(shè)置AutoUnload屬性為False。
InitialValues屬性:這是一個(gè)字符串類型的屬性,它是說明報(bào)表文件中使用的變量,每一條說明一個(gè)變量。如:
ReportVAR := Value;
要詳細(xì)了解創(chuàng)建和使用報(bào)表變量的過程請(qǐng)參看創(chuàng)建報(bào)表一節(jié)。
TReport部件要真正執(zhí)行報(bào)表功能以輸出一個(gè)報(bào)表需要調(diào)用Run方法。如下所示:
Report1.Run;
TReport部件所具有的重要方法如表15.10所示。
表15.10 TReport部件的方法
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
方法 功 能
────────────────────────────
Run 執(zhí)行報(bào)表功能,輸出報(bào)表
RunMacro 發(fā)送一個(gè)宏命令給Reportimith工具
Connect 預(yù)先連接報(bào)表文件和數(shù)據(jù)庫(kù),在輸出報(bào)表時(shí)不
需要登錄到數(shù)據(jù)庫(kù)
SetVariable 改變說明的報(bào)表變量
ReCalcReport 當(dāng)報(bào)表變量改變以后,重新輸出報(bào)表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
還有一些其他的數(shù)據(jù)訪問部件如TBatchMove部件,它主要用在兩個(gè)數(shù)據(jù)庫(kù)表之間移動(dòng)或拷貝帆數(shù)據(jù)記錄,具體的使用請(qǐng)參看本地SQL服務(wù)器的使用。