水晶报表

来源:网络整理 责任编辑:栏目编辑 发表时间:2013-07-01 08:55 点击:

1、水晶报表的好处
   1)利用水晶报表可以进行数值求平均值,画图等
   2)利用水晶报表可以把文件导出不同的格式(word等)
2、水晶报表的两种格式
   1)pull模式,不利用DataSet,直接从数据库中取出数据
   2) push模式,使用DataSet,利用它进行数据的加载和处理等
3. 水晶报表使用的库
   1)水晶报表的引擎(CREnging.dll),作用:合并数据,装换格式
   2)水晶报表设计器(CRDesigner.dll),作用:设计标题,插入数据等
   3)水晶报表查看控件(CRWebFormViewer.DLL)
   4)需要引入的命名空间
     using CrystalDecisions.CrystalReports.Engine;
     using CrystalDecisions.Shared;
4、Pull模式下使用水晶报表
   1)创建rpt文件
   2)拖放CrystalReportViewer
   3)绑定
5、读取水晶报表文件
   private void ReadCRV(cryatalReportViewer crv)
   {
     openFileDialog dlg=new OpenFileDialog();
     dlg.Title="打开水晶报表文件";
     dlg.Filter="水晶报表文件(*.rpt)|*.rpt|所有文件|*.*";
     if(dlg.showDialog()==DialogResult.OK)
     {
       crv.ReportSource=dlg.FileName;
     }
   }
6. B/S下读取报表的文件
    private void ReadCRV(cryatalReportViewer crv,File file)
    {
      string strName=file.PostedFile.FileName;
      if(strName.Trim()!="")
      {
        crv.ReportSource=strName
        Session["fileName"]=strName;
      }
    }
    在B/S中要防止数据源的丢失
    priavte void Page_Load(object sender,System.EventArgs e)
    {
      if(Session["fileName"]!=null)
      {
        crv.ReportSource=Session["fileName"].ToString();
      }
    }
7. 假如直接从数据库中读取数据,采用PULL模式可能出现错误(登录的用户名和密码不对)
   private void ReadCRV(CrystalReportViewer crv,CrystalReport cr)
   {
      ReportDocument reportDoc=new ReportDocument();
      reportDoc.Load(Server.MapPath(cr));//要加载的rpt文件的名字
      //解决登录的问题
      TableLogOnInfo logonInfo = new TableLogOnInfo();
      foreach(Table tb in ReportDoc.Database.Tables)
      {
        logonInfo=tb.LogOnInfo;
        logonInfo.ConnectionInfo.ServerName="(loacl)";
        logonInfo.ConnectionInfo.DatabaseName="Pubs";
        logonInfo.ConnectionInfo.UserId="sa";
        logonInfo.ConnectionInfo.Password="";
        tb.ApplyLogOnInfo(logonInfo);
      }
      crv.ReportSource=reportDoc;
   }
8. 采用Push模式,直接在数据源读取
   private void BindReport(CrystalReportViewer crv)
   {
     string strProvider="Server=(local);DataBase=pubs;uid=sa;pwd=";
     CrystalReport cr=new CrystalReport();
     DataSet ds=new DataSet();
     SqlConnection conn=new SqlConnection(strProvider);
     conn.open();
     string strSql="select * from jobs";
     SqlDataAdapter dap=new SqlDataAdapter(strSql,conn);
  

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • 用C#制作屏幕捕获程序
    • .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上
    • 遍历ArrayList易犯错误
    • C#对XML操作:一个处理XML文件的类(1)
    • .NET简谈反射(动态调用)
    • 使用C#编写LED样式时钟控件
    • DataList嵌套问题 如何删除内层子DataList的记录
    • 怎样用C#实现完整文档打印功能
    • .NET简谈自定义事务资源管理器
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1