[转贴]水晶报表数据填充(一种推模式,两种拉模式)类库
2005-02-18 23:38
453 查看
[原创]水晶报表数据填充(一种推模式,两种拉模式)类库
#region 声明
//----------------------------------------------------------------------
//
//
// 作者: 李淼(Nick.Lee)
//
// 水晶报表数据填充(一种推模式,两种拉模式)类库//
//
// boyorgril@msn.com
//
//----------------------------------------------------------------------
#endregion
#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
#region 声明
//----------------------------------------------------------------------
//
//
// 作者: 李淼(Nick.Lee)
//
// 水晶报表数据填充(一种推模式,两种拉模式)类库//
//
// boyorgril@msn.com
//
//----------------------------------------------------------------------
#endregion
#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
相关文章推荐
- [原创]水晶报表数据填充(一种推模式,两种拉模式)类库
- 水晶报表数据填充(一种推模式,两种拉模式)类库
- [ZT]水晶报表数据填充(一种推模式,两种拉模式)类库
- [ZT]水晶报表数据填充(一种推模式,两种拉模式)类库
- 水晶报表的使用(1)——动态数据填充技巧[PUSH 模式]
- 关于水晶报表的两种数据填充方式和SetDatabaseLogon的先后问题
- .NET下水晶报表传递数据的两种模式
- 一起学习水晶报表之拉模式【如何通过代码实现水晶报表显示数据】(课程2)
- 水晶报表7子报表填充数据(VB)使用Crystal Report控件
- [转-来自啊泰]简单介绍一下水晶报表的推与拉两种模式 [http://www.cnblogs.com/babyt/archive/2005/04/12/135849.html]
- asp.net水晶报表推模式加载报表数据代码段
- 简单介绍一下水晶报表的推与拉两种模式
- 一起学习水晶报表之推模式【强类型的DataSet实现显示报表数据】(课程6)
- 一起学习水晶报表之推模式【强类型的DataSet实现显示报表数据】(课程7)
- 一起学习水晶报表之拉模式【如何实现水晶报表显示数据信息】(课程3)
- PUSH模式动态水晶报表的实现-文本框、数据框的设置
- 一起学习水晶报表之拉模式【Winform中实现报表显示数据】(课程4)
- C#下水晶报表的数据动态绑定(推模式, 非关联数据库)
- 关于水晶报表10 的字报表数据填充和显示
- asp.net 水晶报表推模式加载报表数据代码段