VC++中使用,安装及部署水晶报表的方法

   最近由于需要要使用水晶报表,环境是VS2008,由于网上资料参差不齐,而且大多都没有自己的亲身试验过,所以使用的道路一路坎

 

坷。不过最后还是解决了问题,放出来大家一起分享下。

 

一.水晶报表的使用

  。不过要注意的是,这两个安装运行需要至少.net 2.0以上的版本才能成功。

1、导入水晶报表使用的动态联接库:根据实际修改文件路径。

#import "C://Program Files//Business Objects//Common//2.8//bin//craxddrt.dll" no_namespace rename ("FindText", "FindMyText") rename ("EnumFontFamilies", "MyEnumFontFamilies") #include "Table/crystalreportviewer10.h"

2、定义接口指针变量

IApplicationPtr m_Application; IReportPtr m_Report; CCrystalReportViewer10 m_View;//水晶报表控件变量

3、具体实现步骤

 可以写在OnInitDialog()中,

try { HRESULT hr = m_Application .CreateInstance (__uuidof(Application) ); if (SUCCEEDED(hr )) { // 打开水晶报表 m_Report = m_Application ->OpenReport (_bstr_t(strDir)); if (m_Report == NULL ) { AfxMessageBox (_T (" 水晶报表打开失败! /n 请检查报表是否存在! /n" )); m_Application .Release (); return FALSE ; } m_View.SetReportSource(m_Report); m_View.SetDisplayBackgroundEdge(TRUE); m_View.SetDisplayToolbar (FALSE); m_View.SetEnableGroupTree(FALSE); m_View.SetEnableExportButton(TRUE); m_View.SetEnableToolbar(FALSE); m_View.SetEnableZoomControl(TRUE); m_View.Refresh (); m_View.ViewReport();//预览. GetClientRect(&m_rect); } } catch(_com_error &e) { AfxMessageBox(e.Description()); return FALSE; }

 

 至此,水晶报表就可以使用了。

二,安装部署

这一块实际上是比较麻烦的一块,我使用的是VS2008,需要在一台全新的环境下部署,中间出现过occount.cpp 926行错误,还有初始化失败之类的问题。所以在部署过程中需要注意一下几点:

1.要保证报表模板文件*.rpt在你写的程序中路径是正确的,包括部署电脑的运行环境

 

2.C:/Program Files/Microsoft SDKs/Windows/v6.0A/Bootstrapper/Packages/CrystalReports10_5下的64位版本和32位版本,自己看着需要怎么样的版本,就打包安装怎么样的版本,我这里是32位系统,所以需要的文件是CRRedist2008_x86.msi和语言包CRRedist2008_x86_chs.msi

 

3.比较重要,很多网上都没这条,而且有的也非常模糊,如果你不是用VS2008的部署工具部署的,是自己写的安装包的话,有3个文件craxddrt.dll,craxddrt_res_chs.dll,crviewer.dll,前两个在C:/Program Files/Business Objects/Common/2.8/bin/下可以找到,这个在目标机上CRRedist2008_x86.msi安装后会自动生成,不过却没有注册,所以你还需要对craxddrt.dll和crviewer.dll进行注册。

 

还有一点非常重要的是这几个文件的版本一定要相同而且要符合你需要的环境,在我使用的环境中,三个文件的版本号均是10.5.0.X,其中X可能有些差异。 

 

通过以上操作,自己写的一个安装包就可以在一个全新的任意环境中运行了。

你可能感兴趣的:(.net,report,application,vc++,报表,X86)