将水晶报表嵌入到自己的应用程序中_第1页
将水晶报表嵌入到自己的应用程序中_第2页
将水晶报表嵌入到自己的应用程序中_第3页
将水晶报表嵌入到自己的应用程序中_第4页
将水晶报表嵌入到自己的应用程序中_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、如何将水晶报表嵌入到自己的应用程序中白锐鸽白延平摘要本文根据项目需要,以MicrosoftVisualStudio2005为开发平台,应用控件CrystalActivexReportsViewerControl10.0,详细介绍了如何在自己的应用程序中嵌入水晶报表,以动态地分析和显示数据。关键词水晶报表控件应用程序HowtoEmbedCrystalReportsIntoYourOwnProgramBaiRuigeBaiYanpingAbstract:Inaccordancewiththeprojectrequirements,takingMicrosoftVisualStudio2005aso

2、urdeveloppanel,andapplyingthecontrolnamedCrystalActiveXReportsViewerControl10.0,thisarticlefullyintroduceshowtoembedCrystalReportsintoyourownprogram,andthenyoucananalyzeanddisplayyourowndatadynamically.Keywords:CrystalReportsControlProgram将CrystalReports(水晶报表)用于处理数据库,从而可以帮助用户分析和解释重要信息。使用CrystalRepor

3、ts既可以方便地创建简单报表,同时也提供了创建复杂或专用的报表所需的整套工具。通过将CrystalReports的报表处理功能嵌入到自己的数据库应用程序中,Windows应用程序和Web开发人员可以节省开发时间并满足用户的需求。CrystalReports支持大多数流行的开发语言,可以方便地在任何应用程序中添加报表。本文主要结合项目“陕西省公路交通信息系统”开发过程中水晶报表的嵌入,探讨将水晶报表根据需要动态的嵌入到具体的应用程序中的方法,希望对以后的开发者有所启示,有不成熟之处希望和开发者一起探讨。1报表模板设计将报表嵌入到应用程序中,有两种实现方法:一是在程序运行时,用户根据实际需要设计报

4、表的格式、内容等,这需要在报表模块中包含报表设计器;二是在程序发布前,程序员根据需要定制好报表模板,在程序运行时,用户只能对报表进行浏览、打印等操作,无法对报表的格式进行修改。由于项目需要,我们采用第二种方法,即在程序发布前定制报表模板,程序运行时,数据库动态生成数据,套用报表模板,自动生成所需报表。具体流程如下:图1报表模块操作流程图因此,要将报表模板嵌入到应用程序中之前,需要做的工作有:1)设计好报表模板,即制作好报表样式。2)应用程序中,写好动态更新数据库表的代码。3)将报表模板与具体数据库中表的具体字段连接,生成符合要求的*.rpt文件。2报表模块的实现使用水晶报表之前,需要安装Cry

5、stalReports软件。本系统使用CrystalReports10的水晶报表控件。CrystalReports10提供了EmbeddableCrystalReportsDesignerControl10.0控件和CrystalActivexReportsViewerControl10.0控件。由于本系统采用程序发布前定制报表模板,所以只需要添加CrystalActiveXReportsViewerControl10.0控件即可。添加水晶报表控件本系统的开发环境为MicrosoftVisualStudio2005中的VisualC+,具体添加水晶报表控件的步骤如下:新建一个MFC应用程序,具

6、体命名根据项目需要。添加报表控件开发所需文件,本系统由于只添加了CrystalActivexReportsViewerControl10.0控件,所以其对应需要添加的文件有:crvtrackcursorinfo.h、crvtrackcursorinfo.cpp、crystalreportviewer10.h、crystalreportviewerlO.cpp。这4个文件可以在水晶报表的官方网站下载。在项目资源工具箱单击右键,在弹出的菜单中选择“选择项”子菜单,这时弹出如下图2-1的对话框。图2选择工具箱项和在图2所示相同,在COM组件标签页“CrystalActiveXReportViewer

7、Control10.0”项前面的选择框中打钩,再单击“确定”按钮,将该控件添加到工具箱中。应用程序界面设计将工具箱中的控件添加到应用程序中,具体步骤如下:在项目资源中新添加一个对话框,举例修改其ID为IDD_CRYSTAL。同时将工具箱中的CrystalActiveXReportViewerControl10.0添加到该对话框,并修改其ID为ID_VIEWER.为该对话框添加类CCrystalDlg,并为该控件添加变量:CcrystalReportViewer10m_ReportViewer;水晶报表控件的使用水晶报表在VC+中的使用步骤如下:在项目的stdafx.h中添加水晶报表使用的动态链

8、接库,根据实际情况修改文件路径。举例如下:#import“C:ProgramFilesCommonFilesCrystalDecisions2.5bincraxdrt.dll”no_namespace在CCrystalDlg类中添加水晶报表接口指针变量m_Application和m_Report,定义报表路径变量m_ReportPath,数据库表名变量m_TableName,数据库记录智能指针Rps。代码如下:IApplicationPtrm_Application;IReportPtrm_Report;水晶报表接口指针变量_bstr_tm_ReportPath;报表路径变量CStringm_

9、TableName;/数据库表名变量_RecordsetPtrRps;数据库记录智能指针添加CCrystalDlg类的重载函数OnlnitDialogO,该函数用于初始化报表控件,代码如下:BOOLCCrystalDlg:OnInitDialogOCDialog:OnInitDialogO;m_Application.Createlnstance(_uuidof(Application);Trym_Report二m_Application0penReport(m_ReportPath);打开扌艮表catch(_com_error&e)-_bstr_tstr=e.Description();TR

10、ACE(char*)str);以下代码实现将报表模板与其所连接的数据库表单的动态连接bstr_tSQLA=Select*From;SQLA=SQLA+m_TableName+;选择具体数据库表Rps=DBConnection.GetRecordSet(SQLA);/与数据库连接,获得记录指针m_Report-Database-SetDataSource(Rps.GetinterfacePtr();/动态设置数据源m_ReportViewer.SetReportSource(m_Report);报表浏览控件设置报表m_ReportViewer.SetDisplayGroupTree(FALSE)

11、;/设置不显示分组m_ReportViewer.SetEnableGroupTree(FALSE);报表浏览控件不可分组m_ReportViewer.ViewReport();浏览扌艮表returnTRUE;该段代码的主题思想可分为3部分:第一部分:获得报表模板。即水晶报表智能指针m_Report通过报表路径变量m_ReportPath获得初值。第二部分:实现报表模板与数据库表单的动态连接。一般情况下,使用CrystalReport10所连接的数据库表单是物理的绝对的连接,要修改其路径只能通过手动实现。而该部分首先使用数据库智能指针Rps获得指向表单的记录指针,然后修改水晶报表m_Report

12、的数据源的位置,从而实现报表模板和数据源的动态连接。第三部分:调用水晶报表显示控件变量显示报表,同时修改报表对象的部分属性,如不可分组,分组不显示等。其中报表路径变量m_ReportPath和该报表模板所连接数据库表名m_TableName的初始化可通过以下函数实现:voidCCrystalDlg:SetReportPath(CStringPath,CStringTableName)m_ReportPath=Path;m_TableName=TableName;对于报表的显示,还需要重载OnShowWindow()函数来及时刷新报表,具体代码如下:voidCCrystalDlg:OnShowW

13、indow(BOOLbShow,UINTnStatus)CDialog:OnShowWindow(bShow,nStatus);m_ReportViewer.Zoom(l);初始状态现实100%大小的报表m_ReportViewer.RefreshEx(TRUE);初始状态刷新报表m_ReportViewer.ShowWindow(SW_SHOW);显示报表当要创建具体报表时,即调用类CCrystalDlg的具体代码如下:CCrystalTableLineTable;LineTable.SetReportPath(_T(E:TrafficData陕西省公路网情况一览表.rpt),_T(gl_LXTable);设置报表路径和所连接的数据库表名以下代码为:当关闭报表时,删除数据库中该表中的所有数据if(LineTable.DoModal()=IDCANCEL)bstr_tSQL=Delete*Fromgl_LXTable;DBConnection.ExecuteSQL(SQL);3总结至此,就将CrystalReports的报表处理功能嵌入到自己的数据库应用程序中,具体在整个程序框架中的摆放位置,就根据需要灵活调用了。本文只是根据项目需要详细介绍了水晶报表的CrystalActiveXReportViewer控件的显示,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论