Crystal Report X在Visual C++ 2003/2005中的使用

原创 2006年05月27日 12:41:00

方法一:
(也可以不用namespace,看个人习惯)
#include "craxddrt.h" //VC6中引入类型库中的类,并在生成的文件中添加名为CrystalReportWrapper的namespace
craxddrt.h修改:
namespace CrystalReportWrapper
{
...//craxddrt.h内容
}
craxddrt.cpp中在#include "craxddrt.h"后添加:
using namespace CrystalReportWrapper;


 CCrystalReport10Viewer crReportViewer;
 CrystalReportWrapper::IApplication crApplication;
 CrystalReportWrapper::IReport crReport;
 CrystalReportWrapper::IDatabase crDatabase;
 CADODatabase adoDatabase;
 CADOCommand adoCommand;


 crApplication.CreateDispatch("CrystalDesignRunTime.Application.10");
 COleVariant var((short)1);
 crReport=crApplication.OpenReport("Report.rpt",var);
 crDatabase=crReport.GetDatabase();

 adoDatabase.ConnectAccess("soft.mdb");
 adoCommand.SetDatabase(&adoDatabase);
 adoCommand.SetText("SoftClass");
 adoCommand.SetType(adCmdTable);

 VARIANT var3;
 var3.vt=VT_DISPATCH;
 var3.punkVal=adoDatabase.m_pConnection;
 VARIANT var4;
 var4.vt=VT_DISPATCH;
 var4.punkVal=adoCommand.GetCommand();
 crDatabase.AddADOCommand(var3,var4);
 crReportViewer.Create(NULL,WS_CHILD | WS_VISIBLE, CRect(0,0,0,0),this,1);
 crReportViewer.put_ReportSource(crReport);
 crReportViewer.Refresh();
 crReportViewer.ViewReport();
 
方法二:

(注释为不带namespace)
#import "C:/Program Files/Common Files/Business Objects/2.7/Bin/craxddrt.dll"
//#import "C:/Program Files/Common Files/Business Objects/2.7/Bin/craxddrt.dll" no_namespace

 CCrystalReport10Viewer crReportViewer;
 CRAXDDRT::IApplicationPtr crApplication;
 CRAXDDRT::IReportPtr crReport;
 CRAXDDRT::IDatabasePtr crDatabase;
 //IApplicationPtr crApplication;
 //IReportPtr crReport;
 //IDatabasePtr crDatabase;
 CADODatabase adoDatabase;
 CADOCommand adoCommand;
 
 HRESULT hr = crApplication.CreateInstance(__uuidof(CRAXDDRT::Application));
 //HRESULT hr = crApplication.CreateInstance(__uuidof(Application));
 if(FAILED(hr))
 {
  MessageBox(_T("水晶报表初始化出错!"));
  return   -1;
 }
 COleVariant var((short)1);
 crReport=crApplication->OpenReport("Report.rpt",var);
 crDatabase=crReport->GetDatabase();

 adoDatabase.ConnectAccess("soft.mdb");
 adoCommand.SetDatabase(&adoDatabase);
 adoCommand.SetText("SoftClass");
 adoCommand.SetType(adCmdTable);

 VARIANT var3;
 var3.vt=VT_DISPATCH;
 var3.punkVal=adoDatabase.m_pConnection;
 VARIANT var4;
 var4.vt=VT_DISPATCH;
 var4.punkVal=adoCommand.GetCommand();
 crDatabase->AddADOCommand(var3,var4);
 crReportViewer.Create(NULL,WS_CHILD | WS_VISIBLE, CRect(0,0,0,0),this,1);
 crReportViewer.put_ReportSource(crReport);
 crReportViewer.Refresh();
 crReportViewer.ViewReport();
 
方法三:
//这几个头文件由VC7.1添加类型库中的类产生,添加所需要的类
#include "CrystalReport10Application.h"
#include "CrystalReport10Report.h"
#include "CrystalReport10Database.h"
#include "CrystalReport10Sections.h"
#include "CrystalReport10Designer.h"


 CCrystalReport10Viewer crReportViewer;
 CCrystalReport10Application crApplication;
 CCrystalReport10Report crReport;
 CCrystalReport10Database crDatabase;
 CADOCommand adoCommand;

 crApplication.CreateDispatch("CrystalDesignRunTime.Application.10");
 COleVariant var((short)1);
 crReport=crApplication.OpenReport("Report.rpt",var);
 crReport.put_EnableAsyncQuery(TRUE);
 crDatabase=crReport.get_Database();
 adoCommand.SetDatabase(&theApp.m_pConnection);
 adoCommand.SetText("SoftClass");
 adoCommand.SetType(adCmdTable);
 VARIANT var3;
 var3.vt=VT_DISPATCH;
 var3.punkVal=theApp.m_pConnection.m_pConnection;
 VARIANT var4;
 var4.vt=VT_DISPATCH;
 var4.punkVal=adoCommand.GetCommand();
 //crDatabase.AddADOCommand(var3,var4);

 crReportViewer.Create(NULL,WS_CHILD | WS_VISIBLE, CRect(0,0,0,0),this,1);
 crReportViewer.put_ReportSource(crReport);
 crReportViewer.ViewReport();

相关文章推荐

从命令提示窗口使用 Visual C++ Toolkit 2003

从命令提示窗口使用 Visual C++ Toolkit 2003 发布日期 : 12/20/2004 | 更新日期 : 12/20/2004 Brian Johnson MSDN Visual...
  • aasmfox
  • aasmfox
  • 2016年08月23日 11:11
  • 628

【Visual C++】游戏开发笔记四十四 浅墨DirectX教程十二 网格模型和X文件使用面面观

在本篇文章中,我们一起详细探索了Direct3D网格相关的知识,对当前两款主流的三维建模软件(3DS Max和Maya)进行了介绍,了解了如何从3DS Max 中导出X文件,以及如何从X文件加载三...

Microsoft Visual C++ 2005 SP1 x86

  • 2015年01月21日 12:27
  • 2.55MB
  • 下载

使用visual c++2005编程第一章

  • 2011年07月20日 20:37
  • 3.47MB
  • 下载

Visual C++ Excel 2000/2003编程

在开发软件时,经常要将数据输出到Excel 2000中,在Excel 2000中对该数据进行进一步地格式化处理或进行计算处理。在Visual Basic中处理起来较简单,Excel 2000的VB编程...
  • xlg1128
  • xlg1128
  • 2011年05月08日 12:22
  • 1240

水晶报表(Crystal Report)通过Visual Studio 2010的WPF实现

1,前言。      本文中采用的工具介绍: VS2010旗舰版,CrystalReport版本为13.0 。实现的方式是做一个简单demo,让初学者能够初步了解水晶报表的使用。     ...

Visual C++ 2005的现代语言特性

Visual C++ 2005的现代语言特性     本文讨论: .NET C++/CLI语法 配置向导优化(PGO) MSIL优化 OpenMP支持 增强的缓冲区安全检查    ...
  • S_52588
  • S_52588
  • 2012年08月03日 11:57
  • 1069
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Crystal Report X在Visual C++ 2003/2005中的使用
举报原因:
原因补充:

(最多只允许输入30个字)