第七章數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì)_第1頁
第七章數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì)_第2頁
第七章數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì)_第3頁
第七章數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì)_第4頁
第七章數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、C+Builder 程序設(shè)計(jì)教程第七章 數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì)7.1 數(shù)據(jù)庫應(yīng)用程序的結(jié)構(gòu)與設(shè)計(jì)方法 7.1.1 數(shù)據(jù)庫應(yīng)用程序的結(jié)構(gòu) 7.1.2 數(shù)據(jù)庫應(yīng)用程序的設(shè)計(jì)步驟 初步設(shè)計(jì) 詳細(xì)設(shè)計(jì) 信息處理:包括各類信息的編輯、查詢、統(tǒng)計(jì)等 數(shù)據(jù)庫管理:負(fù)責(zé)數(shù)據(jù)庫的更新、修改等 系統(tǒng)維護(hù):保證數(shù)據(jù)庫應(yīng)用程序運(yùn)行的安全性和可靠性,一般包括用戶管理,口令設(shè)置,各類系統(tǒng)變量和數(shù)據(jù)字典的維護(hù)等 輔助功能:系統(tǒng)安裝程序、各種幫助系統(tǒng)和版本管理等 運(yùn)行和維護(hù) 用C+Builder設(shè)計(jì)一個(gè)數(shù)據(jù)庫應(yīng)用程序(界面)的一般步驟:1.建立新工程/窗體2.設(shè)置數(shù)據(jù)集組件(通過DatabaseName屬性與數(shù)據(jù)庫建立連接) 3

2、.設(shè)置數(shù)據(jù)源組件(通過DataSet屬性與數(shù)據(jù)集組件相聯(lián)系) 4.設(shè)置數(shù)據(jù)控制組件(通過DataSource屬性與數(shù)據(jù)源組件相聯(lián)系) 5.設(shè)計(jì)事件驅(qū)動(dòng)程序 7.2 數(shù)據(jù)控制組件 7.2.1 公共屬性 DataSource屬性 :用于選擇數(shù)據(jù)源,使數(shù)據(jù)控制組件與數(shù)據(jù)表連接DataField屬性 :選擇要在組件中顯示的字段 Enabled屬性:當(dāng)Enabled屬性為true時(shí),數(shù)據(jù)控制組件有效,此時(shí)組件可以進(jìn)行編輯操作(1)ReadOnly屬性:當(dāng)ReadOnly屬性為true時(shí),數(shù)據(jù)只能讀不可修改;當(dāng)為false時(shí),數(shù)據(jù)可讀寫。默認(rèn)為false 7.2.2 TDBText組件 用來顯示數(shù)據(jù)庫表(

3、由DataSource屬性設(shè)置)里當(dāng)前記錄中一個(gè)指定字段(由DataField屬性設(shè)置)的值的數(shù)據(jù)控制組件。用TDBText組件顯示的字段值是只讀屬性的,即用戶不能通過這個(gè)組件來修改數(shù)據(jù) TDBText組件顯示的是當(dāng)前記錄中指定字段的值,所以隨著記錄指針的移動(dòng),其顯示的內(nèi)容也不斷變化 AutoSize屬性:當(dāng)AutoSize為true時(shí),組件能根據(jù)字段的內(nèi)容自動(dòng)調(diào)整長度,使其正好容納字段的內(nèi)容;為false 時(shí),則字段內(nèi)容超過長度的部分被截去 Transparent屬性:當(dāng)Transparent為true時(shí),組件將以窗體背景為其背景色,否則以自身為背景色 7.2.3 TDBEdit組件 用來顯

4、示和編輯數(shù)據(jù)庫表里當(dāng)前記錄中一個(gè)指定字段的值的數(shù)據(jù)控制組件。用TDBText組件顯示的字段值是只讀屬性的,而使用TDBEdit組件允許用戶編輯修改數(shù)據(jù)。這也是它們之間惟一的區(qū)別 7.2.4 TDBGrid組件 將一個(gè)數(shù)據(jù)庫表記錄顯示在網(wǎng)格中,并且可以對(duì)其中的數(shù)據(jù)進(jìn)行編輯修改 在運(yùn)行時(shí),用戶可以使用TDBNavigator在數(shù)據(jù)網(wǎng)格中移動(dòng)記錄指針,也可以插入、刪除和編輯記錄。編輯的結(jié)果在移動(dòng)記錄指針到另一條記錄或者結(jié)束應(yīng)用程序時(shí)提交給數(shù)據(jù)庫保存 TDBGrid組件的主要屬性 Columns屬性:用來讀取和設(shè)置網(wǎng)格中列的特性,如每列的標(biāo)題、字體等。它可以在設(shè)計(jì)階段由“Columns Editor”

5、對(duì)話框設(shè)定,也可以在應(yīng)用程序運(yùn)行時(shí)動(dòng)態(tài)地設(shè)置 Fields屬性:表示當(dāng)前記錄的一維數(shù)組,即Fields0、Fields1、Fields2Fieldsn-1分別代表當(dāng)前記錄的第1、2、3n個(gè)字段中的內(nèi)容FieldCount屬性:用來表示TDBGrid顯示的字段數(shù),運(yùn)行時(shí)可用SelectedField屬性:用于設(shè)置或返回當(dāng)前選擇的字段,如果當(dāng)前沒有選擇,值為NULL SelectedIndex屬性:用于設(shè)置或返回當(dāng)前選擇的字段在表中的索引值(即列號(hào)),索引值從0開始 DefaultDrawing屬性:將DefaultDrawing屬性設(shè)置為true時(shí)允許TDBGrid組件自動(dòng)地在每一單元格中顯示數(shù)

6、據(jù);而將DefaultDrawing屬性設(shè)置為false會(huì)取消自動(dòng)顯示 DragMode屬性:使用DragMode屬性來控制是否允許用戶對(duì)數(shù)據(jù)網(wǎng)格單元進(jìn)行拖放操作 Options屬性:包含了一系列控制TDBGrid顯示和編輯操作響應(yīng)的選項(xiàng),這些選項(xiàng)均為邏輯型 ReadOnly屬性:用來標(biāo)志網(wǎng)格是用來顯示記錄,還是允許用戶通過它來編輯數(shù)據(jù)SelectedField屬性:返回當(dāng)前選中單元格的字段 TDBGrid組件的主要事件 事件 含義OnCellClick在單擊網(wǎng)格中的單元格時(shí)觸發(fā)OnColEnter當(dāng)焦點(diǎn)移動(dòng)到網(wǎng)格中的另一個(gè)單元格時(shí)觸發(fā)OnColExit當(dāng)一個(gè)單元格即將失去焦點(diǎn)時(shí)觸發(fā)OnCol

7、umnMoved當(dāng)網(wǎng)格中的一列發(fā)生移動(dòng)時(shí)觸發(fā)OnEditButtonClick在單擊網(wǎng)格中一個(gè)字段的編輯按鈕時(shí)觸發(fā)OnTitleClick在單擊網(wǎng)格中一個(gè)字段的標(biāo)題時(shí)觸發(fā)7.2.5 TDBNavigator組件 用來在數(shù)據(jù)庫表中瀏覽和編輯數(shù)據(jù)的組件。它由一組控制按鈕組成,通過這些控制按鈕,用戶可以在數(shù)據(jù)庫表中移動(dòng)記錄指針,增添或刪除一項(xiàng)記錄,編輯修改數(shù)據(jù)記錄以及向數(shù)據(jù)庫提交對(duì)數(shù)據(jù)庫表記錄的修改等工作 TDBNavigator組件一般與其他數(shù)據(jù)控制組件(TDBGrid或TDBEdit)一起使用 TDBNavigator組件的按鈕 圖標(biāo)名稱功能First記錄指針指向第一條記錄Prior記錄指針指向

8、上一條記錄Next記錄指針指向下一條記錄Last記錄指針指向最后一條記錄Insert在當(dāng)前記錄前插入一條新記錄Delete刪除當(dāng)前記錄Edit編輯當(dāng)前記錄Post提交對(duì)當(dāng)前記錄的修改Cancel取消對(duì)當(dāng)前記錄的修改Refresh用數(shù)據(jù)庫表中的新記錄刷新顯示緩沖區(qū)TDBNavigator組件的主要屬性 ConfirmDelete屬性:用來決定用戶在刪除記錄時(shí)是否顯示要求用戶確認(rèn)的消息框ShowHint與Hints:ShowHint屬性決定是否顯示TDBNavigator組件中各按鈕的提示信息,Hints屬性是用來設(shè)置按鈕對(duì)應(yīng)的提示信息VisibleButtons屬性:用來確定TDBNavigat

9、or組件中需要顯示哪些按鈕Flat屬性:與TSpeedButton組件的功能相同 TDBNavigator組件的主要事件 OnClick事件:在TDBNavigator組件的某個(gè)按鈕被單擊并執(zhí)行完相應(yīng)的操作之后觸發(fā) 基本格式如下:void _fastcall TForm1:DBNavigator1Click(TObject *Sender, TNavigateBtn Button)其中Button參數(shù)的值為以下值之一:nbFirst、nbPrior、nbNext、nbLast、nbInsert、nbDelete、nbEdit、nbPost、nbCancel和nbRefresh,分別對(duì)應(yīng)著DBN

10、avigator組件中的各按鈕BeforeAction事件:發(fā)生在用戶單擊TDBNavigator組件的某個(gè)按鈕,但相應(yīng)的動(dòng)作尚未執(zhí)行前。Button參數(shù)的值表示用戶按下的是哪個(gè)按鈕。它的基本格式如下:void _fastcall TForm1:DBNavigator1BeforeAction(TObject *Sender,TNavigateBtn Button) 7.2.6 TDBMemo組件 用于顯示和編輯數(shù)據(jù)表中大二進(jìn)制(BLOB)類型(備注型)的字段值。該組件能允許用戶編輯多行文本信息。允許編輯的文本信息最大字節(jié)數(shù)為32KB 主要屬性 AutoDisplay屬性:用來決定是否自動(dòng)顯示

11、一個(gè)數(shù)據(jù)庫表中備注類型的字段值A(chǔ)lignment屬性:用來設(shè)置在TDBMemo組件中顯示文本時(shí)的對(duì)齊方式MaxLength屬性:用來限定可以輸入TDBMemo組件中的最大字符數(shù)WordWrap屬性:是一個(gè)布爾值,用來指明向TDBMemo組件中輸入的文本到了右邊界處是否自動(dòng)換行ScrollBar屬性:說明TDBMemo組件是否顯示滾動(dòng)條 常用方法 :LoadMemo方法7.2.7 TDBImage組件 用來顯示和編輯當(dāng)前記錄中的BLOB類型的圖形字段。TDBImage組件除了可以在窗體中顯示數(shù)據(jù)庫表里的圖形數(shù)據(jù),還允許用戶通過剪貼板對(duì)圖形數(shù)據(jù)進(jìn)行編輯操作主要屬性 AutoDisplay屬性:當(dāng)A

12、utoDisplay為true 時(shí)自動(dòng)顯示圖像,為false時(shí)不顯示圖像Picture屬性:用于存放圖像或照片常用方法:LoadPicture方法 7.2.8 TDBListBox和TDBComboBox組件 當(dāng)用戶更改當(dāng)前記錄中指定字段值的時(shí)候,可以使用TDBListBox或TDBComboBox組件來提供給用戶一個(gè)可選的列表。用戶可以從中選取適當(dāng)?shù)闹祦硇薷漠?dāng)前記錄中的指定字段。 TDBListBox組件提供的是列表框,TDBComboBox組件提供的是下拉列表框,列表中的選項(xiàng)可以在設(shè)計(jì)階段通過單擊Items屬性右邊的省略按鈕,打開“String List Editor”進(jìn)行編輯。也可以在程

13、序運(yùn)行時(shí),使用Items的Add方法動(dòng)態(tài)地改變 建立一個(gè)使用TDBListBox / TDBComboBox組件的應(yīng)用程序的主要步驟 :(1) 向窗體中添加TDBListBox / TDBComboBox組件(2) 設(shè)置TDBListBox / TDBComboBox組件的DataSource屬性,使它與數(shù)據(jù)庫表產(chǎn)生聯(lián)系(3)設(shè)置TDBListBox / TDBComboBox組件的DataField屬性,使它指向數(shù)據(jù)庫表中的指定字段(4) 設(shè)置TDBListBox / TDBComboBox組件的Items屬性,為列表設(shè)計(jì)選項(xiàng) 7.2.9 TDBCheckBox和TDBRadioGroup組

14、件 TDBCheckBox組件主要是用來顯示和修改一個(gè)布爾類型數(shù)據(jù)字段的字段值 TDBRadioGroup組件是允許用戶在一組選項(xiàng)中選取惟一 一項(xiàng)的數(shù)據(jù)控制組件,主要是用來顯示一個(gè)字段的字段值,以及通過在一組選項(xiàng)中選擇其中的一項(xiàng)來編輯修改一個(gè)字段的字段值 7.2.10 TDBLookUpListBox和TDBLookUpComboBox組件 TDBLookupListBox和TDBLookupComboBox都是數(shù)據(jù)控制組件,它們從下列來源之一導(dǎo)出顯示項(xiàng)目列表: 為數(shù)據(jù)庫表定義的查找字段 第二數(shù)據(jù)源、數(shù)據(jù)字段及關(guān)鍵值 在任何一種情況中,用戶都可從一個(gè)限制選擇的列表中選擇值來設(shè)置有效的字段值。當(dāng)

15、用戶選擇一個(gè)列表項(xiàng)目時(shí),基礎(chǔ)數(shù)據(jù)庫表的相應(yīng)字段值被改變 主要屬性 ListSource屬性:用于連接從表數(shù)據(jù)源KeyField屬性:用于連接從表關(guān)鍵字ListField屬性:用于選擇數(shù)據(jù)表中要在列表框或下拉列表框中顯示的字段名DropDownAlign屬性:用于設(shè)置下拉列表框中數(shù)據(jù)項(xiàng)的排列方式DropDownRows屬性:用于設(shè)置下拉列表框中顯示的數(shù)據(jù)項(xiàng)的數(shù)目。默認(rèn)為10DropDownWidth屬性:用于設(shè)置下拉列表框的寬度后三個(gè)只用于TDBLookupComboBox組件中 主要方法 CloseUp方法:當(dāng)組件被下拉結(jié)束后,此時(shí)只顯示編輯框而不顯示下拉列表框,則觸發(fā)OnCloseUp事件D

16、ropDown方法:若組件被下拉尚未結(jié)束,此時(shí)顯示下拉列表框,觸發(fā)OnCloseUp事件 7.3 數(shù)據(jù)訪問組件 開發(fā)數(shù)據(jù)庫的應(yīng)用程序必須建立應(yīng)用程序與數(shù)據(jù)庫之間的聯(lián)系,C+Builder組件面板上的數(shù)據(jù)訪問組件(Data Access),又叫數(shù)據(jù)存取組件,提供了這種聯(lián)系方法。它們通過使用數(shù)據(jù)庫引擎訪問數(shù)據(jù)庫,并提供了用戶接口(一般由數(shù)據(jù)控制組件實(shí)現(xiàn))與數(shù)據(jù)庫數(shù)據(jù)信息之間的聯(lián)系 7.3.1 數(shù)據(jù)源組件TDataSource TDataSource組件提供了聯(lián)系數(shù)據(jù)集組件(TTable組件、TQuery組件和TStoredProc組件)與數(shù)據(jù)控制組件(例如TDBGrid組件)的紐帶。通過使用Dat

17、a Access 頁上的TDataSource組件,可以利用數(shù)據(jù)控制組件顯示、瀏覽以及修改數(shù)據(jù)集中的數(shù)據(jù) 主要屬性 AutoEdit屬性:用于控制用戶是否能對(duì)與之連接數(shù)據(jù)集(表)中的數(shù)據(jù)進(jìn)行編輯修改DataSet屬性:用來指定一個(gè)與當(dāng)前數(shù)據(jù)源組件連接的數(shù)據(jù)集組件的名字Enabled屬性:決定與此數(shù)據(jù)源組件相連的數(shù)據(jù)控制組件是否顯示數(shù)據(jù)State屬性:返回與此數(shù)據(jù)源組件相連的數(shù)據(jù)集組件的當(dāng)前狀態(tài),其取值見下表 狀態(tài)含義dsInactive數(shù)據(jù)集已關(guān)閉,不能訪問其數(shù)據(jù)dsBrowse數(shù)據(jù)集已打開,可以瀏覽但不能修改,這是數(shù)據(jù)集的默認(rèn)狀態(tài)值dsEdit處于編輯狀態(tài),可以修改數(shù)據(jù)dsInsert可插入

18、新記錄dsSetKey只適用于ClientDataSet,可設(shè)置范圍,且可調(diào)用GotoKey方法dsCalcFields正在處理OnCalcFields事件,不能用于非計(jì)算字段dsFilter正在進(jìn)行過濾 主要方法 Edit方法:允許用戶對(duì)與該數(shù)據(jù)源組件相連的數(shù)據(jù)庫表進(jìn)行編輯修改 主要事件 OnDataChange事件:發(fā)生在與該數(shù)據(jù)源組件相連的數(shù)據(jù)集的當(dāng)前記錄被編輯后,應(yīng)用程序轉(zhuǎn)移到其他字段或者轉(zhuǎn)移到其他記錄時(shí),也就是提交被編輯的當(dāng)前記錄的時(shí)候 OnStateChange事件:發(fā)生在與該數(shù)據(jù)源組件相連的數(shù)據(jù)集的狀態(tài)改變時(shí) OnUpdateData事件:發(fā)生在向數(shù)據(jù)庫提交對(duì)數(shù)據(jù)的改變之前 應(yīng)用

19、程序中使用TDataSource組件的基本步驟 在窗體或數(shù)據(jù)模塊中加入數(shù)據(jù)集組件,例如TTable組件,并設(shè)置其DatabaseName屬性和TableName屬性 在窗體或數(shù)據(jù)模塊中加入數(shù)據(jù)源組件TDataSource,并將其DataSet屬性設(shè)置為上一步中建立的數(shù)據(jù)集組件的名字 在窗體或數(shù)據(jù)模塊中加入數(shù)據(jù)控制組件,例如:TDBGrid組件。并將其DataSource屬性設(shè)置為第(2)步建立的數(shù)據(jù)源組件的名字 7.3.2 數(shù)據(jù)集組件TTable 在數(shù)據(jù)訪問組件中,位于BDE組件頁上的TTable、TQuery和TStoreProc三個(gè)組件用于聯(lián)系應(yīng)用程序和數(shù)據(jù)庫表,它們同屬于數(shù)據(jù)集(Data

20、Set)組件,都是從數(shù)據(jù)集繼承而來,有著許多共同的屬性、方法和事件 在C+Builder中,訪問數(shù)據(jù)的基本單元是數(shù)據(jù)集對(duì)象。應(yīng)用程序通過數(shù)據(jù)集組件來訪問數(shù)據(jù)庫的。一個(gè)數(shù)據(jù)集對(duì)象就代表了數(shù)據(jù)庫的一張表格,或者是訪問數(shù)據(jù)庫的一個(gè)查詢或存儲(chǔ)的過程 TTable組件用于處理單一表,多表的處理使用TQuery組件 TTable組件與數(shù)據(jù)庫表的連接 DatabaseName屬性:用來指定當(dāng)前數(shù)據(jù)庫應(yīng)用程序中所使用的數(shù)據(jù)集的來源,即數(shù)據(jù)庫的名字TableType屬性:用來指定當(dāng)前TTable組件連接的類型TableName屬性:用來指定組件所連接的數(shù)據(jù)庫表 ReadOnly屬性:用來確定是否可以對(duì)TTabl

21、e組件連接的數(shù)據(jù)表進(jìn)行修改 數(shù)據(jù)庫表的打開、關(guān)閉與清空 利用Active屬性打開與關(guān)閉數(shù)據(jù)庫表,Active屬性值設(shè)為true時(shí)打開數(shù)據(jù)庫表,設(shè)為false時(shí)將關(guān)閉數(shù)據(jù)庫表調(diào)用Open方法打開數(shù)據(jù)庫表,將Active屬性值設(shè)為true調(diào)用Close方法關(guān)閉數(shù)據(jù)庫表,同時(shí)將Active屬性值設(shè)為false 調(diào)用EmptyTable方法可清空數(shù)據(jù)庫表中的全部記錄,該方法只能在數(shù)據(jù)庫表關(guān)閉的情況下進(jìn)行 記錄指針的移動(dòng) First方法:將記錄指針移到表的第一條記錄Prior方法:將記錄指針移到表的上一條記錄Next方法:將記錄指針移到表的下一條記錄Last方法:將記錄指針移到表的最后一條記錄MoveB

22、y(n) 方法:將記錄指針從當(dāng)前位置移動(dòng)|n|條記錄。n0表示向后移動(dòng),n0表示向前移動(dòng)Bof和Eof屬性:布爾值,當(dāng)前記錄指針?biāo)幍奈恢脼閿?shù)據(jù)表的第一個(gè)記錄時(shí), Bof值為true;當(dāng)前記錄指針?biāo)幍奈恢脼閿?shù)據(jù)表的最后一個(gè)記錄時(shí), Eof值為true 記錄的添加、插入、刪除和編輯 Append方法:向數(shù)據(jù)庫表的末尾添加一個(gè)新的空記錄,并將數(shù)據(jù)集置為插入狀態(tài),新的記錄置為當(dāng)前記錄AppendRecord方法:用給定的數(shù)據(jù)向數(shù)據(jù)庫表的末尾添加一個(gè)新記錄,并將數(shù)據(jù)集置為插入狀態(tài),新的記錄置為當(dāng)前記錄Insert方法:在數(shù)據(jù)表當(dāng)前記錄之前插入一條空記錄,并將數(shù)據(jù)集置為插入狀態(tài)InsertRecord

23、方法:在數(shù)據(jù)表當(dāng)前記錄之前用給定的數(shù)據(jù)插入一條記錄,并將數(shù)據(jù)集置為插入狀態(tài) Edit:調(diào)用Edit方法使數(shù)據(jù)表處于編輯狀態(tài) Post方法:將當(dāng)前被編輯、修改的數(shù)據(jù)寫入物理數(shù)據(jù)庫表中 Cancel方法:用來取消對(duì)當(dāng)前記錄中一個(gè)或多個(gè)字段的修改 Delete方法:用來將當(dāng)前記錄從數(shù)據(jù)庫表中刪除Refresh方法:用來刷新當(dāng)前數(shù)據(jù)表,通常用于對(duì)SQL數(shù)據(jù)庫表的處理 記錄的定位與查找 IndexFieldNames屬性:用于指定數(shù)據(jù)表索引的字段名 EditKey方法:調(diào)用EditKey方法將數(shù)據(jù)集置于dsSetKey狀態(tài),也就是將TTable組件置于查詢狀態(tài)。同時(shí),存儲(chǔ)當(dāng)前查詢緩沖區(qū)的內(nèi)容SetKey

24、方法:調(diào)用SetKey方法是將TTable組件置于查詢狀態(tài)。在執(zhí)行查詢前可以調(diào)用FieldByName方法來提供新的查詢值FieldByName方法:查詢或設(shè)置一個(gè)指定的字段 FindKey方法:查找滿足條件的記錄,若找到返回true并將記錄指針定位在該記錄上。否則為false,記錄指針不變 GotoKey方法:查找滿足條件的記錄,與FindKey不同的是,F(xiàn)indKey只能對(duì)一個(gè)字段進(jìn)行查找,GotoKey可以對(duì)多個(gè)字段進(jìn)行查找。查詢值是用SetKey或EditKey方法與Fields屬性值確定的FindNearest方法:與FindKey方法很相似,不同之處在于FindNearest方法不

25、要求精確查詢 GotoNearest方法:調(diào)用GotoNearest方法也是移動(dòng)記錄指針到與查詢值最接近的記錄上 設(shè)定數(shù)據(jù)庫查找范圍的方法 SetRangeStart和SetRangeEnd方法 :分別用來設(shè)定數(shù)據(jù)表中查找范圍的起始值和終止值。調(diào)用SetRangeStart和SetRangeEnd方法后,將數(shù)據(jù)集置于dsSetKey狀態(tài),清除以前所有的起始與終止范圍值,并將它們?cè)O(shè)置為NULL,再使用FieldByName方法設(shè)定查找范圍的起始與終止值SetRange方法:調(diào)用SetRange方法用于設(shè)定記錄值在一個(gè)范圍內(nèi)并在數(shù)據(jù)集中應(yīng)用ApplyRange方法:調(diào)用ApplyRange方法使一

26、個(gè)由SetRangeStart和SetRangeEnd,或由EditRangeStart和EditRangeEnd所確定的范圍生效 CancelRange方法:與ApplyRange方法相反,CancelRange方法是取消一個(gè)正在生效的范圍 EditRangeStart和EditRangeEnd方法:調(diào)用EditRangeStart和EditRangeEnd方法來改變一個(gè)已存范圍的起始值和結(jié)束值KeyExclusive屬性:當(dāng)KeyExclusive屬性為true時(shí),執(zhí)行查詢范圍包括起始與終止值。否則查詢范圍不包括起始與終止值 過濾記錄 Filter屬性:定義一個(gè)數(shù)據(jù)表過濾器,只有那些滿足過

27、濾器條件的記錄才會(huì)被顯示Filtered屬性:為true時(shí),過濾器有效,滿足條件的記錄顯示。否則,所有記錄都顯示出來 數(shù)據(jù)表中字段數(shù)、記錄數(shù)與控制連接 FieldCount屬性:用于計(jì)算打開的數(shù)據(jù)庫表中的字段數(shù)KeyFieldCount屬性:用于計(jì)算數(shù)據(jù)庫表中關(guān)鍵字的字段數(shù)RecordCount屬性:用于計(jì)算數(shù)據(jù)庫表中的記錄數(shù)DisableControls方法:調(diào)用DisableControls方法,可斷開TTable組件與數(shù)據(jù)控制組件的連接,禁止在數(shù)據(jù)控制組件上顯示對(duì)表的處理過程EnableControls方法:調(diào)用EnableControls方法,可恢復(fù)TTable組件與數(shù)據(jù)控制組件的連接

28、,允許在數(shù)據(jù)控制組件上顯示對(duì)表的處理過程 用TTable組件實(shí)現(xiàn)多表關(guān)聯(lián) MasterSource屬性用來指定在主從關(guān)系的數(shù)據(jù)庫表中,用來作為主表的DataSource組件的名稱。 MasterFields用來在主表中指定一個(gè)或多個(gè)對(duì)應(yīng)當(dāng)前表中的字段以達(dá)到在數(shù)據(jù)庫表之間建立主從關(guān)系的目的。在指定主表以后,用MasterFields屬性框右邊的“.”按鈕打開“Field Link Designer”對(duì)話框來建立主從表之間的聯(lián)系 用TTable組件創(chuàng)建數(shù)據(jù)表結(jié)構(gòu) 數(shù)據(jù)表結(jié)構(gòu)除了在Database Desktop中創(chuàng)建和維護(hù)外,也可以在程序運(yùn)行過程中根據(jù)需要通過TTable組件的CreateTabl

29、e方法來創(chuàng)建。該方法在程序運(yùn)行過程中創(chuàng)建一個(gè)新數(shù)據(jù)表結(jié)構(gòu)。在調(diào)用該方法之前必須先指定數(shù)據(jù)表名、表的類型、字段定義和索引定義 數(shù)據(jù)表的加鎖和解鎖 LockTable方法:該方法為調(diào)用它的應(yīng)用程序在運(yùn)行時(shí)對(duì)表加鎖,防止其他(用戶)程序?qū)υ摫磉M(jìn)行讀寫。用法為: LockTable(TLockType LockType);其中LockType為加鎖的類型,可選的值為:ltReadLock讀加鎖,其他應(yīng)用程序不能從表中讀數(shù)據(jù) ltWriteLock 寫加鎖,其他應(yīng)用程序不能向表中寫數(shù)據(jù) UnLockTable方法:該方法將解除應(yīng)用程序的讀鎖或?qū)戞i。若兩種鎖都要解除,則需調(diào)用兩次。用法為:UnlockTa

30、ble(TLockType LockType); Table組件的主要事件 事件說 明BeforeCancel、AfterCancel發(fā)生在執(zhí)行取消對(duì)當(dāng)前記錄的修改之前、后BeforeClose、AfterClose發(fā)生在執(zhí)行關(guān)閉數(shù)據(jù)集之前、后BeforeDelete、AfterDelete發(fā)生在刪除當(dāng)前記錄之前、后BeforeEdit、AfterEdit發(fā)生在進(jìn)入編輯當(dāng)前記錄的狀態(tài)之前、后BeforeInsert、AfterInsert發(fā)生在進(jìn)入插入記錄的狀態(tài)之前、后BeforeOpen 、AfterOpen發(fā)生在執(zhí)行打開數(shù)據(jù)集之前、后BeforePost 、AfterPost發(fā)生在向數(shù)據(jù)庫

31、或緩存寫入記錄之前、后BeforeScroll、AfterScroll發(fā)生在從一個(gè)記錄轉(zhuǎn)到另一個(gè)記錄之前、后OnCalcFields發(fā)生在重新計(jì)算要計(jì)算的字段之時(shí)OnFilterRecord發(fā)生在數(shù)據(jù)集中的一條記錄變成當(dāng)前記錄并且過濾生效時(shí)OnNewRecord發(fā)生在插入一條記錄之時(shí)OnUpdateRecord當(dāng)緩存的更新特性應(yīng)用到記錄時(shí)7.3.3 字段組件TField 字段組件TField表示數(shù)據(jù)庫字段中的一個(gè)字段屬性,如它的數(shù)據(jù)類型和大小。它也表示字段的顯示屬性,如對(duì)齊方式、顯示格式和編輯格式。如果在數(shù)據(jù)集中瀏覽記錄,字段組件也可以用來查看和修改當(dāng)前記錄的相應(yīng)字段值。字段組件在設(shè)計(jì)時(shí)不能直

32、接被看到,而是與一個(gè)數(shù)據(jù)集組件關(guān)聯(lián),并通過該數(shù)據(jù)集提供給數(shù)據(jù)控制組件(如TDBEdit和TDBGrid)來存取數(shù)據(jù)庫字段 字段對(duì)象的建立 動(dòng)態(tài)字段對(duì)象 :動(dòng)態(tài)字段是C+ Builder為打開的數(shù)據(jù)集組件如表TTable或查詢TQuery中的每一個(gè)字段建立的對(duì)應(yīng)字段集Fields,在數(shù)據(jù)集被打開期間存在,關(guān)閉時(shí)撤消。每一次重新打開使用動(dòng)態(tài)字段組件的數(shù)據(jù)集,C+ Builder都會(huì)重新生成一個(gè)全新的動(dòng)態(tài)字段組件集,它們是根據(jù)該數(shù)據(jù)集中的數(shù)據(jù)表的當(dāng)前結(jié)構(gòu)生成的 永久字段對(duì)象 :缺省情況下,數(shù)據(jù)集字段是動(dòng)態(tài)的。它們的屬性和可用性是自動(dòng)設(shè)置的,且不能用任何方法改變。必須為數(shù)據(jù)集創(chuàng)建永久字段組件,才能控制

33、字段組件的屬性和事件??梢允褂米侄尉庉嬈鲃?chuàng)建永久字段組件 字段對(duì)象的屬性 字段對(duì)象的屬性的設(shè)置可先打開字段編輯器,在字段編輯器中選中字段,在對(duì)象查看器中設(shè)置。也可以先在對(duì)象瀏覽器中選擇字段所在的數(shù)據(jù)集,在展開的字段節(jié)點(diǎn)(Fields)下找到相應(yīng)的字段,再在對(duì)象查看器中進(jìn)行設(shè)置 字段對(duì)象的訪問和數(shù)據(jù)類型的轉(zhuǎn)換訪問字段對(duì)象有兩種方式:-Fields-Fieldsn- 轉(zhuǎn)換函數(shù);-FieldByName(“字段名”)- 轉(zhuǎn)換函數(shù);在編程過程中,數(shù)據(jù)的儲(chǔ)存和傳遞時(shí)要進(jìn)行數(shù)據(jù)類型的互相轉(zhuǎn)換,常用的數(shù)據(jù)轉(zhuǎn)換函數(shù)如下:AsString將當(dāng)前的數(shù)據(jù)類型轉(zhuǎn)換為字符型AsInteger將當(dāng)前的數(shù)據(jù)類型轉(zhuǎn)換為整型A

34、sFloat將當(dāng)前的數(shù)據(jù)類型轉(zhuǎn)換為浮點(diǎn)型AsDatetime將當(dāng)前的數(shù)據(jù)類型轉(zhuǎn)換為日期型AsBoolean將當(dāng)前的數(shù)據(jù)類型轉(zhuǎn)換為布爾型 計(jì)算字段 有時(shí)數(shù)據(jù)表中的現(xiàn)有字段不能滿足用戶的需求,需要增加一些數(shù)據(jù)表中沒有的字段,這些字段可以根據(jù)數(shù)據(jù)表中的字段計(jì)算出來。創(chuàng)建和使用計(jì)算字段步驟如下:(1) 在窗體中打開字段編輯器 (2) 在字段編輯器中單擊鼠標(biāo)右鍵,選擇選項(xiàng)“New field” (3) 在Name中輸入所需的計(jì)算字段名 (4) 在Type中選擇類型 (5) 在Component中輸入字段對(duì)象的Name(自動(dòng)設(shè)置) (6) 在Field type中選擇Calculated (7) 單擊OK

35、按鈕,出現(xiàn)字段編輯器對(duì)話框,新的字段已經(jīng)加入 7.3.4 TDatabase組件 TDatabase組件在應(yīng)用程序中通過建立與數(shù)據(jù)庫之間的聯(lián)系對(duì)數(shù)據(jù)庫進(jìn)行控制。位于BDE頁上的TDatabase組件常在以下情況下使用: (1)建立與數(shù)據(jù)庫的永久連接 (2)數(shù)據(jù)庫服務(wù)器要求用戶的登錄 (3)控制事務(wù)處理 (4)應(yīng)用程序指定的BDE數(shù)據(jù)庫別名 主要屬性 AliasName和DriverName屬性:AliasName和DriverName是BDE有關(guān)的兩個(gè)互斥的屬性。AliasName為數(shù)據(jù)庫組件指定一個(gè)已經(jīng)存在的BDE別名。DriverName是BDE驅(qū)動(dòng)器的名稱DatabaseName屬性:用

36、于為一個(gè)數(shù)據(jù)庫組件提供一個(gè)當(dāng)前在應(yīng)用程序中使用的名稱Params屬性:通過該屬性在應(yīng)用程序與數(shù)據(jù)庫建立連接前,配置SQL Links或ODBC驅(qū)動(dòng)程序參數(shù)Connected屬性:用于設(shè)置與數(shù)據(jù)庫連接的狀態(tài)。設(shè)為true時(shí)建立連接LoginPrompt屬性 :用于設(shè)置應(yīng)用程序登錄到數(shù)據(jù)庫服務(wù)器時(shí),當(dāng)服務(wù)器請(qǐng)求輸入用戶名和口令時(shí)是否顯示一個(gè)標(biāo)準(zhǔn)的登錄對(duì)話框KeepConnection屬性:設(shè)置應(yīng)用程序是否保持對(duì)數(shù)據(jù)庫的連接,即當(dāng)與數(shù)據(jù)庫關(guān)聯(lián)的所有數(shù)據(jù)集都被關(guān)閉時(shí),如果其值為true,將保持連接 主要方法 Open方法:調(diào)用Open方法將與數(shù)據(jù)庫服務(wù)器建立連接。將Connected屬性設(shè)置為true

37、,也將調(diào)用Open方法 Close方法:調(diào)用Close方法將關(guān)閉與數(shù)據(jù)庫服務(wù)器的連接。將Connected屬性設(shè)置為false,也將調(diào)用Close方法 7.3.5 TSession組件 BDE頁上的TSession組件用來實(shí)現(xiàn)在一個(gè)應(yīng)用程序中控制與數(shù)據(jù)庫的聯(lián)系。TSession組件是一個(gè)非可視組件,也不需要顯式地創(chuàng)建一個(gè)TSession組件(即窗體上可以不添加該組件),但可以在應(yīng)用程序中使用它。C+Builder自動(dòng)地為數(shù)據(jù)庫應(yīng)用程序創(chuàng)建一個(gè)默認(rèn)的TSession組件,該TSession組件的名字為Session,它處理標(biāo)準(zhǔn)的數(shù)據(jù)庫聯(lián)系。在應(yīng)用程序運(yùn)行時(shí),可以通過使用它的屬性、方法和事件控制這個(gè)默認(rèn)的TSession組件 主要屬性 DatabaseCount屬性:通過檢查DatabaseCount屬性值來獲得與此TSession組件相連的活動(dòng)數(shù)據(jù)庫的數(shù)目。當(dāng)與數(shù)據(jù)庫的聯(lián)系打開或中斷時(shí),DatabaseCount屬性值會(huì)發(fā)生改變Databases屬性:通過使用Databases屬性來訪問與此TSessi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論