13.3.2 數(shù)據(jù)控制部件
數(shù)據(jù)控制部件頁上的部件,主要用于設計用戶界面,對數(shù)據(jù)庫中的數(shù)據(jù)進行瀏覽、編輯、插入、刪除等操作。因而數(shù)據(jù)控制部件常常又被稱為數(shù)據(jù)瀏覽部件,數(shù)據(jù)控制部件其實是在Standard頁上的標準部件的基礎上,相應地增加了數(shù)據(jù)瀏覽功能,使得它們能夠顯示和編輯數(shù)據(jù)庫中數(shù)據(jù)信息。
數(shù)據(jù)控制部件既能夠把數(shù)據(jù)庫中的數(shù)據(jù)顯示到窗體中,又可以將其自身的經(jīng)過修改的數(shù)據(jù)寫回到數(shù)據(jù)庫中。下表列出了數(shù)據(jù)控制頁上的數(shù)據(jù)控制部件及它們的主要用途。
表13.5 數(shù)據(jù)控制部件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
部件名稱 主 要 用 途
───────────────────────────────
使用該部件可以向前向后移動記錄指針,可以使
TDBNavigator 用該部件對單條記錄進行編輯,還可以用它來插
入、刪除記錄以及刷新顯示和取消前一次的操作
───────────────────────────────
它是顯示數(shù)據(jù)庫中的數(shù)據(jù)的文本框,它只能顯示
TDBText 數(shù)據(jù)庫表當前記錄的字段值,用戶不能對其中的
數(shù)據(jù)進行修改。
───────────────────────────────
它是顯示和編輯數(shù)據(jù)庫表中的數(shù)據(jù)的編輯框,它
TDBEdit 既可以顯示又可以編輯數(shù)據(jù)庫表中當前記錄的字
段值。
───────────────────────────────
TDBCheckBox 它是瀏覽數(shù)據(jù)庫中的數(shù)據(jù)的檢查框,它可以用來
顯示和編輯數(shù)據(jù)庫中的布爾型字段的字段值。
───────────────────────────────
TDBListBox 它是瀏覽數(shù)據(jù)庫中的數(shù)據(jù)的列表框,它可以用一
個列表框來顯示數(shù)據(jù)庫表中一個字段的值。
───────────────────────────────
TDBComboBox 它是瀏覽數(shù)據(jù)庫中的數(shù)據(jù)的組合框,它可以用一
個組合框來顯示數(shù)據(jù)庫表中一個字段的值。
───────────────────────────────
TDBRadioGroup 它是瀏覽數(shù)據(jù)庫表中的數(shù)據(jù)的單選鈕,用一組單
選鈕可以確定顯示數(shù)據(jù)庫表中哪一個字段。
───────────────────────────────
TDBGrid 它是瀏覽數(shù)據(jù)庫中的數(shù)據(jù)的網(wǎng)格,以網(wǎng)格的方式
顯示數(shù)據(jù)庫中的數(shù)據(jù),在網(wǎng)格中還可以對數(shù)據(jù)庫
中的數(shù)據(jù)進行編輯。利用Fields Editor可以對
數(shù)據(jù)庫表中字段的顯示格式、顯示順序、是否顯
示等進行控制。
───────────────────────────────
TDBMemo 它主要用于瀏覽數(shù)據(jù)庫中備注型的字段,它可以
用來顯示數(shù)據(jù)庫表中當前記錄中的BLOB型字段。
───────────────────────────────
TDBImage 它是瀏覽數(shù)據(jù)庫中的數(shù)據(jù)的圖像框,它可以用于
顯示、拷貝、粘貼據(jù)庫表中圖像類型的字段。
───────────────────────────────
TDBLookUpList 它是瀏覽數(shù)據(jù)庫表中的數(shù)據(jù)的列表框,在基于一
個數(shù)據(jù)庫表的應用中,用它可以顯示另一個數(shù)據(jù)
庫表中一個指定的字段值。
───────────────────────────────
TDBLookUpCombo 它是瀏覽數(shù)據(jù)庫表中的數(shù)據(jù)的組合框,在基于一
個數(shù)據(jù)庫表的應用中,用它可以顯示另一個數(shù)據(jù)
庫表中一個指定的字段值。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
數(shù)據(jù)控制部件為開發(fā)Delphi數(shù)據(jù)庫應用程序提供可視化的用戶界面,不管應用程序是訪問本地數(shù)據(jù)庫中的數(shù)據(jù)文件,還是訪問遠程數(shù)據(jù)庫服務器中的數(shù)據(jù)文件,用戶界面都是一致的,即數(shù)據(jù)庫的物理位置對數(shù)據(jù)控制部件是透明的。
13.3.3 數(shù)據(jù)庫窗體專家和數(shù)據(jù)庫操作臺(DBD)
Delphi為用戶開發(fā)簡單的數(shù)據(jù)庫應用程序提供了一個開發(fā)工具叫做“數(shù)據(jù)庫窗體專家”(Database Form Expert),在Delphi系統(tǒng)菜單Tool菜單下可以找到。
數(shù)據(jù)庫窗體專家能夠自動生成簡單的數(shù)據(jù)庫應用程序中所必須完成的許多任務,它還可以生成基于單個數(shù)據(jù)庫表的應用程序窗體或基于主要──明細型多個數(shù)據(jù)庫表的應用程序窗體,數(shù)據(jù)庫窗體專家能夠自動完成的任務如下:
● 放置數(shù)據(jù)庫部件到窗體中(TDataSource部件)
● 為數(shù)據(jù)集部件(TTable、TQuery)和磁盤上的數(shù)據(jù)庫建立連接
● 建立數(shù)據(jù)源(TDataSource)與數(shù)據(jù)控制部件的連接,數(shù)據(jù)源(TDataSource)與 數(shù)據(jù)訪問部件(TTable、TQuery)的連接
● 為TQuery部件編寫SQL語句
● 為窗體中的部件定義Tab順序
數(shù)據(jù)庫操作臺(DBD)是數(shù)據(jù)庫維護和數(shù)據(jù)定義工具,程序設計人員利用它可以查詢、連接、建立、重構(gòu)、索引、修改和拷貝數(shù)據(jù)庫表,包括Pàaradox和dBASE文件和基于 SQL語言的數(shù)據(jù)庫表。而且在使用DBD操作Paradox或dBASE的表時,用戶不必擁有 Paradox 或dBASE數(shù)據(jù)庫管理系統(tǒng)。DBD還可以把一種格式的數(shù)據(jù)和數(shù)據(jù)字典拷貝成另一種格式,例如,你可以將一個dBASE的表拷貝到遠程的SQL服務器上的一個數(shù)據(jù)庫中去。有關DBD詳細描述,請參看“數(shù)據(jù)庫操作臺(DBD)的使用”。
13.4 Delphi數(shù)據(jù)庫應用程序的開發(fā)方法和步驟
13.4.1 概述
用Derphi用開數(shù)據(jù)庫應用程序,雖然與開發(fā)其他應用程序有相似之處,但是也有一些重要的區(qū)別,我們必須要加以注意。
利用Delphi的客戶/服務器功能,程序設計者可以在本地數(shù)據(jù)庫上或遠程數(shù)據(jù)庫服務器上開發(fā)客戶/服務器模式的應用程序。Delphi 的一個強有力的功能之一是可以將基于本地桌面數(shù)據(jù)庫系統(tǒng)的應用程序很容易地修改成客戶/服務器模式的應用。一個Delphi 數(shù)據(jù)庫應用程序訪問的是本地數(shù)據(jù)庫還是遠程SQL數(shù)據(jù)庫服務器上的數(shù)據(jù)庫,這對于最終用戶是完全透明的。即數(shù)據(jù)庫的物理位置對最終用戶是透明的,當數(shù)據(jù)庫的物理位置發(fā)生變化時,用戶界面不必隨之變化。
因為數(shù)據(jù)庫應用程序的是依賴于它所訪問的數(shù)據(jù)庫的,所以在開發(fā)數(shù)據(jù)庫應用程序之前必須要建立一個完善的數(shù)據(jù)庫即數(shù)據(jù)定義,數(shù)據(jù)定義應當是開發(fā)數(shù)據(jù)庫應用程序的一部分,但它超出了書本的范圍,有關數(shù)據(jù)定義的內(nèi)容,請參看關系數(shù)據(jù)庫設計方面的資料。在我們用Derphi開發(fā)一個數(shù)據(jù)庫應用程序時,可能有下列四種情況。
1、數(shù)據(jù)庫不存在或者必須要重新定義。使用DBD為本地數(shù)據(jù)庫定義Paradox或dBASE 數(shù)據(jù)庫表。使用Delphi提供的服務器開發(fā)工具如Windows ISQL或DBD定義本地或遠程SQL數(shù)據(jù)庫務器上的數(shù)據(jù)庫。
2、數(shù)據(jù)庫在桌面數(shù)據(jù)庫系統(tǒng)中或局域網(wǎng)上(如Paradox或dBASE),而且BDE、數(shù)據(jù)庫和應用程序在同一臺機器上,這是典型的獨立應用。
3、數(shù)據(jù)庫在桌面數(shù)據(jù)庫系統(tǒng)中,但是用戶要把它改變到SQL數(shù)據(jù)庫服務器中去,這種情況我們在附錄C中詳細討論。
4、數(shù)據(jù)庫在SQL數(shù)據(jù)庫服務器中,而且應用程序?qū)⒌絊QL數(shù)據(jù)庫服務器中去訪問數(shù)據(jù)庫,這是一個標準的客戶/服務器應用。
有關開發(fā)客戶/服務器應用程序的詳細內(nèi)容,參看“客戶/服務器應用”一章。
13.4.2 數(shù)據(jù)庫應用程序的開發(fā)步驟
數(shù)據(jù)庫應用程序的最終目標就是為用戶提供一個滿足其長期需要的軟件產(chǎn)品,因此,成功地開發(fā)一個數(shù)據(jù)庫應用程序的關鍵之一是要詳細地定義用戶的需求,然后再圍繞用戶的需求進行開發(fā),數(shù)據(jù)庫應用程序的一般開發(fā)的三個基本步驟如下。
● 系統(tǒng)設計
● 系統(tǒng)實現(xiàn)
● 系統(tǒng)運行和維護
在這個三個基本步驟中,都包含著數(shù)據(jù)庫的開發(fā)和應用程序界面的開發(fā)兩大類任務,對于一個客戶/服務器模式的應用,數(shù)據(jù)庫和應用界面的區(qū)別就更明顯一些,因為它們運行在不同的平臺之上,而且使用的操作系統(tǒng)都常常不一樣,如(一個Unix環(huán)境的服務器和Windows環(huán)境的客戶機)。
1、系統(tǒng)設計
系統(tǒng)設計階段應當根據(jù)用戶的需求,明確地描述數(shù)據(jù)庫(數(shù)據(jù)庫服務器端)和應用界面(客戶機端)實現(xiàn)的功能,即決定哪些功能由服務器端實現(xiàn),哪些功能由客戶機端實現(xiàn),對于客戶/服務器應用程序,許多功能既可以在服務器端實現(xiàn)又可以在客戶端實現(xiàn)的,例如一個復雜的數(shù)學變換功能既可以由客戶端的應用程序?qū)崿F(xiàn),也可以由服務器端的存貯過程實現(xiàn)。服務器和客戶端應用程序功能的劃分往往取決于應用程序運行的硬件環(huán)境,例如:如果客戶端是低檔的PC機,服務器端是高檔的工作站,那么大量的計算由服務器完成是比較理想的。
2、系統(tǒng)實現(xiàn)
系統(tǒng)實現(xiàn)階段的主要任務是使用Delphi提供的工具和部件以及Pascal語言實現(xiàn)系統(tǒng)設計階段的設想,并進行調(diào)試。
在系統(tǒng)實現(xiàn)階段,最好使用數(shù)據(jù)庫的一個備份數(shù)據(jù)庫,這個備份的數(shù)據(jù)庫與原數(shù)據(jù)庫具有相同的結(jié)構(gòu),但其中的數(shù)據(jù)庫只是原數(shù)據(jù)庫中的一部分,至所以不在原數(shù)據(jù)庫上開發(fā)應用程序,是因為考慮到?jīng)]有調(diào)試好的應用程序可能會破壞數(shù)據(jù)庫中的數(shù)據(jù)或者妨礙數(shù)據(jù)庫的正常操作。
如果應用程序是基于遠程SQL數(shù)據(jù)庫服務器的,在系統(tǒng)實現(xiàn)階段可以采用兩種方法:
● 在本地InterBase服務器上,使用數(shù)據(jù)庫的備份數(shù)據(jù)庫進行開發(fā)和調(diào)試
● 在遠程服務器上,使用數(shù)據(jù)庫的備份數(shù)據(jù)庫進行開發(fā)和調(diào)試
第一種方法優(yōu)越性在于,它是獨立于服務器的,而不至于影響服務器的其它的操作,而且不消耗服務器的資源不增加網(wǎng)絡的負擔。它的不利的方面是開發(fā)出來的應用程序只能在標準的SQL服務器上使用和調(diào)試。第二種方法能夠使程序設計人員直接感受到服務器的特性,但它在調(diào)試階段要消耗網(wǎng)絡和服務器的資源,這種方法具有一定的危險性,程序中的錯誤可能會導致服務器的癱瘓。
[1] [2] 下一頁
|