向水晶报表传递参数

参考--
http://imar.spaanjaars.com/QuickDocID.aspx?QUICKDOC=310
http://www.cddotnet.com/bbs/dispbbs.asp?boardid=3&id=3&star=1#4
http://community.csdn.net/Expert/topic/3512/3512093.xml?temp=.3724787


如何向 CrystalReportViewer 和 ReportDocument 传递参数……   
一、CrystalReportViewer
通过 CrystalReportViewer.ParameterFieldInfo 属性……
1、CrystalReportViewer 成员
公共实例属性
ParameterFieldInfo(从 CrystalReportViewerbase 继承) ParameterFields。获取或设置参数字段集合。
二、ReportDocument
通过 ReportDocument.DataDefinition.ParameterFields 属性……
1、ReportDocument 成员
公共实例属性
DataDefinition DataDefinition。获取 DataDefinition 对象。
2、DataDefinition 成员
公共实例属性
ParameterFields ParameterFieldDefinitions。获取 ParameterFieldDefinitions 集合。
三、参数字段运行时自定义(CrystalReportViewer)
参考:
设置参数 | Windows 窗体查看器的绑定选项 | Web 窗体查看器的绑定选项

可支持用户在 Crystal 报表中通过参数进行输入。这种参数有多种用途。例如:
使参数基于数据库字段并允许用户指定该字段的值,以便对报表中的数据进行筛选。
使用参数字段将条件格式应用于报表。
使用参数字段来定义排序顺序。
下列示例说明如何在运行时通过代码设置参数字段值。此例解释了如何设置两个不同的参数:第一个是多值离散参数,第二个是区域值参数。

在运行时修改参数字段

[C#]
// 声明将参数传递给
//查看器控件所需的变量。
ParameterFields paramFields = new ParameterFields ();
ParameterField paramField = new ParameterField ();
ParameterDiscreteValue discreteVal = new ParameterDiscreteValue ();
ParameterRangeValue rangeVal = new ParameterRangeValue ();

// 第一个参数是具有多个值的离散参数。

// 设置参数字段的名称,它必须
//和报表中的参数相符。
paramField.ParameterFieldName = "客户姓名";

// 设置第一个离散值并将其传递给该参数。
discreteVal.Value = "AIC Childrens";
paramField.CurrentValues.Add (discreteVal);

// 设置第二个离散值并将其传递给该参数。
// discreteVal 变量被设置为新值,这样,以前的设置
//就不会被覆盖。
discreteVal = new ParameterDiscreteValue ();
discreteVal.Value = "Aruba Sport";
paramField.CurrentValues.Add (discreteVal);

// 将该参数添加到参数字段集合。
paramFields.Add (paramField);

// 第二个参数为区域值。paramField 变量
//被设置为新值,这样,以前的设置就不会被覆盖。
paramField = new ParameterField ();

// 设置参数字段的名称,它必须
//和报表中的参数相符。
paramField.ParameterFieldName = "客户 ID";

// 设置范围的开始值和结束值并将该范围传递给
//该参数。
rangeVal.StartValue = 42;
rangeVal.EndValue = 72;
paramField.CurrentValues.Add (rangeVal);

// 将第二个参数添加到参数字段集合。
paramFields.Add (paramField);

// 将参数字段集合放入查看器控件。
crystalReportViewer1.ParameterFieldInfo = paramFields;



水晶报表版本9.2,后台是sqlserver 2000,该报表数据源是一个有两个参数的存储过程
结果不管我传什么参数,报表的结果都是水晶报表开发环境中的结果.参数根本没传进去.
请各位兄弟帮忙看看问题出在哪儿
下面是代码
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
namespace erpreports
{
 /// <summary>
 /// Summary description for WebForm1.
 /// </summary>
 public class WebForm1 : System.Web.UI.Page
 {
  protected CrystalDecisions.Web.CrystalReportViewer CrystalReportViewer1;
  mrb_pnper rpt;
  ParameterFields crParameterFields;
  ParameterField crParameterField;
  ParameterValues crParameterValues;
  ParameterDiscreteValue crParameterDiscreteValue;

  private void Page_Load(object sender, System.EventArgs e)
  {
   // Put user code to initialize the page here
  }

  #region Web Form Designer generated code
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: This call is required by the ASP.NET Web Form Designer.
   //
   InitializeComponent();
   base.OnInit(e);
   rpt = new mrb_pnper();
   CrystalReportViewer1.ReportSource = rpt;

   //Get the collection of parameters from the report
   crParameterFields = CrystalReportViewer1.ParameterFieldInfo;

   crParameterField = crParameterFields["@begindate"];
   crParameterValues = crParameterField.CurrentValues;
   crParameterDiscreteValue = new ParameterDiscreteValue();
   crParameterDiscreteValue.Value = Request.QueryString["begindate"];
   crParameterValues.Add(crParameterDiscreteValue);

   crParameterField = crParameterFields["@enddate"];
   crParameterValues = crParameterField.CurrentValues;
   crParameterDiscreteValue = new ParameterDiscreteValue();
   crParameterDiscreteValue.Value = Request.QueryString["enddate"];
   crParameterValues.Add(crParameterDiscreteValue);
   CrystalReportViewer1.ParameterFieldInfo = crParameterFields;

  }
  
  /// <summary>
  /// Required method for Designer support - do not modify
  /// the contents of this method with the code editor.
  /// </summary>
  private void InitializeComponent()
  {   
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 水晶报表是一款用于数据分析和报表生成的工具,它可以与VS2019集成,为开发人员提供更高效和方便的报表设计和生成功能。 首先,水晶报表能够与VS2019的集成环境无缝对接,使得开发人员可以在同一个开发环境中完成数据分析和报表设计的工作。这样一来,开发人员无需频繁切换软件,能够更加高效地利用时间和资源进行开发工作。 其次,水晶报表提供了丰富的报表设计功能,包括图表、表格、交叉表和透视表等,可以根据具体的需求进行自定义设计。开发人员可以通过直观的可视化界面来调整和布局报表元素,以及设置数据源和数据绑定,使报表呈现的数据更加直观和易于理解。 另外,水晶报表还支持多种数据格式的导入和导出,包括Excel、CSV和XML等,方便与其他系统进行数据交互和共享。开发人员可以根据需要将报表导出为不同的格式,或者从外部数据源导入数据进行报表分析,提高了数据处理的灵活性和可扩展性。 总体而言,通过水晶报表的集成,VS2019开发人员能够更加方便地进行数据分析和报表生成的工作。水晶报表提供了丰富的报表设计功能,并且支持多种数据格式的导入和导出,使报表生成更加效率和灵活。这些特点使得水晶报表成为VS2019开发人员不可缺少的工具之一。 ### 回答2: 水晶报表是一种用于数据分析和报告的工具,它可以方便地在Visual Studio 2019中使用。水晶报表提供了丰富的功能,可以帮助用户快速创建和定制各种类型的报表。 在Visual Studio 2019中,使用水晶报表可以轻松地连接各种数据源,包括数据库、Excel文件等,并将数据以图表、表格等形式展示出来。用户可以根据自己的需求进行报表的设计和布局,包括选择合适的图表类型、添加报表标题和页脚、调整字体样式等。 水晶报表还提供了强大的数据处理和分析功能,用户可以通过公式和表达式对数据进行计算和筛选,并进行数据的分组、排序和汇总。用户还可以使用参数和条件语句实现动态报表的生成,根据不同的条件显示不同的内容。 除了创建和设计报表水晶报表还支持报表的导出和打印功能。用户可以将报表导出为PDF、Excel、Word等格式,方便与他人共享和打印。此外,水晶报表还支持报表的预览和打印设置,用户可以在生成报表之前对报表进行预览,并对打印选项进行设置。 总之,水晶报表是一个功能强大、易于使用的报表工具,它在Visual Studio 2019中提供了丰富的功能和灵活的定制选项,可以帮助用户轻松创建、设计和分析各种类型的报表。无论是个人用户还是企业用户,都可以通过使用水晶报表提高数据分析和报告的效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值