水晶报表在VC 6.0中的使用

来源:互联网 发布:数据采集员怎么样 编辑:程序博客网 时间:2024/06/05 06:42

 水晶报表在VC 6.0中的使用

1.创建VC工程添加报表控件

  在VC集成环境中用AppWizard新建一个MFC单文档工程,其余选项都为默认。菜单中选择Project->Add To Project->Components and Controls...弹出组件、控件选择对话框,进入Registered ActiveX Controls,选中Crystal Report Viewer Control 9.lnk,单击"Insert"按钮,确认后进入类配置对话框,按默认即可。关闭控件选择对话框完成控件的添加。

2.导入水晶报表使用的动态链接库

#import "C:\Program Files\Crystal Decisions\Report Designer Component\craxdrt9.dll" no_namespace

3.按钮Button1的事件

      //水晶报表变量

       IApplicationPtr m_Application;

       IReportPtr m_Report;

      

      //水晶报表控件变量,在对话框中加入该控件

       CCrystalReportViewer9 m_CRViewer1;

 

      //实例化m_Application

       m_Application.CreateInstance (__uuidof(Application));

 

      //获取m_Report变量

      //staff.rpt为通过向导建立的报表文件,数据库采用SQL Server 2000

       m_Report =m_Application->OpenReport ("C:\\Report1.rpt");

      

      

      //设置数据库连接变量 

      //数据库服务器(local),数据库名ADOconn,用户名sa,密码annzai  

       m_Report->Database ->Tables ->Item [1]->SetLogOnInfo("(local)","ADOconn","sa","annzai");

      

      //设置检索SQL命令   

       m_Report->put_SQLQueryString ((_bstr_t)"select * from info");

      

      //不显示重复字段 

       m_Report->PutEnableSelectDistinctRecords (TRUE);

 

      //设置检索条件,采用水晶报表语法,功能同设置检索SQL命令

      //m_Report->PutRecordSelectionFormula((_bstr_t)"{info.userID}='2001'");

      //或者m_Report->PutRecordSelectionFormula=(_bstr_t)"{info.userID}='2001'";

      //m_Report->PutRecordSelectionFormula="";表示显示所有字段

      

      //设置报表标题,在设计报表时需要插入报表标题特殊字段

       m_Report->ReportTitle="学生成绩报表范例";

 

      //设置报表作者

       m_Report->PutReportAuthor("lcl");

      

      //m_Report与报表控件连接

       m_CRViewer1.SetReportSource(m_Report);

      

      //显示报表工具条

       m_CRViewer1.SetDisplayToolbar (TRUE);

      

      //不显示报表左边的分组树

       m_CRViewer1.SetDisplayGroupTree (FALSE);

      

      //不显示控件边框

       m_CRViewer1.SetDisplayBorder (FALSE);

      

      //刷新数据

       m_CRViewer1.Refresh ();

      

      //显示报表内容

       m_CRViewer1.ViewReport();

 

      //设置预览报表的缩放比率为75%

       m_CRViewer1.Zoom(75);

 

      /*******************分页显示代码*********************

      //GH1是分组名,以此分组名来进行分页显示

      m_Report->Areas->GetItem("GH1")->NewPageBefore=true;

   m_CrystalReport.Refresh();

      ****************************************************/

 

      /***************************************************

      // 按学号分组

      IDatabaseFieldDefinitionPtr NumFieldPtr=m_Report->Database->Tables->Item[1]->Fields->Item[3];

   m_Report->Areas->GetItem("GH1")->GroupConditionField=NumFieldPtr;

   m_CrystalReport.Refresh();

      ****************************************************/

 

      /**********************排序代码*********************

      // 按成绩排序

      IFieldDefinitionPtr ScoreFieldPtr=m_Report->Database->Tables->Item[1]->Fields->Item[5];

   if(m_Report->RecordSortFields->Count==0)

   {

       m_Report->RecordSortFields->Add(ScoreFieldPtr,crAscendingOrder);

   }

   else

   {

       m_Report->RecordSortFields->Item[1]->Field=ScoreFieldPtr;

   }

   m_CrystalReport.Refresh();

      ****************************************************/

 

      /****************打印代码***************************

      m_CrystalReport.SetDestination(1); ///设置输出对象是打印机

      m_CrystalReport.PrintReport(); ///打印

      ****************************************************/

 

原创粉丝点击