14.3 創(chuàng)建主要──明細(xì)數(shù)據(jù)庫(kù)應(yīng)用
我們前面在介紹的基于單個(gè)數(shù)據(jù)庫(kù)表的數(shù)據(jù)庫(kù)應(yīng)用程序只能對(duì)數(shù)據(jù)庫(kù)表進(jìn)行簡(jiǎn)單的管理,大多數(shù)只用來(lái)瀏覽單個(gè)數(shù)據(jù)庫(kù)表中的記錄信息,如果我們想瀏覽多個(gè)相關(guān)的數(shù)據(jù)庫(kù)表中的記錄信息,就必須要?jiǎng)?chuàng)建主要──明細(xì)型數(shù)據(jù)庫(kù)應(yīng)用程序。
在主要──明細(xì)型數(shù)據(jù)庫(kù)應(yīng)用程序中,一個(gè)數(shù)據(jù)庫(kù)表作為主要表,其中存放著綜合信息,其他的數(shù)據(jù)庫(kù)表和主要數(shù)據(jù)庫(kù)表相關(guān)聯(lián),它們當(dāng)中存放著更詳細(xì)的信息。例如,當(dāng)數(shù)據(jù)庫(kù)表Customer.DB作為主表,它包含著客戶的綜合信息如編號(hào)、姓名、所在公司的名稱等等。而數(shù)據(jù)庫(kù)表Orders.DB中包含著每個(gè)客戶的訂貨單的詳細(xì)信息,如訂單號(hào)、發(fā)貨日期、起運(yùn)日期、發(fā)貨目的地等信息,這樣當(dāng)在Customer.DB表中查看某一位客戶時(shí),利用其中的字段CustNo與Orders.DB表發(fā)生聯(lián)系,自動(dòng)地從Orders.DB表中檢索出這位客戶曾經(jīng)發(fā)來(lái)的所有訂貨單的詳細(xì)信息。主要──明細(xì)型數(shù)據(jù)庫(kù)體現(xiàn)了關(guān)系數(shù)據(jù)庫(kù)的特點(diǎn),即獨(dú)立的數(shù)據(jù)庫(kù)表之間基于它們共同的字段而發(fā)生聯(lián)系。在這里Customer.DB和Orders.DB擁有一個(gè)共同的字段CustNo。
14.3.1 一對(duì)多關(guān)系的主要──明細(xì)型數(shù)據(jù)庫(kù)應(yīng)用程序
主要和明細(xì)數(shù)據(jù)庫(kù)表之間存在一對(duì)多的關(guān)系,意思是說(shuō)對(duì)于主表中的一條記錄,在明細(xì)表中有多條記錄與之對(duì)應(yīng)。例如,創(chuàng)建一個(gè)主要──明細(xì)型數(shù)據(jù)庫(kù)應(yīng)用程序,其包括兩個(gè)表Customer.DB和Orders.DB,它們分別作為主表和明細(xì)表,創(chuàng)建好的應(yīng)用如圖14.5所示,窗體中各部件的屬性設(shè)置
表14.2 主要──明細(xì)型數(shù)據(jù)庫(kù)應(yīng)用中各部件的屬性
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
部 件 屬 性 屬 性 值 注 釋
──────────────────────────────────
Table1 Active True
(主表) DatabaseName DBDEMOS
TableName CUSTOMER.DB
──────────────────────────────────
DataSource1 DataSet Table1
AutoEdit False
──────────────────────────────────
Table2 Active True
(明細(xì)表) DatabaseName DBDEMOS
TableName ORDERS.DB
IndexFieldNames CUSTNO 指定字段CUSTNO作為
Table2中的索引字段
MasterField CUSTNO 指定與主表發(fā)生聯(lián)系
的字段
MasterSource DataSource1 說(shuō)明與主表相連接的
數(shù)據(jù)源即DataSource
──────────────────────────────────
DataSource2 DataSet Table2
AutoEdit False
──────────────────────────────────
DBGrid1 DataSource DataSource1
(對(duì)應(yīng)主表)
──────────────────────────────────
DBGrid2 DataSource DataSource2
(對(duì)應(yīng)明細(xì)表)
TableName ORDERS.DB
──────────────────────────────────
DBNavigator1 DataSource DataSource1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
一對(duì)多關(guān)系是非常普遍的關(guān)系。即便是簡(jiǎn)單的名字/ 地址數(shù)據(jù)庫(kù)都有一對(duì)多的關(guān)系,因?yàn)橐粋(gè)人可能不止一個(gè)地址:家庭地址、工作地址、還可能有別墅地址。在本例中,公司的一個(gè)客戶常常有多個(gè)訂貨單,當(dāng)我們單擊DBNavigator1中的向前、向后按鈕時(shí),會(huì)移動(dòng)DBGrid1中的記錄指針,而在DBGrid2中會(huì)自動(dòng)顯示與DBGridl 中當(dāng)前記錄相關(guān)的多條記錄,即顯示一個(gè)客戶的信息時(shí),同時(shí)會(huì)顯示該客戶的所有訂貨單的詳細(xì)信息。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |