C# 为什么它会产生一个错误,说;无效的参数值";,当我将日期类型的参数传递给crystal reports时?
此代码在我的计算机上运行良好,但在客户端计算机上会导致错误C# 为什么它会产生一个错误,说;无效的参数值";,当我将日期类型的参数传递给crystal reports时?,c#,.net,date,types,crystal-reports,C#,.net,Date,Types,Crystal Reports,此代码在我的计算机上运行良好,但在客户端计算机上会导致错误 cr.SetParameterValue("fromDate", fromDatePicker.Value.Date); cr.SetParameterValue("toDate", toDatePicker.Value.Date); cr.SetParameterValue("todayRate", Common.GetTodayRate()); 错误是 Invalid Parameter value: exceeds the Mi
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是“日期”类型的参数。而todayRate是“Number”类型的参数
有没有办法解决这个问题?这个问题与从应用程序代码到CR的参数输入的区域性敏感处理有关。在这种特定情况下,CR的多语言支持设计显然很糟糕 解决方案,尽管丑陋,但如下所示 对于报告中的每个
日期
、时间
或日期时间
参数字段,请执行以下操作:
CDate({?ParamFieldName}) // Date
CTime({?ParamFieldName}) // Time
CDateTime({?ParamFieldName}) // DateTime
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由于未知原因无法处理该点,即使在日期末尾有点的区域性(即塞尔维亚语-
14.3.2015.
)鉴于参数具有相同的值,即时怀疑与它们的区域性之间的差异有关(日期和数字设置)和您的。CR不是我使用的东西,是在CR端键入的参数。如果它们被转换为字符串,这将几乎保证出现这样的错误,堆栈跟踪(这是一个例外?)可能会告诉您更多