向水晶报表传递参数及使用公式参数
下面的说明是关于向水晶报表里传递字符串类型参数和数字参数,以及用公式参数进行运算和转换。
阅读本站更多
水晶报表
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(水晶报表)
水晶报表传递参数 使用水晶报表公式参数 向水晶报表数据源中的存储过程传参数