第8章使用BDE組件開發(fā)數(shù)據(jù)庫(kù)_第1頁
第8章使用BDE組件開發(fā)數(shù)據(jù)庫(kù)_第2頁
第8章使用BDE組件開發(fā)數(shù)據(jù)庫(kù)_第3頁
第8章使用BDE組件開發(fā)數(shù)據(jù)庫(kù)_第4頁
第8章使用BDE組件開發(fā)數(shù)據(jù)庫(kù)_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第8章 使用bde組件開發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序 本章要點(diǎn): 常用的bde組件 ttable組件的常用屬性、方法與事件的 用 tdatasource組件 常用的數(shù)據(jù)控制組件及其使用方法 用ttable組件進(jìn)行數(shù)據(jù)庫(kù)常規(guī)操作的方 法 8.1 使用bde組件開發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序的一般方法 8.1.1 使用bde組件開發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序的模式 1. bde組件 bde組件均位于【bde】組件頁中,其作用是與實(shí)際 的物理數(shù)據(jù)庫(kù)建立聯(lián)系,從物理數(shù)據(jù)庫(kù)中提取信息, 或把信息的修改存放到物理數(shù)據(jù)庫(kù)中。 2. data access組件 data access組件位于【data access】組件頁中,該類 組件是連接b

2、de組件和數(shù)據(jù)控制組件的橋梁 。 3. data controls組件 8.1.2 常用的bde組件簡(jiǎn)介 8.2 ttable組件的使用 8.2.1 ttable組件的常用屬性 1. databasename屬性 2. tablename屬性 3. tabletype屬性 4. active屬性 5. readonly屬性 6. modified屬性 7. fieldcount屬性 8. recordcount屬性 9. recno屬性 10. recordsize屬性 11. fields屬性 12. bof屬性 13. eof屬性 14. filter屬性 15. cachedupdate

3、s屬性 【例8-1】 顯示與ttable組件相連接的數(shù)據(jù)表的相 關(guān)屬性。程序設(shè)計(jì)界面如圖8-3所示,使用ttable組件 與數(shù)據(jù)表“學(xué)生”相連接。程序運(yùn)行時(shí)在listbox1中 顯示表中的所有字段名,在編輯框edit1中顯示表名, 在編輯框edit2中顯示字段數(shù),在編輯框edit3中顯示記 錄數(shù),在編輯框edit4中顯示記錄號(hào),在編輯框edit5中 顯示記錄長(zhǎng)度。程序運(yùn)行界面如圖8-4所示。 分析:為使ttable組件與物理數(shù)據(jù)庫(kù)連接起來, 至少應(yīng)設(shè)置它的databasename屬性和tablename屬 性。為使ttable組件中的數(shù)據(jù)集能夠使用,應(yīng)把它的 active屬性設(shè)為true。為使

4、程序在一開始運(yùn)行時(shí)就能顯 示出所有字段的字段名,可在窗體的oncreate事件中 使用一個(gè)循環(huán),在循環(huán)中把fields數(shù)組的每個(gè)元素的 fieldname屬性值添加到listbox1列表框。顯示數(shù)據(jù)表 的其他屬性,可通過相應(yīng)的屬性名來實(shí)現(xiàn)。 8.2.2 ttable組件的常用方法 1. fieldbyname方法 該方法用于引用數(shù)據(jù)集中的某個(gè)字段,該方法 的函數(shù)形式如下: function fieldbyname(constfieldname:string):tfield 【例8-2】 編寫一個(gè)顯示字段名稱和選中字段的主要 屬性的程序。程序的設(shè)計(jì)界面如圖8-5所示,程序的運(yùn) 行界面如圖8-6所

5、示。程序執(zhí)行時(shí),首先把當(dāng)前目錄下 的學(xué)生表中的字段填充到列表框listbox1中,當(dāng)在 listbox1中選中某字段后,該字段的相應(yīng)屬性值將顯 示在對(duì)應(yīng)的編輯框中。 分析:顯示字段名的方法同例8-1。當(dāng)在listbox1上單擊 以選中某個(gè)字段時(shí),可通過ttable組件的fieldbyname方 法以列表框中選中的列表項(xiàng)作為參數(shù)來訪問對(duì)應(yīng)字段的屬 性。需注意的是編輯框中只能顯示字符串?dāng)?shù)據(jù),因此當(dāng)字 段屬性不是字符串?dāng)?shù)據(jù)時(shí),應(yīng)把它轉(zhuǎn)換為字符串?dāng)?shù)據(jù)。 2. 記錄指針移動(dòng)方法 【例8-3】 編寫一個(gè)數(shù)據(jù)庫(kù)應(yīng)用程序,用來瀏覽和維護(hù) 當(dāng)前目錄下“學(xué)生表”中的數(shù)據(jù),要求程序的瀏覽和維護(hù) 功能均使用組件來實(shí)現(xiàn)

6、。程序的設(shè)計(jì)界面如圖8-7所示, 程序的運(yùn)行界面如圖8-8所示。 分析:可使用tdatasource組件建立ttable組件與 數(shù)據(jù)控件組件之間的聯(lián)系,使用tdbnavigator來實(shí)現(xiàn) 記錄指針的移動(dòng),使用tdbedit來顯示ttable組件數(shù)據(jù) 集的當(dāng)前記錄的內(nèi)容。 【例8-4】 編寫一個(gè)數(shù)據(jù)庫(kù)應(yīng)用程序,用來瀏覽當(dāng)前 目錄下“學(xué)生表”中的數(shù)據(jù),要求記錄指針的移動(dòng)采 用移動(dòng)記錄指針的方法。程序的設(shè)計(jì)界面如圖8-9所示, 程序的運(yùn)行界面如圖8-10所示。程序運(yùn)行時(shí)單擊相應(yīng) 的按鈕,將實(shí)現(xiàn)記錄指針的相應(yīng)移動(dòng)。 分析:為使在程序運(yùn)行時(shí),單擊相應(yīng)的按鈕可實(shí)現(xiàn) 記錄指針的相應(yīng)移動(dòng),應(yīng)在按鈕的oncli

7、ck事件代碼中 調(diào)用相應(yīng)的記錄指針移動(dòng)方法。 3. 查詢記錄的相關(guān)方法 ttable組件提供了4種查詢記錄的方法 : (1)gotokey方法:該方法用于精確查找 ; (2)findkey方法:該方法是實(shí)現(xiàn)精確查找 的另一種方法,它和gotokey一樣均是一個(gè)函 數(shù)過程,格式如下: function findkey(const keyvalues: array of const): boole (3)gotonearest和findnearest用于模糊查 找。 4. 數(shù)據(jù)操作相關(guān)方法 【例8-6】 編寫一個(gè)對(duì)當(dāng)前目錄下的學(xué)生表進(jìn)行維 護(hù)的程序,要求該程序能夠完成記錄的增加、插入、 修改和刪除

8、等功能,對(duì)于增加和修改功能,程序應(yīng)能 提供確定和取消操作。程序的設(shè)計(jì)界面如圖8-13所示, 程序的運(yùn)行界面如圖8-14所示。程序運(yùn)行時(shí),單擊相 應(yīng)的按鈕將完成相應(yīng)的數(shù)據(jù)表的維護(hù)操作。 分析:調(diào)用相應(yīng)的ttable組件的方法實(shí)現(xiàn)相應(yīng)的數(shù) 據(jù)操作功能。 8.2.3 ttable組件的常用事件 1. before事件 2. after事件 3. on事件 【例8-7】 為例8-6添加一條關(guān)于刪除的參照 完整性驗(yàn)證:如果必修課成績(jī)表中有當(dāng)前學(xué)生 的選課,則不允許刪除當(dāng)前記錄。再給“確定” 操作增加一個(gè)提示功能:當(dāng)執(zhí)行post成功時(shí), 將顯示“保存成功”的提示信息。 分析:假設(shè)table1連接學(xué)生表,t

9、able2連接必修 課成績(jī)表,在table1組件中執(zhí)行刪除操作發(fā)生之前, 將發(fā)生beforedelete事件,可在該事件中根據(jù) table1組件的當(dāng)前記錄的學(xué)號(hào)值在table2組件中查 找相應(yīng)的學(xué)號(hào),如果找到則不能刪除,系統(tǒng)可拋出 一個(gè)異常來終止刪除操作。post方法執(zhí)行成功后, 將會(huì)發(fā)生afterpost事件,可在該事件中顯示提示 信息。 8.3 tdatasource組件的使用 tdatasource組件是使用最多的數(shù)據(jù) 訪問組件,用來連接數(shù)據(jù)集組件和數(shù)據(jù) 控制組件。 tdatasource組件的屬性比較少,最 重要 的是dataset屬性。該屬性指出要 與哪一個(gè)數(shù)據(jù)集組件建立聯(lián)系,它的屬

10、 性值是某一個(gè)數(shù)據(jù)集組件 8.4 常用數(shù)據(jù)控制組件及其使用方法 8.4.1 數(shù)據(jù)控制組件的常用屬性及使用方法 1. 基本屬性 (1)datasource屬性 (2)datafield屬性 2. 使用方法 (1)在界面上添加ttable組件。 (2)在界面上添加一個(gè)tdatasource組件 。 (3)在界面上添加數(shù)據(jù)控制組件。 8.4.2 常用的數(shù)據(jù)控制組件 【例8-8】 編寫一個(gè)對(duì)學(xué)生表進(jìn)行顯示和修改的程序。 程序有兩個(gè)窗體form1和form2,設(shè)計(jì)時(shí)的form1和 form2如圖8-20和圖8-21所示。 程序執(zhí)行時(shí),首先出現(xiàn)form1,在form1上的網(wǎng)格控 件上雙擊,將會(huì)出現(xiàn)form

11、2。在form2中將顯示雙擊的 當(dāng)前記錄的值,可以對(duì)它進(jìn)行修改,修改完成后單擊 “確定”按鈕將會(huì)把修改的結(jié)果存放到數(shù)據(jù)表中并返 回到form1窗口,單擊“取消”按鈕將取消用戶所做的 修改操作并返回form1窗口。 分析:為使form2中的數(shù)據(jù)控制組件能夠和form1中 數(shù)據(jù)控制組件顯示同一個(gè)數(shù)據(jù)集的內(nèi)容,應(yīng)把form2上 相應(yīng)的數(shù)據(jù)控制組件的datasource屬性設(shè)置成與form1 上的數(shù)據(jù)控制組件使用的tdatasource組件的名稱。 【例8-9】 編寫一個(gè)必修課成績(jī)表的輸入程序,要求 輸入學(xué)號(hào)使用一個(gè)tdblookup combobox組件,該組 件從學(xué)生表中提取學(xué)號(hào)信息,讓用戶選擇輸

12、入。程序 的設(shè)計(jì)界面如圖8-22所示,程序的運(yùn)行界面如圖8-23 所示。 分析:輸入成績(jī)時(shí),學(xué)號(hào)必須是一個(gè)具體的學(xué)生的 學(xué)號(hào),因此可從學(xué)生表中提取出學(xué)生學(xué)號(hào)信息供用戶 選擇以減少輸入錯(cuò)誤。 【例8-10】 設(shè)計(jì)一個(gè)動(dòng)物圖片瀏覽程序,用來瀏覽 數(shù)據(jù)庫(kù)別名dbdemos下的animals. dbf表中的bmp字 段中存放的動(dòng)物照片。程序的設(shè)計(jì)界面如圖8-24所示, 程序的運(yùn)行界面如圖8-25所示。 分析:顯示數(shù)據(jù)庫(kù)中圖像字段的內(nèi)容,應(yīng)使用 tdbimage組件。 【例8-11】 用database desktop應(yīng)用程序創(chuàng)建一個(gè) 名為rsda的數(shù)據(jù)表,該表有4個(gè)字段:編號(hào)、姓名、 性別和婚姻狀況。

13、表的結(jié)構(gòu)如圖8-26所示。然后編寫 一個(gè)對(duì)該數(shù)據(jù)表進(jìn)行維護(hù)的數(shù)據(jù)庫(kù)應(yīng)用程序,程序的 設(shè)計(jì)界面如圖8-27所示,程序的運(yùn)行界面如圖8-28所 示。 分 析 : 由 于 性 別 只 有 兩 種 情 況 , 故 可 用 dbradiogroup組件供用戶選擇輸入。婚姻狀況是互斥 的,可通過tdbcheckbox組件來輸入或顯示。 8.5 主從表數(shù)據(jù)庫(kù)應(yīng)用程序的編寫方法 【例8-12】 以dbdemos數(shù)據(jù)庫(kù)別名下的 customer.db作為主表,以orders.db作為從表,以 custno字段作為主從表聯(lián)系的字段建立主從表應(yīng)用程 序。程序的設(shè)計(jì)界面如圖8-29所示,程序的運(yùn)行界面 如圖8-30所

14、示。程序運(yùn)行時(shí)在主表中選定一個(gè)客戶, 從表將顯示相應(yīng)客戶的訂單信息。 8.6 通過程序創(chuàng)建數(shù)據(jù)庫(kù)表 1. fielddefs屬性 2. indexdefs屬性 3. createtable方法 【例8-13】 通過編程的方式在當(dāng)前目錄下 生成一個(gè)名為rygl的paradox表,該表有四個(gè) 字段,分別為:bh(編號(hào),字符型,8個(gè)字節(jié), 必填字段)、xm(姓名,字符型,10個(gè)字節(jié), 必填字段)、nl(年齡,整型)和hf(婚否, 邏輯型)。同時(shí)還為該表創(chuàng)建了兩個(gè)索引,分 別為bh(索引字段為bh,是主鍵索引)、 xm(索引字段為xm)。并給該表添加兩條記 錄,內(nèi)容為: 01001001 王和平 23

15、 true 01001002 李小華 21 false 程序的設(shè)計(jì)界面如圖8-33所示,程序的運(yùn)行界面如圖8- 34所示。 分析:建立數(shù)據(jù)表,首先要定義表的字段,可通過 ttable組件的fielddefs屬性的addfielddef屬性來實(shí)現(xiàn)。 如果表有索引,還必須要定義索引,可通過ttable組 件的indexdefs屬性的addindexdef屬性來實(shí)現(xiàn)。字段 和索引均定義好后,可通過調(diào)用ttable組件的 createtable方法來建立表。 8.7 ttable組件編程綜合實(shí)例 【例8-14】使用ttable組件實(shí)現(xiàn)“圖書瀏覽與維護(hù)程 序”,該程序的功能要求如下。 (1)建立一個(gè)名為

16、tsxx的表,表的結(jié)構(gòu)如圖8-35所示。 (2)按鈕的功能實(shí)現(xiàn)與狀態(tài)設(shè)置。 如果數(shù)據(jù)表中無記錄,則除【添加】按鈕外的其他按鈕均不可 一開始,【確定】和【取消】按鈕不可用,單擊【添加】或【修 改】按鈕后,【確定】和【取消】按鈕可用,此時(shí)其他各按鈕均 不可用。當(dāng)單擊【確定】或【取消】按鈕后,這兩個(gè)按鈕不可用, 其他各個(gè)按鈕均可用。 當(dāng)記錄指針處于文件尾時(shí),【后移】和【末記錄】按鈕不能用, 當(dāng)記錄指針處于【文件頭】時(shí),【前移】和【首記錄】按鈕不能 用。 (3)顯示各字段內(nèi)容的組件不再使用data controls組件頁上的 組件,而是使用像tedit,tcheckbox等的一般組件。 (4)查詢使用

17、findkey方法來實(shí)現(xiàn)。 8.8 其他bde組件 8.8.1 tstoreproc組件 (1)storedprocname屬性 (2)params屬性 (3)paramcount屬性 (4)create方法 (5)execproc方法 8.8.2 tdatabase組件 1. tdatabase組件的常用屬性 (1)aliasname屬性 (2)connected屬性 (3) databasename屬性 (4)exclusive屬性 (5)keepconnection屬性 2. tdatabase組件的常用事件 (1)applyupdates方法 (2)close方法 (3)commit方法 (4)rollback方法 (5)starttransaction方法 小結(jié) 利用bde組件中的ttable組件能夠快速地開發(fā)出功 能強(qiáng)大的數(shù)據(jù)庫(kù)應(yīng)用程序。ttable組件的作用主要是 建立與物理表

溫馨提示

  • 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. 人人文庫(kù)網(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)論