您现在的位置: 范文先生网 >> 理工论文 >> 计算机信息技术 >> 正文

Visual Basic6.0下数据库报表制作技巧

时间:2007-5-25栏目:计算机信息技术

  在运用VisualBasic编制MIS系统前台程序时,往往会需要处理大量的报表。而这些报表的制作,在VisualBasic6.0出现之前,要么需要使用Print语句编写大量程序代码,要么选择诸如Seagate等第三方公司所提供的诸如DataReport等软件,而一旦真正使用这些没有本地化的软件或控件,程序员往往会遇到各种各样令人头疼不已的问题棗或者是中文字体显示有所限制,或者是报表数据无法动态及时更新,或者所提供的数据处理或统计功能并不怎么适用。所幸的是,MicroSoft推出的VisualBasic6.0专业版和企业版中包含一个全新的组件棗DataReportDesigner(DRD),运用这个报表设计器,我们可以将报表与数据环境对象或者是ActiveX数据对象直接关联,使得VisualBasic6.0下的报表设计效率得到空前提高。下面,就本人在运用DRD进行报表程序设计所获得的心得与大家共同探讨一下。
  
  
  
  
  
  一将DRD与DED(DataEnviromentDesigner)结合。
  
  
  
  
  这是运用DRD解决VisualBasic6.0报表处理最常用的一种方法,在Samples中有一个名为Prjnwind工程就是专门介绍如何使用结合使用DRD和DED的例子程序。我们可以通过选择新工程中的DataProject类型就可以自动增加一个空的DED和DRD实例到Projectexplorer中,打开一个空DataReport实例将禁止工具栏中的General窗体并在工具栏底添加一个DataReort按钮。如下图:
  
  
  
  可以看到,DataReport的专用控件棗RptLabel、RptTextBox、RptImage、RptLine、RptShape和RptFunction。除了RptFunction,每个Rpt控件都可以在固有VisualBasic工具面板中找到对应的控件。当然,控件所代表的功能并不完全一样,例如RptTextBox在报表运行实例中完全没有输入焦点,实际上,它实现的是对报表(DataReport)的细节区(Detail)报表数据内容的具体显示。我们可以通过DED和DRD创建一个报表,具体操作如下:
  
  
  
  打开一个新的数据工程项目。
  
  
  在DataEnviroment1中设定其Connection1属性,连接到某个数据源。
  
  
  在DataEnviroment1中添加一个新命令棗Command1,设定好其属性。
  
  
  
  
  选择DataReport1,在页标头区加入一个Rptlabel控件,输入报表标题。
  5.选择DataReport1,在细节区加入一个RptTextBox控件,并将DataReport1的DataSource属性设为DataEnvironment1,DataReport1的Command属性设定为Command1,RptTextBox的Command属性设定为Command1,DataField属性设定为Author。
  
  
  
  
  
  增加一个Command控件,在Click事件中加入如下代码:
  PrivateSubCommand1_Click()
  
  Dimrpt1AsNewDataReport1
  
  rpt1.Show1
  
  EndSub
  
  
  运行该程序,点击Command按钮将显示报表。
  
  
  实际应用中,我们可以将DataEnviroment与分层Recordset绑定,从而实现更加复杂和具有统计功能的数据报表,分层Recordset在许多VisualBasic参考书中有述,大家可以自行查阅。
  
  
  
  
  
  
  
  二将DRD直接与ADO绑定。
  
  
  
  这种方法是实现报表数据及时动态显示一种最为有效的方法。很多的时候,我们要求不退出应用程序而要求报表能显示数据的变动。这时,采用上述的方法或其它第三方软件都是无法做到的。这时,用print语句编写大量代码是一种令大多数VB程序员烦恼的事情,但是,我们可以通过将DRD绑定到某个ADO数据对象来得以实现。
  
  
  
  
  建立一个新的标准工程。
  添加一个DataReport实例。
  
  
  添加一个ADO数据控件并实例化。
  
  
  设定ADO数据控件的属性,将其连接到某个数据库。
  
  
  添加一个DataGrid控件并实例化,绑定到所选择数据库的某个表或SQL查询结果。(这一步非常关键,因为如果不将ADO数据源绑定到该DataGrid的话,数据的更新很难马上响应。)
  
  
  增加一个按钮并在Click事件中加入如下代码:
  PrivateSubCommand1_Click()
  
  Dimrpt1AsNewDataReport1
  
  Setrpt1.DataSource=Adodc1
  
  rpt1.Show1
  
  EndSub
  
  在DataReport1的细节区增加两个RptTextBox,并分别将其DataField属性设定为Author与Au_ID。
  
  
  运行程序,当改变DataGrid1控件中的Author值时,点击Command1按钮所显示的报表中的Author字段的值也会相应改变。
  
  
  
  
  
  
  实际上,在这里我们是将需要显示的报表内容强行与某个Datagrid控件绑定,从而实现数据的及时更新。
  
  由上面的操作可以看到,使用VisualBasic6.0所含的DRD组件,使得报表的制作处理变得轻松自如,当然,目前DRD中仍然有不尽人意的地方棗属性和事件太少,控制不够灵活,甚至还存在有一些Bugs,但是,我们相信,随着DRD的不断成熟,它的使用将更为方便,功能也将更加强大。
  
  (附言:请作者将姓名、单位、通信地址及有关信息告知编辑部)
  
  

下页更精彩:1 2 3 4 下一页