中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 临时文章
[原创]水晶报表数据填充(一种推模式,两种拉模式)类库
作者:未知 时间:2005-02-06 12:12 出处:Blog 责编:chinaitpower
              摘要:暂无

#region 数据填充水晶报表函数集合

  /// <summary>
  /// 使用Engine.Database填充CrystalReport,为oleDB,odbc使用,此例子为sqlserver,拉模式
  /// </summary>
  /// <param name="SeverName">服务器名称</param>
  /// <param name="DatabaseName">数据库名称</param>
  /// <param name="UserID">用户id</param>
  /// <param name="Password">用户密码</param>
  /// <param name="sender">水晶报表CrystalReport对象</param>
  /*注意:使用Engine.Database填充必须先在水晶报表中设置相关数据字段*/
  public void cryDBFill(string SeverName,string DatabaseName,string UserID,string  Password,ReportClass sender)
  {
   TableLogOnInfo crTableLogOnInfo = new TableLogOnInfo();
   ConnectionInfo crConnectionInfo = new ConnectionInfo();
   CrystalDecisions.CrystalReports.Engine.Database crDatabase;
   CrystalDecisions.CrystalReports.Engine.Tables crTables;
   //   CrystalDecisions.CrystalReports.Engine.Table crTable;
   //对象定义
   crConnectionInfo.ServerName = SeverName;
   crConnectionInfo.DatabaseName = DatabaseName;
   crConnectionInfo.UserID = UserID;
   crConnectionInfo.Password = Password;
   crDatabase = sender.Database;
   crTables = crDatabase.Tables;
   //水晶报表与数据库连接
   foreach(CrystalDecisions.CrystalReports.Engine.Table crTable in crTables)
   {
    crTableLogOnInfo = crTable.LogOnInfo;
    crTableLogOnInfo.ConnectionInfo = crConnectionInfo;
    crTable.ApplyLogOnInfo(crTableLogOnInfo);
   }
   //循环表并进行填充
  }
  /// <summary>
  /// 使用dataset填充CrystalReport和ReportDocument,为sqlserver专用,推模式,可以多次填充使用不同的表名在一个数据集中
  /// </summary>
  /// <param name="sqlText">数据库查询字段</param>
  /// <param name="cnString">数据库连接字段</param>
  /// <param name="DataTableName">虚拟数据集名称</param>
  public void crySetFill(string sqlText,string cnString,string DataTableName)
  {
   //          建立数据集合(局部变量)
   System.Data.SqlClient.SqlConnection connection1=new System.Data.SqlClient.SqlConnection(cnString);
   System.Data.SqlClient.SqlDataAdapter  Com=new System.Data.SqlClient.SqlDataAdapter (sqlText,connection1);
   //给数据对象分配内存空间
   //给数据集合分配内存空间
   Com.Fill(Set1,DataTableName);
   
  }
  /// <summary>
  /// 实现多个数据集设定填充CrystalReport
  /// </summary>
  /// <param name="sender">水晶报表CrystalReport对象</param>
  public void rptReportClassFill(ReportClass sender)
  {
   //数据填充
   sender.SetDataSource(Set1);
   //首先使用crySetFill
   //print1.cryDSetFill("select * from Customers","server=localhost;uid=sa;pwd=sa;database=Northwind","Customers");
   //  申明公共类型,例如:
   //public  printClass print1=new printClass();
   //public CrystalReport2 Rep1=new CrystalReport2();
   //然后调用
   //rptReportClassFill(Rep1);
   //CrystalReportViewer1.ReportSource = Rep1;
   //CrystalReportViewer1.DataBind();

   // string sqlText="select * from customers";
   // string cnString="server=localhost;uid=sa;pwd=sa;database=northwind;";
   /*注意:使用dataset填充必须先建立一个可视的dataset.xsd,在其中添加element,并在水晶报表中显示相关数据字段*/
  }

  /// <summary>
  /// 实现多个数据集设定填充CrystalReport
  /// </summary>
  /// <param name="sender">水晶报表ReportDocument对象</param>
  public void rptReportDocumentFill(ReportDocument sender)
  {
   //数据填充
   sender.SetDataSource(Set1);
   //首先使用crySetFill
   //print1.cryDSetFill("select * from Customers","server=localhost;uid=sa;pwd=sa;database=Northwind","Customers");
   //  申明公共类型,例如:
   //public  printClass print1=new printClass();
   //public ReportDocument RD1= new ReportDocument();
   //然后调用
   //rptReportDocumentFill(RD1);
   //CrystalReportViewer1.ReportSource = RD1;
   //CrystalReportViewer1.DataBind();

   // string sqlText="select * from customers";
   // string cnString="server=localhost;uid=sa;pwd=sa;database=northwind;";
   /*注意:使用dataset填充必须先建立一个可视的dataset.xsd,在其中添加element,并在水晶报表中显示相关数据字段*/
  }

  /// <summary>
  ///  使用ReportDocument填充CrystalReport,为oleDB,odbc使用,此例子为sqlserver,拉模式
  /// </summary>
  /// <param name="SeverName">服务器名称</param>
  /// <param name="DatabaseName">数据库名称</param>
  /// <param name="UserID">用户id</param>
  /// <param name="Password">用户密码</param>
  /// <param name="fileName">获取指定路径的水晶报表文件名称</param>
  /// <param name="sender">水晶报表ReportDocument对象</param>
  public void cryDocumentFill(string SeverName,string DatabaseName,string UserID,string  Password,string fileName,ReportDocument sender)
  {    
   string path = System.Web.HttpContext.Current.Server.MapPath(fileName);
   sender.Load(path);

   TableLogOnInfo crTableLogOnInfo = new TableLogOnInfo();

   crTableLogOnInfo.ConnectionInfo.ServerName = SeverName;
   crTableLogOnInfo.ConnectionInfo.Password=Password;
   crTableLogOnInfo.ConnectionInfo.DatabaseName=DatabaseName;
   crTableLogOnInfo.ConnectionInfo.UserID =UserID;
   //设置连接参数
 
   //ReportDocument装载路径
   sender.Database.Tables[0].ApplyLogOnInfo(crTableLogOnInfo);
   //设置对应表连接参数
   //使用命名空间
   //using CrystalDecisions.CrystalReports.Engine;
   //using CrystalDecisions.Shared;
   /*注意:使用Engine.Database填充必须先在水晶报表中设置相关数据字段*/
   //  申明公共类型,例如:
   //public  printClass print1=new printClass();
   //public ReportDocument RD1= new ReportDocument();
   //然后调用
   //print1.cryDocumentFill("10.141.165.136","Northwind","sa","sa","Customers","*.rpt",RD1);
   //CrystalReportViewer1.ReportSource = RD1;
   //CrystalReportViewer1.DataBind();
  }

  #endregion

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有