我们有一个SSRS报告,它接受一个日期/时间输入参数。我们发现报告在从Silverlight客户端执行时失败,并出现以下错误:
“为报告参数'CurrentDate'提供的值对其类型无效。”
在进一步调查中,我们发现当传递给报告的日期值大于12时,报告失败。 01/01/2011没关系。 17/06/2011将失败。这告诉我们SSRS框的报告必须是美国格式的日期,即mm / dd / yyyy。
我该如何解决这个问题?到目前为止,我尝试了以下内容:
我已将报告上的语言属性设置为en-GB。这没什么区别。 我在执行报告之前更改了Silverlight代码中的区域设置,例如
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
ExecuteReport();
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-GB");
这有效,但我对此解决方案不满意。在我们的SSRS报告中接受日期似乎是个大黑客。
为什么SSRS期望所有日期参数都采用美国格式?我可以解决这个问题而不必跳过篮球吗?请帮忙!
答案 0 :(得分:0)
好的,我找到了解决这个问题的方法。以前我通过了DateTime .NET类型。我现在正在传递一个格式化为美国日期样式的字符串值,例如
MeetingDate = MyDateVariable.ToString("MM/dd/yyyy");
这很有效。
答案 1 :(得分:0)
它也可以使用更通用的“破折号”ISO格式: yyyy-MM-dd 。此格式是独立的区域设置。请注意,只使用ISO格式( yyyyMMdd )它不起作用。
问候。
答案 2 :(得分:0)
尝试:
MyDateVariable.ToString(CultureInfo.InvariantCulture)