陈宝刚---享受生活,追逐梦想!
理想是心中的火焰,有追求的人才是幸福的人!
向水晶报表传递参数及使用公式参数
下面的说明是关于向水晶报表里传递字符串类型参数和数字参数,以及用公式参数进行运算和转换。

阅读本站更多 水晶报表 Crystal Report 相关的文章:
水晶报表公式必读(水晶报表公式使用)
水晶报表传递参数及使用公式参数
经典水晶报表设计三则
水晶报表Web打印的四种方法
水晶报表中实现任意指定字段显示
Asp.Net与Crystal Report(水晶报表)
向水晶报表中传递参数,现在水晶报表中设置参数,然后把参数赋给选择公式

CrystalDecisions.Shared.ParameterValues   mypaVal = new CrystalDecisions.Shared.ParameterValues();
CrystalDecisions.Shared.ParameterDiscreteValue mypaDVal = new CrystalDecisions.Shared.ParameterDiscreteValue();
mypaDVal.Value = 参数值;
mypaVal.Add(mypaDVal);
myrep.DataDefinition.ParameterFields[\"水晶报表中的参数\"].ApplyCurrentValues(mypaVal);


第一步:生成数据集DataSet1.xsd,连好数据库,这在“水晶报表打印二”里面有详细说明,这里不再说明。
第二步:添加一个空白水晶报表CrystalReport1.rpt,在字段资源管理器中,右击“参数字段”选择“添加”,此处我们命名为p1(值类型为字符串),p2(值类型为数字,并且设为区域值),如下图:其它不做修改。
点击在新窗口中浏览此图片(图3.1)
右击“公式字段”,选“新建”,新建两个为:f1和f2,确定后会出现“公式编辑器”如下图,先不做改变,保存后关闭。
点击在新窗口中浏览此图片(图3.2)
第三步:将p1,p2拖入报表中,并保存报表。
第四步:编写代码。在WebForm1.aspx中以CrystalReportViewer1为对象编写代码如下:
// 声明将参数传递给
         //  查看器控件所需的变量。
         ParameterFields paramFields = new ParameterFields ();
              ParameterField paramField = new ParameterField ();
              ParameterDiscreteValue discreteVal = new ParameterDiscreteValue ();
              ParameterRangeValue rangeVal = new ParameterRangeValue ();

// 第一个参数是具有多个值的离散参数。
              // 设置参数字段的名称,它必须
              // 和报表中的参数相符。
              paramField.ParameterFieldName = \"p1\";

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

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

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

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

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

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

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

// 将参数字段集合放入查看器控件。
              CrystalReportViewer1.ParameterFieldInfo = paramFields;
              rpt = new CrystalReport1();
CrystalReportViewer1.ReportSource = rpt;

还是要引用命名空间:
using CrystalDecisions.Shared;
using CrystalDecisions.CrystalReports.Engine;

rpt 为ReportDocument rpt ;
以上即可完对于参数字段的说明,下面是用公式字段来处理加入的参数字段:
第五步:
将公式字段f1拖入水晶报表,并右键选择“编辑公式”如上图(图3.2)选择字符串处理函数如下:Left ({?p1},5 )
点击在新窗口中浏览此图片(图3.3)
其它的数字处理的类似,如下图:

点击在新窗口中浏览此图片(图3.4)
最后:
运行,你会看到:

点击在新窗口中浏览此图片
(图3.5)
成功!


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

参数字段运行时自定义

[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();




阅读本站更多 水晶报表 Crystal Report 相关的文章:
水晶报表公式必读(水晶报表公式使用)
水晶报表传递参数及使用公式参数
经典水晶报表设计三则
水晶报表Web打印的四种方法
水晶报表中实现任意指定字段显示
Asp.Net与Crystal Report(水晶报表)

水晶报表传递参数  使用水晶报表公式参数  向水晶报表数据源中的存储过程传参数
posted on 2010-01-03 19:59  追梦人RUBY  阅读(920)  评论(0编辑  收藏  举报