Delphi中嵌入的數據庫應用開發工具如Database Form Expert具有很強大的功能我們不需要編寫任何程序代碼便可以快速地創建一個簡單的數據庫應用程序甚至還能創建基於多個數據庫表的主要──明細型數據庫應用程序
本章主要介紹用Delphi開發簡單的數據庫應用程序的一般方法和步驟首先讓讀者對Delphi強勁的數據庫應用開發工具有一個直觀的印象然後在此基礎上進行復雜的數據庫應用程序的設計本章主要包括以下內容
● 創建數據庫應用窗體
包括用Database Form Expert 或手工方式創建簡單的無需編寫程序代碼的應用程序或者利用多個部件並編寫功能復雜的程序代碼創建主要──明細型數據庫應用程序
● 在應用程序中控制字段有關的屬性
描述怎樣讀寫數據庫表中字段的值和控制字段的顯示格式等
本章所介紹的例子中用到的窗體數據庫表以及相關的文件都是在安裝Delphi時缺省安裝在C:\DELPHI\DEMOS\DB\MASTAPP目錄中並且用別名DBDEMOS表示這一子目錄在本章例子中除特殊聲明外所有的TTable和 TQuery 部件的 DatabaseName 屬性都設置為DBDEMOS
簡單的基於單表的據庫應用
用Decphi創建顯示一個數據庫表中的內容的應用非常簡單和方便只需要三個部件只要將這三個部件通過相關的屬性相互聯系起來不需要編寫任何程序代碼便可以實現例如用戶想查看數據庫表CustomerDB中的內容時可以按下面步驟來實現
選擇相關的部件
選擇菜單Project/New開始一個新工程並修改Form的Caption屬性為CustomerFrom並把Name屬性設置為CustomerForm然後從部件選擇板上的Data Access 頁上選取一個Datasounce部件和一個Table部件放到窗體的左上角它們是非可見的部件在窗體中我們看到的只是部件的圖標從Data Control頁上選取DBGrid部件放到窗體中前兩個部件的下面完成這些工作之後窗體如圖所示
圖在CustomerFrom窗體中放置三個部件
設置部件的屬性
為了使TDBGrid部件能夠顯示數據庫表CustomerDB中的客戶信息我們必須修改窗體三個部件相關的屬性這些屬性的設置如表所示
表 CustomerFrom窗體中三個部件的屬性設置
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
屬 性 屬 性 值
──────────────────────────────
DataSourceAutoEdit False
DataSourceDataSet Table
TableDatabaseName DBDEMOS
TableTableName CUSTOMERDB
TableActive True
DBGridDataSource DataSource
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
這裡要注意的是DBDEMOS是Delphi缺省安裝時C:\Delphi\DEMO\DB\MASTAPP目錄的別名而且數據庫表CustomerDB存在該目錄下用戶在使用這一例子時請注意這兩項設置都是正確的另外 DatasourceDatasetTableTableName和DBGridDatasource屬性都有下拉式列表框允許用戶從可能的值列表中選擇它們的值這樣能方便我們進行屬性的設置而且不容易出錯
DatasouuceAutoEdit屬性設置為False是為了防止用戶修改數據庫表中的數據在下面的討論中我們將詳細地進行說明
TableActive設置為True時Delphi會打開TableTableName所指定的數據庫表如果這個數據庫表不存在(或表中什麼也沒有即空表) Delphi 會彈出出錯信息並且TableActive變成False當TableActive被設置成True之後Table 部件的一些屬性就不能再修改了如TableDatabaseName和TableTablename屬性若要修改它們必須首先要將TableActive屬性設置為False然後再進行修改否則Delphi會彈出錯誤信息Cannot perform this operation on an open database當看到這個錯誤信息時只需把TableActive置成False完成相關的修改後再把 Table Active 屬性設置為True
當我們把DBGridDataSource的值設置成DataSource時Delphi會把CustomerDB中的數據填充到DBGrid部件中並且可以用DBGrid中的滾動條來浏覽數據庫表中的所有記錄
運行程序
保存文件命名代碼單元為Custpas命名工程名為CustPRJDPR然後按F編譯並運行程序程序執行之後我們可以使用滾動條或鍵盤移動鍵在字段和記錄間移動但不能修改表中的數據因為DatasoucAutoEdit屬性已被設置為False
Cust程序中的三個部件都有各自的特殊用途三個部件的相關屬性在內部相互聯系生成最終的應用程序TTable部件連接磁盤上的實際數據庫表和應用程序中其他部件的通道TTable部件具有打開和關閉讀取更新以及其他處理磁盤數據庫文件的方法
TDatasource部件是連接TTable部件和數據浏覽部件如TDBGrid部件的橋梁 TDBGrid部件用於顯示數據庫表中的數據信息它為應用程序提供一個直觀的界面圖闡述了這三個部件之間的關系
Cust程序中三個部件之間的內部關系
TDBGrid 部件的奇妙之處在於它知道如何去獲取數據庫表中的下一條或前一條記錄我們使用滾動條或箭頭鍵便可以完成這項任務TDBGrid部件不知道如何增加刪除和修改記錄如果想讓 Cust 程序能夠修改數據庫表中的記錄只要把 Datasource 部件的AutoEdit屬性設置成True 並重新編譯和運行程序就可以達到目的 使用箭頭鍵 把DBGrid的高亮度條定位到某一個字段上然後鍵入新值該字段中的值將被鍵入的新值所取代並且當移動到另一條記錄時健入的信息會自動寫入數據庫表中如果想放棄所做的改動只需在離開該字段前按一下Escape鍵
如果想在表中增加新記錄可以把高亮度條移到網格底端的空白記錄上並輸入新記錄的有關字段值也可以在用戶指定的某一條記錄的後面插入一條新記錄只要把高亮度條定位到指定的記錄上按Ins鍵使可以在該記錄的後面插入新記錄
刪除某一條記錄時把高亮度條定位在想刪除的記錄的任何字段上按Ctrl+ del鍵這時會出現保護信息我們可以確認是否真的想刪除該項記錄
TDBGrid為用戶提供了較完備的功能用於控制是否編輯增加或刪除記錄若想禁止對數據庫表作任何修改設置TDBGrid部件的Readonly屬性為 True 並設置 OptiondgEDiting為False(這將為我們提供一個只讀的數據庫表浏覽器而不是數據庫編輯器但它隱含著增加編輯和刪除記錄的能力)TDBGrid部件的這些屬性和Option屬性其它選項的各種不同組合可以讓我們很方便地對數據庫表進行有效的浏覽編輯等操作
如果我們經常使用像電子表格那樣的界面來顯示和編輯數據記錄TDBGrid 部件便是一個很方便的工具但那並不是最友好的用戶界面如果想擁有更優美更直觀的界面我們還可以使用單獨的數據浏覽部件來顯示數據庫表中各個字段的值並利用TDBNavigator部件控制對數據庫表的存取
[] [] []
From:http://tw.wingwit.com/Article/program/Delphi/201311/25173.html