C# 从C运行Crystal Reports 2011报表时处理可选参数#
我正在用VS2010编写一个C#自定义调度工具,以执行和导出许多Crystal Reports 2011 rpt文件。目前,这些报告是在CR Developer中手动执行的,有些报告具有可选参数,在运行时可以保留为空,这些参数通过报告中记录选择公式中的CR“HasValue()”函数进行处理 我已经开发了一个原型应用程序来执行和导出其中一个报告,并且可以毫无问题地传入参数值:C# 从C运行Crystal Reports 2011报表时处理可选参数#,c#,crystal-reports-2010,C#,Crystal Reports 2010,我正在用VS2010编写一个C#自定义调度工具,以执行和导出许多Crystal Reports 2011 rpt文件。目前,这些报告是在CR Developer中手动执行的,有些报告具有可选参数,在运行时可以保留为空,这些参数通过报告中记录选择公式中的CR“HasValue()”函数进行处理 我已经开发了一个原型应用程序来执行和导出其中一个报告,并且可以毫无问题地传入参数值: // Set up the Parameter/s Parameter
// Set up the Parameter/s
ParameterFieldDefinitions crParameterFieldDefinitions;
ParameterFieldDefinition crParameterFieldDefinition;
ParameterValues crParameterValues = new ParameterValues();
ParameterDiscreteValue crUserProfileValue = new ParameterDiscreteValue();
crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;
crParameterFieldDefinition = crParameterFieldDefinitions["UserProfile"];
crParameterValues = crParameterFieldDefinition.CurrentValues;
crParameterValues.Clear();
crUserProfileValue.Value = "SIPRECLK";
crParameterValues.Add(crUserProfileValue);
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);
这将在报告PDF和XLS导出中提供所需的结果
但是,这个UserProfile参数在报告中被标记为可选的,我无法确定如何将其设置为空值,以模拟用户在使用CR Developer手动执行报告时将该参数字段留空
我已尝试设置crUserProfileValue.Value=“”,以及字符串.Empty,但这两个参数都被视为实际参数值,并且在记录选择公式中使用时,无法匹配数据源中的任何记录,并导致空报告
如果我设置了crUserProfileValue.Value=null,则会在以下位置引发异常:
crParametersFieldDefinition.ApplyCurrentValues(crParameterValues);
声明“参数字段和参数字段当前值的类型不兼容。”
我还尝试过不将crUserProfileValue添加到crParameterValues集合中,但在执行报告时遇到“缺少参数值”异常
如何以编程方式将报表中定义为可选的参数的值设置为一个值,该值将导致CR HasValue()函数在记录选择公式中返回FALSE?好的,因此我最终通过SAP社区网络找到了将可选参数设置为“非值”的确切方法以编程方式 我不需要使用报告的DataDefinition.ParameterFields路由(如上所述),而只需要编写:
cryRpt.ParameterFields["UserProfile"].CurrentValues.IsNoValue = true;
工作正常,触发记录选择公式中所需的代码路径