C Builder下数据库报表Master/Detail关系功能…
2008-02-23 05:35:03来源:互联网 阅读 ()
| |||
TTable控件相关的基本属性简介如下:DatabaseName:配置要打开的数据库别名或数据库目录路径;TableName:配置所要关联打开的数据库表文档名;Active:配置为true时数据库表文档自动打开,否则需要用代码在程式中打开数据表。TQuery控件的基本属性:DatabaseName:配置要打开的数据库别名或数据库目录路径;SQL:Tstring类型,所要执行的SQL数据查询语句,能够直接在对象观察器(Object Inspector)中双击打开SQL属性进行编辑,Active:配置为true时自动打开查询数据库表文档,否则需要用代码在程式中打开查询数据表。两者和M/D相关的属性将在下边结合示例加以解释。
一、TTable控件关联主、从表实现Master/Detail关系报表
Master/Detail关系最简单的实现方法是用两个TTable控件分别和主表及从表关联。分别起名为TableMaster和TableDetail,配置TableMaster的DatabaseName为BCDEMOS,TableName为Customer.db;配置TableMaster的DatabaseName为BCDEMOS,TableName为Orders.db。如此即可分别关联上主从数据表。
因为要浏览显示数据表记录内容,所以需要在窗体上放置两个TDBGrid类型的控件DBGridMaster、DBGridDetail以显示M/D关系主从表的相应记录内容;放置两个TDataSource类型的控件DataSourceMaster、DataSourceDetail以指明数据源。配置DataSourceMaster的DataSet属性为TableMaster,DataSourceDetail的DataSet属性为TableDetail,分别指向主从数据表。配置DBGridMaster的DataSource属性为DataSourceMaster,DBGridDetail的DataSource属性为DataSourceDetail。
实现Master/Detail关系的关键在于从表关联控件TableDetail的MasterSource属性和MasterFields属性:前者指向了一个TDataSource控件,该控件DataSet属性应该指向Master/Detail关系的Master表;后者则指定主表和从表的关联字段,需要双击打开"Field Link Designer"对话框进行配置工作,选择从表和主表的相应关联字段添加到"Joined Fields"(关联字段)中即可。本例中以主表(Customer.db客户信息)及从表(Orders.db定单信息)的CustNo(客户号)字段为关联字段,故配置TableDetail的MasterSource属性为DataSourceMaster,指向主表;MasterFields属性为CustNo关联字段。
假如TableMaster和TableDetail的Active属性为false,则需双击窗体Form1空白处,添加以下两句黑体字代码到TForm1::FormCreate()事件句柄中去:
TableMaster->Active = true;TableDetail->Active = true;
运行程式,即可在DBGridMaster、DBGridDetail中浏览到Master/Detail关系主从表的相关数据记录。
二、TQuery控件实现Master/Detail关系报表
TQuery控件和TTable控件之间的主要差别在于TQuery控件通过SQL属性所赋的SQL指令语句来动态访问数据库,TTable控件则是静态和数据表相关联。TQuery控件能够同时对多个数据库表进行关联访问,TTable控件则只能关联查询单一的数据库表。和TTable控件相比,TQuery控件因为SQL语言的灵活性和相对复杂性,更适合应用在多层、大型、网络数据库系统中。
2.1、
TTable控件关联主表、TQuery控件关联从表实现Master/Detail关系报表
窗体Form1上删去TableDetail控件,放置TQuery类型控件QueryDetail,修改DataSourceDetail的DataSet属性为QueryDetail,其余控件属性不变。TQuery控件能够对访问范围设定限制条件,依此即可实现M/D关系的功能。设定QueryDetail的DatabaseName为BCDEMOS,SQL属性为:"Select OrderNo,CustNo,SaleDate,EmpNo From Orders Where Orders.CustNo=:CustNo"。
即可取出从表中任何CustNo字段和主表CustNo字段相同的记录集并且只显示四个限定的字段信息实现Master/Detail关系,另一关键在于从表关联控件QueryDetail的DataSource属性和Params属性:前者指向了一个TDataSource控件,该控件DataSet属性应该指明SQL指令参数的数据来源;后者则设定SQL指令中的参数,需要双击打开"QueryDetail Parameters"对话框进行配置工作,选择相应的SQL指令中参数配置正确即可。本例中以主表(Customer.db客户信息)的CustNo(客户号)字段作为SQL指令的参数,故配置QueryDetail的DataSource属性为DataSourceMaster,指向主表;Params属性为CustNo关联字段作参数。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: 在未来时态下研发C 程式
下一篇: 深度探索C 对象模型(10)
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash