还有一些属性可以用来定制TDBNavigator部件的外观和性能,有关这方面的详细信息请参看联机帮助。
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
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




