Visual C++ 环境下轻松实现报表处理
浙江省温岭电信局 王骏
一、准备工作
(1)安装Crystal Report软件
Crystal Report 4.6是一个免费的报表工具,可以在VB5或WINDOWS NT 4.0 BackOffice等光盘上找到,Crystal report4.6中包含了报表设计工具与报表打印控件。程序的发行只需要安装打印控件相关部分即可。
无法找到此软件的网友可以到VC知识库站点下载,网址为http://www.vckbase.com/ocx/report
(2)设计报表
我们生成一个名为sample.rpt的报表,这一过程可以参考 Crystal report自带的帮助文档,本文不作详细介绍。
本文示例代码中已经包含了此文件,您也可以直接下载已经做好的sample.rpt,点这里下载
二、创建VC工程添加报表控件
在VC集成环境中用AppWizard新建一个MFC单文档工程,其余选项都为默认。菜单中选择Project->Add To Project->Components and Controls...弹出组件、控件选择对话框,进入Registered ActiveX Controls,选中Crystal Report Control 4.6 ,单击Insert按钮,确认后进入类配置对话框,按默认即可。关闭控件选择对话框完成控件的添加。
三、实现报表的显示与打印
下面我们将在对话框中演示控件的静态创建过程,在主视图中演示控件的动态创建过程。
3.1在对话框中打印出报表
在资源编辑器中打开ID为IDD_ABOUTBOX的对话框模板,在Controls工具条中我们可以找到刚加入到工程中的Crystal Report Control 4.6控件按钮,把它插入到对话框合适的位置处。
右键单击对话框中的控件,选择属性,此时可以设置控件的许多属性。我们在Control选项页ReportFileName中输入报表文件名sample.rpt(可以加上完整路径),在Print Window选项页中设置控件的合适位置,回到对话框模板中按住Ctrl键,双击鼠标左键,弹出Add Member Variable对话框,我们将成员变量命名为m_CrystalReport,打开ClassWizard,为CAboutDlg对话框添加WM_INITDIALOG消息的处理函数:BOOL OnInitDialog(),并在函数中做如下处理
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
/////此行设置控件的父窗口,你也可以去掉该行看看运行效果/////////
m_CrystalReport.SetWindowParentHandle((long)(this->m_hWnd));
/////打印报表到窗口中/////
m_CrystalReport.PrintReport();
return TRUE;
}
至此,程序的第一部分编写完成,编译运行,打开About对话框看看效果吧!
哦!还不错!
假如您并没有显示出报表,有如下可能原因:
(1)控件没有放置在合适的位置或尺寸不对。
(2)报表文件本身存在诸如数据源不可用等错误。
控件窗口中的工具条提供了缩放、打印等功能,您也可以试试在打印机上打印出来的效果。
3.2 在程序主视窗中显示报表
打开ClassWizard增加对ID_FILE_OPEN和ID_FILE_PRINT的处理函数,代码如下
void CMyReportView::OnFilePrint()
{
if(m_CrystalReport && m_CrystalReport.GetReportFileName() != "")
{
m_CrystalReport.SetDestination(1); ///设置输出对象是打印机
m_CrystalReport.PrintReport(); ///打印
}
}
--- www.vckbase.com ---
本文地址:http://com.8s8s.com/it/it3923.htm