在crystalReport(水晶报表)动态输入参数
2005-03-28 00:29
309 查看
using CrystalDecisions.Shared
private void BuildReportViewerParameters(CrystalDecisions.Web.CrystalReportViewer rptViewer, Hashtable ParamTable)
{
//定义报表视图的参数的方法
ParameterFields ParamFields = new ParameterFields();
foreach (object key in ParamTable.Keys)
{
ParameterField ParamField = new ParameterField();
ParameterValues ParamValues = new ParameterValues();
ParameterDiscreteValue ParamValue = new ParameterDiscreteValue();
ParamValue.Value = ParamTable[key].ToString();
ParamValues.Add(ParamValue);
ParamField.ParameterFieldName = key.ToString();
ParamField.CurrentValues = ParamValues;
ParamFields.Add(ParamField);
}
rptViewer.ParameterFieldInfo = ParamFields;
}
private void BuildReportClassParameters(CrystalDecisions.CrystalReports.Engine.ReportClass rpt, Hashtable ParamTable)
{
//定义报表类的参数的方法
foreach (object key in ParamTable.Keys)
{
ParameterValues ParamValues = new ParameterValues();
ParameterDiscreteValue ParamValue = new ParameterDiscreteValue();
ParamValue.Value = ParamTable[key].ToString();
ParamValues.Add(ParamValue);
rpt.DataDefinition.ParameterFields[key.ToString()].ApplyCurrentValues(ParamValues);
}
}
protected void BuildReportParameters(CrystalDecisions.Web.CrystalReportViewer rpt,Hashtable ParamTable)
{
//定义报表参数的方法
ParameterFields ParamFields = new ParameterFields();
foreach(object key in ParamTable.Keys)
{
ParameterField ParamField;
ParameterValues ParamValues;
ParameterDiscreteValue ParamValue;
ParamField = new ParameterField();
ParamValues = new ParameterValues();
ParamValue = new ParameterDiscreteValue();
ParamValue.Value = (string)ParamTable[key];
ParamValues.Add(ParamValue);
ParamField.ParameterFieldName=(string)key;
ParamField.CurrentValues = ParamValues;
ParamFields.Add(ParamField);
}
rpt.ParameterFieldInfo = ParamFields;
}
然后再你的需要调用参数的地方,加如下引用:
private void Button_output_Click(object sender, System.EventArgs e)
{
CrystalDecisions.Shared.TableLogOnInfo logInfo = new CrystalDecisions.Shared.TableLogOnInfo(); //设置报表的登录信息
logInfo.ConnectionInfo.ServerName = "ANGEL"; //设置报表与库的连接信息
logInfo.ConnectionInfo.DatabaseName = "KaoQin";
logInfo.TableName = "Emstatistic";
logInfo.ConnectionInfo.UserID = "sa";
logInfo.ConnectionInfo.Password = "";
CrystalReportViewer1.ReportSource = Server.MapPath("cr_aa.rpt"); //指定报表的数据源
CrystalReportViewer1.LogOnInfo.Add(logInfo);//对参数进行赋什值
// CrystalReportViewer1.DataBind();
//声明变量并获取导出选项
cr_aa myReport = new cr_aa(); //定义一个名为myReport的报表
myReport.Database.Tables[0].ApplyLogOnInfo(logInfo);
CrystalReportViewer1.ReportSource = myReport;
CrystalReportViewer1.DataBind();
Hashtable t = new Hashtable();
t.Add("p_st_month", Textmonth.Text); //为参数赋值
BuildReportParameters(CrystalReportViewer1, t); //调用建立报表参数的方法
BuildReportViewerParameters(CrystalReportViewer1, t); //给报表浏览器添加参数
BuildReportClassParameters(myReport, t); //给报表类添加参数
CrystalDecisions.Shared.DiskFileDestinationOptions diskOpts = new CrystalDecisions.Shared.DiskFileDestinationOptions();
//设置导出格式
myReport.ExportOptions.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile;
myReport.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.Excel;
//设置磁盘文件选项
diskOpts.DiskFileName = "C://Documents and Settings//Administrator//My Documents//kaoqin_rpt.xls";
myReport.ExportOptions.DestinationOptions = diskOpts;
myReport.Export();
Response.Write("<script language='javascript'>alert('您已经将报表成功输出到Excel文件'); window.location.href='customRpt.aspx';</" + "script>");
}
private void BuildReportViewerParameters(CrystalDecisions.Web.CrystalReportViewer rptViewer, Hashtable ParamTable)
{
//定义报表视图的参数的方法
ParameterFields ParamFields = new ParameterFields();
foreach (object key in ParamTable.Keys)
{
ParameterField ParamField = new ParameterField();
ParameterValues ParamValues = new ParameterValues();
ParameterDiscreteValue ParamValue = new ParameterDiscreteValue();
ParamValue.Value = ParamTable[key].ToString();
ParamValues.Add(ParamValue);
ParamField.ParameterFieldName = key.ToString();
ParamField.CurrentValues = ParamValues;
ParamFields.Add(ParamField);
}
rptViewer.ParameterFieldInfo = ParamFields;
}
private void BuildReportClassParameters(CrystalDecisions.CrystalReports.Engine.ReportClass rpt, Hashtable ParamTable)
{
//定义报表类的参数的方法
foreach (object key in ParamTable.Keys)
{
ParameterValues ParamValues = new ParameterValues();
ParameterDiscreteValue ParamValue = new ParameterDiscreteValue();
ParamValue.Value = ParamTable[key].ToString();
ParamValues.Add(ParamValue);
rpt.DataDefinition.ParameterFields[key.ToString()].ApplyCurrentValues(ParamValues);
}
}
protected void BuildReportParameters(CrystalDecisions.Web.CrystalReportViewer rpt,Hashtable ParamTable)
{
//定义报表参数的方法
ParameterFields ParamFields = new ParameterFields();
foreach(object key in ParamTable.Keys)
{
ParameterField ParamField;
ParameterValues ParamValues;
ParameterDiscreteValue ParamValue;
ParamField = new ParameterField();
ParamValues = new ParameterValues();
ParamValue = new ParameterDiscreteValue();
ParamValue.Value = (string)ParamTable[key];
ParamValues.Add(ParamValue);
ParamField.ParameterFieldName=(string)key;
ParamField.CurrentValues = ParamValues;
ParamFields.Add(ParamField);
}
rpt.ParameterFieldInfo = ParamFields;
}
然后再你的需要调用参数的地方,加如下引用:
private void Button_output_Click(object sender, System.EventArgs e)
{
CrystalDecisions.Shared.TableLogOnInfo logInfo = new CrystalDecisions.Shared.TableLogOnInfo(); //设置报表的登录信息
logInfo.ConnectionInfo.ServerName = "ANGEL"; //设置报表与库的连接信息
logInfo.ConnectionInfo.DatabaseName = "KaoQin";
logInfo.TableName = "Emstatistic";
logInfo.ConnectionInfo.UserID = "sa";
logInfo.ConnectionInfo.Password = "";
CrystalReportViewer1.ReportSource = Server.MapPath("cr_aa.rpt"); //指定报表的数据源
CrystalReportViewer1.LogOnInfo.Add(logInfo);//对参数进行赋什值
// CrystalReportViewer1.DataBind();
//声明变量并获取导出选项
cr_aa myReport = new cr_aa(); //定义一个名为myReport的报表
myReport.Database.Tables[0].ApplyLogOnInfo(logInfo);
CrystalReportViewer1.ReportSource = myReport;
CrystalReportViewer1.DataBind();
Hashtable t = new Hashtable();
t.Add("p_st_month", Textmonth.Text); //为参数赋值
BuildReportParameters(CrystalReportViewer1, t); //调用建立报表参数的方法
BuildReportViewerParameters(CrystalReportViewer1, t); //给报表浏览器添加参数
BuildReportClassParameters(myReport, t); //给报表类添加参数
CrystalDecisions.Shared.DiskFileDestinationOptions diskOpts = new CrystalDecisions.Shared.DiskFileDestinationOptions();
//设置导出格式
myReport.ExportOptions.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile;
myReport.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.Excel;
//设置磁盘文件选项
diskOpts.DiskFileName = "C://Documents and Settings//Administrator//My Documents//kaoqin_rpt.xls";
myReport.ExportOptions.DestinationOptions = diskOpts;
myReport.Export();
Response.Write("<script language='javascript'>alert('您已经将报表成功输出到Excel文件'); window.location.href='customRpt.aspx';</" + "script>");
}
相关文章推荐
- 在crystalReport(水晶报表)动态输入参数
- 在crystalReport(水晶报表)动态输入参数(转)
- crystalReport(水晶报表)动态输入参数
- java 开发水晶报表动态参数添加
- VB2005如何设计带动态输出参数字段的水晶报表
- C#中水晶报表实现动态传递参数的简单方法
- Infoview(CMC) - 含有动态参数的水晶报表的部署
- 水晶报表参数字段动态赋值
- asp.net水晶报表参数字段在代码中赋值的方法
- Visual Studio 2003自带的水晶报表 字符串参数最长长度为254
- PUSH模式动态水晶报表的实现-动态数据以及汇总信息的的实现
- [转]水晶报表参数编程示例代码[http://blog.csdn.net/xwdd129/archive/2006/05/29/760672.aspx]
- 变向实现动态水晶报表
- 水晶报表中关于参数导致的错误
- [所见非所得]使用参数控制水晶报表的部分元素不打印
- 在c#中动态生成水晶报表时,动态添加sort
- Code19 使用C#实现如何在运行时传递参数给水晶报表
- JAVA水晶报表从环境搭建到创建动态水晶报表
- C#给水晶报表模板传递多个自定义参数字段类模块
- 如何在水晶报表中动态添加字段