Delphi中嵌入的數據庫應用開發工具如Database Form Expert具有很強大的功能,我們不需要編寫任何程序代碼便可以快速地創建一個簡單的數據庫應用程序,甚至還能創建基於多個數據庫表的主要──明細型數據庫應用程序。
本章主要介紹用Delphi開發簡單的數據庫應用程序的一般方法和步驟,首先讓讀者對Delphi強勁的數據庫應用開發工具有一個直觀的印象,然後在此基礎上進行復雜的數據庫應用程序的設計,本章主要包括以下內容:
● 創建數據庫應用窗體
包括用Database Form Expert 或手工方式創建簡單的無需編寫程序代碼的應用程序或者利用多個部件並編寫功能復雜的程序代碼創建主要──明細型數據庫應用程序。
● 在應用程序中控制字段有關的屬性
描述怎樣讀寫數據庫表中字段的值和控制字段的顯示格式等。
本章所介紹的例子中用到的窗體、數據庫表以及相關的文件都是在安裝Delphi時缺省安裝在C:\DELPHI\DEMOS\DB\MASTAPP目錄中,並且用別名DBDEMOS表示這一子目錄。在本章例子中,除特殊聲明外,所有的TTable和 TQuery 部件的 DatabaseName 屬性都設置為DBDEMOS。
14.1 簡單的基於單表的據庫應用
用Decphi創建顯示一個數據庫表中的內容的應用非常簡單和方便,只需要三個部件,只要將這三個部件通過相關的屬性相互聯系起來,不需要編寫任何程序代碼便可以實現。例如,用戶想查看數據庫表Customer.DB中的內容時,可以按下面步驟來實現:
14.1.1 選擇相關的部件:
選擇菜單Project/New開始一個新工程,並修改Form1的Caption屬性為CustomerFrom1並把Name屬性設置為CustomerForm1,然後從部件選擇板上的Data Access 頁上選取一個Datasounce部件和一個Table部件放到窗體的左上角,它們是非可見的部件,在窗體中我們看到的只是部件的圖標;從Data Control頁上選取DBGrid部件放到窗體中前兩個部件的下面。完成這些工作之後,窗體如圖14.1所示。
圖在CustomerFrom1窗體中放置三個部件
14.1.2 設置部件的屬性
為了使TDBGrid部件能夠顯示數據庫表Customer.DB中的客戶信息,我們必須修改窗體三個部件相關的屬性,這些屬性的設置如表14.1所示。
表14.1 CustomerFrom1窗體中三個部件的屬性設置
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
屬 性 屬 性 值
──────────────────────────────
DataSource1.AutoEdit False
DataSource1.DataSet Table1
Table1.DatabaseName DBDEMOS
Table1.TableName CUSTOMER.DB
Table1.Active True
DBGrid1.DataSource DataSource1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
這裡要注意的是:DBDEMOS是Delphi缺省安裝時C:\Delphi\DEMO\DB\MASTAPP目錄的別名,而且數據庫表Customer.DB存在該目錄下,用戶在使用這一例子時,請注意這兩項設置都是正確的。另外 Datasource1.Dataset,Table1.TableName和DBGrid1.Datasource屬性都有下拉式列表框允許用戶從可能的值列表中選擇它們的值,這樣能方便我們進行屬性的設置,而且不容易出錯。
Datasouuce1.AutoEdit屬性設置為False是為了防止用戶修改數據庫表中的數據,在下面的討論中我們將詳細地進行說明。
Table1.Active設置為True時,Delphi會打開Table1.TableName所指定的數據庫表。如果這個數據庫表不存在(或表中什麼也沒有,即空表), Delphi 會彈出出錯信息並且Table1.Active變成False。當Table1.Active被設置成True之後,Table1 部件的一些屬性就不能再修改了,如Table1.DatabaseName和Table1.Tablename屬性。若要修改它們,必須首先要將Table1.Active屬性設置為False,然後再進行修改,否則,Delphi會彈出錯誤信息“Cannot perform this operation on an open database”。當看到這個錯誤信息時,只需把Table1.Active置成False,完成相關的修改後,再把 Table1. Active 屬性設置為True。
當我們把DBGrid1.DataSource的值設置成DataSource1時,Delphi會把Customer.DB中的數據填充到DBGrid1部件中,並且可以用DBGrid1中的滾動條來浏覽數據庫表中的所有記錄。
14.1.3 運行程序