程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 第十四章-簡單數據庫應用的創建及MASTAPP介紹(一)(3)

第十四章-簡單數據庫應用的創建及MASTAPP介紹(一)(3)

編輯:Delphi

14.3 創建主要──明細數據庫應用 

我們前面在介紹的基於單個數據庫表的數據庫應用程序只能對數據庫表進行簡單的管理,大多數只用來浏覽單個數據庫表中的記錄信息,如果我們想浏覽多個相關的數據庫表中的記錄信息,就必須要創建主要──明細型數據庫應用程序。

在主要──明細型數據庫應用程序中,一個數據庫表作為主要表,其中存放著綜合信息,其他的數據庫表和主要數據庫表相關聯,它們當中存放著更詳細的信息。例如,當數據庫表Customer.DB作為主表,它包含著客戶的綜合信息如編號、姓名、所在公司的名稱等等。而數據庫表Orders.DB中包含著每個客戶的訂貨單的詳細信息,如訂單號、發貨日期、起運日期、發貨目的地等信息,這樣當在Customer.DB表中查看某一位客戶時,利用其中的字段CustNo與Orders.DB表發生聯系,自動地從Orders.DB表中檢索出這位客戶曾經發來的所有訂貨單的詳細信息。主要──明細型數據庫體現了關系數據庫的特點,即獨立的數據庫表之間基於它們共同的字段而發生聯系。在這裡Customer.DB和Orders.DB擁有一個共同的字段CustNo。

14.3.1 一對多關系的主要──明細型數據庫應用程序 

主要和明細數據庫表之間存在一對多的關系,意思是說對於主表中的一條記錄,在明細表中有多條記錄與之對應。例如,創建一個主要──明細型數據庫應用程序,其包括兩個表Customer.DB和Orders.DB,它們分別作為主表和明細表,創建好的應用如圖14.5所示,窗體中各部件的屬性設置  

表14.2 主要──明細型數據庫應用中各部件的屬性

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

部 件 屬 性 屬 性 值 注 釋

──────────────────────────────────

Table1 Active True

(主表) DatabaseName DBDEMOS

TableName CUSTOMER.DB

──────────────────────────────────

DataSource1 DataSet Table1

AutoEdit False

──────────────────────────────────

Table2 Active True

(明細表) DatabaseName DBDEMOS

TableName ORDERS.DB

IndexFieldNames CUSTNO 指定字段CUSTNO作為

Table2中的索引字段

MasterField CUSTNO 指定與主表發生聯系

的字段

MasterSource DataSource1 說明與主表相連接的

數據源即DataSource

──────────────────────────────────

DataSource2 DataSet Table2

AutoEdit False

──────────────────────────────────

DBGrid1 DataSource DataSource1

(對應主表)

──────────────────────────────────

DBGrid2 DataSource DataSource2

(對應明細表)

TableName ORDERS.DB

──────────────────────────────────

DBNavigator1 DataSource DataSource1

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

一對多關系是非常普遍的關系。即便是簡單的名字/ 地址數據庫都有一對多的關系,因為一個人可能不止一個地址:家庭地址、工作地址、還可能有別墅地址。在本例中,公司的一個客戶常常有多個訂貨單,當我們單擊DBNavigator1中的向前、向後按鈕時,會移動DBGrid1中的記錄指針,而在DBGrid2中會自動顯示與DBGridl 中當前記錄相關的多條記錄,即顯示一個客戶的信息時,同時會顯示該客戶的所有訂貨單的詳細信息。 

14.3.2 一對多──多關系的數據庫應用 

前面我們介紹了基於兩個表的一對多關系的應用,下面我們介紹怎樣創建一個從三個表中浏覽數據記錄的一對多關系的應用。

例如:一個客戶也許有多張訂貨單,而每一張訂貨單中有多個訂貨項目,這樣我們在Customer.DB表和Orders.DB表之間建立一個主要──明細型關系,同時在orders.DB 表和Items.DB表之間建立一個主要──明細型關系。 

窗體中各部件的屬性如表14.3所示 

表14.3 一對多──多關系的應用中各部件的屬性

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

部 件 屬 性 屬 性 值 注 釋

──────────────────────────────────

Active True

Table1 DatabaseName DBDEMOS

TableName CUSTOMER.DB

──────────────────────────────────

DataSource1 DataSet Table1

AutoEdit False

──────────────────────────────────

Active True

DatabaseName DBDEMOS

Table2 TableName ORDERS.DB

IndexFieldNames CUSTNO

MasterField CUSTNO

MasterSource DataSource1

──────────────────────────────────

DataSource2 DataSet Table2

AutoEdit False

──────────────────────────────────

Active True

DatabaseName DBDEMOS

Table3 TableName ORDERS.DB

IndexFieldNames ORDERNO

MasterField ORDERNO

MasterSource DataSource2

──────────────────────────────────

DataSource3 DataSet Table3

AutoEdit False

──────────────────────────────────

DBGrid1 DataSource DataSource3

──────────────────────────────────

DBNavigator1 DataSource DataSource1

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

窗體中其余的部件都是TDBEdit和TLabel部件,它們用於顯示Customer.DB中的字段值和Order.DB中的字段值。在該例子中,總共連接了三個表, Customer. DB 表是主要表,Orders.DB表在窗體中起到了雙重作用,它既是Customer.Db表的明細表,同時又是Items.DB表的主要表,Items.DB表是Orders.DB表的明細表。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved