如何向水晶报表数据源中的存储过程传参数……

类别:.NET开发 点击:0 评论:0 推荐:

水晶报表会自动为每个“存储过程中的参数”建立一个“参数字段”,所以这就成了运行时给参数赋值的问题了……

参数字段运行时自定义

[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:\reports\my 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();

本文地址:http://com.8s8s.com/it/it45307.htm