为什么当我将 DATE 类型的参数传递给水晶报告时,它会生成一个错误说“参数值无效”
本文关键字:一个 错误 参数值无效 无效 参数 类型 DATE 参数传递 报告 水晶 为什么 | 更新日期: 2023-09-27 18:31:25
此代码在我的计算机上完美运行,但在客户端计算机上导致错误。
cr.SetParameterValue("fromDate", fromDatePicker.Value.Date);
cr.SetParameterValue("toDate", toDatePicker.Value.Date);
cr.SetParameterValue("todayRate", Common.GetTodayRate());
错误是
Invalid Parameter value: exceeds the Min or Max or conflicts with existing value or edit mask
在这里,fromDate和toDate是"Date"类型的参数。 而今天率是"数字"类型的参数。
有什么方法可以解决这个问题吗?
该问题与将参数输入从应用程序代码到 CR 的区域性敏感处理有关。 CR在特定情况下的多语言支持方面显然设计得很糟糕,例如这种情况。
解决方案虽然丑陋,但如下。
对于报表中的每个Date
、Time
或DateTime
参数字段,请执行以下操作:
- 在 CR 设计器中,将参数字段的类型更改为
String
。 -
创建一个新的公式字段并将其值设置为以下值之一:
CDate({?ParamFieldName}) // Date CTime({?ParamFieldName}) // Time CDateTime({?ParamFieldName}) // DateTime
根据原始参数字段类型,其中
ParamFieldName
是参数字段的名称。 -
在应用程序代码中,通过以下方式之一传递参数值:
// Date report.SetParameterValue( "ParamFieldName", DateTimeObject.ToShortDateString().TrimEnd('.')); // Time report.SetParameterValue( "ParamFieldName", DateTimeObject.ToShortTimeString()); // DateTime report.SetParameterValue( "ParamFieldName", string.Format("{0} {1}", DateTimeObject.ToShortDateString().TrimEnd('.'), DateTimeObject.ToShortTimeString()));
在 CR 设计器中 - ,插入公式字段而不是参数字段,并在 CR 设计器中设置其显示格式。
这已经在几种文化中进行了测试。
正在修剪日期字符串中的结束点,因为 CR 由于未知原因无法处理该点,即使在日期末尾具有点的区域性上也是如此(即。塞尔维亚语 - 14.3.2015.
)