如何向 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 报表中通过参数进行输入。这种参数有多种用途。例如: 使参数基于数据库字段并允许用户指定该字段的值,以便对报表中的数据进行筛选。 使用参数字段将条件格式应用于报表。 使用参数字段来定义排序顺序。 下列示例说明如何在运行时通过代码设置参数字段值。此例解释了如何设置两个不同的参数:第一个是多值离散参数,第二个是区域值参数。
在运行时修改参数字段
[Visual Basic] ' 声明将参数传递给 '查看器控件所需的变量。 Dim paramFields As New ParameterFields() Dim paramField As New ParameterField() Dim discreteVal As New ParameterDiscreteValue() Dim rangeVal As 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
crystalReportViewer1.ReportSource = "c:reportsmy report.rpt"
[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;
[C++] // 声明将参数传递给 //查看器控件所需的变量。 ParameterFields* paramFields = new ParameterFields (); ParameterField* paramField = new ParameterField (); ParameterDiscreteValue* discreteVal = new ParameterDiscreteValue (); ParameterRangeValue* rangeVal = new ParameterRangeValue ();
// 第一个参数是具有多个值的离散参数。 // 设置参数字段的名称,它必须 //和报表中的参数相符。 paramField->ParameterFieldName = "客户姓名";
// 设置第一个离散值并将其传递给该参数。 String* val = "AIC Childrens"; discreteVal->Value = val; paramField->CurrentValues->Add (discreteVal);
// 设置第二个离散值并将其传递给该参数。 // discreteVal 变量被设置为新值,这样,以前的设置 //就不会被覆盖。 discreteVal = new ParameterDiscreteValue (); val = "Aruba Sport"; discreteVal->Value = val; paramField->CurrentValues->Add (discreteVal);
// 将该参数添加到参数字段集合。 paramFields->Add (paramField);
// 第二个参数为区域值。paramField 变量 //被设置为新值,这样,以前的设置就不会被覆盖。 paramField = new ParameterField ();
// 设置参数字段的名称,它必须 //和报表中的参数相符。 paramField->ParameterFieldName = "客户 ID";
// 设置范围的开始值和结束值并将该范围传递给 //该参数。 rangeVal->StartValue = __box(42); rangeVal->EndValue = __box(72); paramField->CurrentValues->Add (rangeVal);
// 将第二个参数添加到参数字段集合。 paramFields->Add (paramField);
// 将参数字段集合放入查看器控件。 crystalReportViewer1->ParameterFieldInfo = paramFields;
crystalReportViewer1->ExportReport();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值