水晶报表在VC6.0应用

鉴于许多访客让我发相关水晶报表的代码,在此,我写一篇关于水晶报表在VC6.0应用的文章。
    首先,必须安装水晶报表软件,建议安装Seagate Crystal Reports 8.0。虽然该版本在目前不是最新,但比较稳定,控件也容易使用。安装该软件后,水晶报表控件就会添加到VC6.0的控件库。
    将控件库中的"Crystal Report Viewer"控件加入到当前工程。
    现在设计一对话框ReportDlg (以下红色部分表示根据具体应用需要变化的部分,蓝色表示基本不变的部分)
    在ReportDlg 的头文件中加入如下代码:(该代码是固定的,本人也不怎么理解)
#include "comdef.h"
//#include "craxddrt.h"
#import "craxddrt.tlb" no_namespace
const CLSID CLSID_Application = {0xb4741fd0,0x45a6,0x11d1,{0xab,0xec,0x00,0xa0,0xc9,0x27,0x4b,0x91}};
const IID IID_IApplication = {0x0bac5cf2,0x44c9,0x11d1,{0xab,0xec,0x00,0xa0,0xc9,0x27,0x4b,0x91}};
const CLSID CLSID_ReportObjects = {0xb4741e60,0x45a6,0x11d1,{0xab,0xec,0x00,0xa0,0xc9,0x27,0x4b,0x91}};
const IID IID_IReportObjects = {0x0bac59b2,0x44c9,0x11d1,{0xab,0xec,0x00,0xa0,0xc9,0x27,0x4b,0x91}};
    对话框中加入控件"Crystal Report Viewer"
    自动关联变量 CCrystalReportViewer3    m_Report;
    头文件中加入下面成员变量
    IApplicationPtr m_Application;    
    IReportPtr        m_ReportPtr;
    CString m_ReportName; //报表名称
    CString m_ReportFormula;   //检索条件
    在OnInitDialog事件中加入代码:
    BOOL CPrintDlg::OnInitDialog()
   {
    CDialog::OnInitDialog();
   
    // TODO: Add extra initialization here
    if(m_Application == NULL)
    {       
        HRESULT hr = CoCreateInstance(CLSID_Application, NULL, CLSCTX_INPROC_SERVER , IID_IApplication, (void **) &m_Application);
    }
    m_ReportPtr=m_Application->OpenReport(_bstr_t(m_ReportName;));
   
      
    if(m_ReportPtr == NULL)
    {
        MessageBox("打开报表失败!","提示");
        return false;
    }
       
    _bstr_t varDB,varPWD,varUser,varServer,varDSN;
    varDSN="Test";    //数据源名 (水晶报表采用数据源,使得可以访问远程数据库的数据)
    varDB="Test";     //数据库名称
    varPWD="Test";    //数据库密码
    varUser="Test";   //数据库用户
    varServer="Test";   //数据库服务器名称 (IP)
   
    m_ReportPtr->Database->LogOnServer("p2sodbc.dll",varDSN,varDB,varUser,varPWD);
    m_ReportPtr->put_SQLQueryString(_bstr_t(m_ReportFormula));
    //显示报表
    m_Report.SetReportSource(m_ReportPtr);
    m_Report.SetEnableGroupTree(FALSE);
    m_Report.SetDisplayBackgroundEdge(FALSE);
    m_Report.SetDisplayBorder(FALSE);
    m_Report.SetEnableSearchControl(FALSE);
    m_Report.SetEnableRefreshButton(TRUE);
    m_Report.ViewReport();
    m_Report.Refresh();
    return TRUE; // return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX Property Pages should return FALSE
}
//添加点击打印按钮响应函数OnPrintButtonClickedPrjReport
void CPrintDlg::OnPrintButtonClickedPrjReport(BOOL FAR* UseDefault)
{
    // TODO: Add your control notification handler code here
    UseDefault = FALSE;
    m_ReportPtr->PrinterSetup(0);
}
//使用方法:
CPrintDlg dlg;
dlg.m_ReportName="D:\\test.rpt";    //报告路径
dlg.m_ReportFormula="select * from test";   //报告检索条件
dlg.DoModal();    //显示报表
最后,是关于水晶报表生成安装文件打包的问题了。如果没有添加相应的DLL文件,则程序放在没有安装水晶报表的机子上就无法运行。
所需要打包的文件有:

p2sodbc.dll

p2lodbc.dll

crviewer.dll

craxddt.dll

craxdrt.dll

Crystl32.OCX

p2ssql.dll

 

 在8与8.5   中,你要注册以下dll  
  craxddrt.dll   如果报表中有动态创建字段等功能。需要它。  
  craxddt.dll   如果报表中有动态创建字段等功能。需要它。  
  craxdrt.dll   如果报表中有动态创建字段等功能。需要它。  
  crdesignerctrl.dll   报表设计器控件  
  crystalwizard.dll   报表向导  
  crviewer.dll   具有报表浏览器。  
  p2smon.dll   数据库驱动  

 

以下是vb6   中   crystal   report9   安装需要的文件:(  
  msvbvm60.dll  
  oleaut32.dll  
  olepro32.dll  
  asycfilt.dll  
  comcat.dll  
  vb6chs.dll  
  crviewer9.dll  
  craxdrt9.dll  
  unicows.dll  
  msvcrt.dll  
  crtowords_en.dll  
  ufmanager.dll  
  u2l2000.dll  
  u2lcom.dll  
  u2ldts.dll  
  u2lexch.dll  
  u2lfinra.dll  
  u252000.dll  
  u25dts.dll  
  u25samp1.dll  
  sscsdk80.dll  
  implode.dll  
  crqe.dll  
  crdb_ado.dll  
  crdb_dao.dll  
  crdb_odbc.dll  
  querybuilder.dll  
  exlate32.dll  
  crxf_rtf.dll  
  exportmodeller.dll  
  crtslv.dll  
  crxf_wordw.dll  
  crxf_xls.dll  
  crxf_pdf.dll  
  u2fcr.dll  
  u2fsepv.dll  
  u2ftext.dll  
  u2fxml.dll  
  u2ddisk.dll  
  u2dpost.dll  
  u2dapp.dll  
  keycode.dll  
  craxddrt9.dll  
  sscrc.dll  
  sscdlg.dll  
  cranalyzer.dll  
  p2ixbse.dll  
  crdb_dictionary.dll  
  filedialog.dll  
  sacommoncontrols.dll  
  vb6stkit.dll   )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值