2011-06-17 48 views
1

我们有一个SSRS报告接受一个日期/时间输入参数。我们发现报告在从我们的Silverlight客户端执行时失败,并显示以下错误:SSRS报告只接受美国日期参数

“为报告参数'CurrentDate'提供的值对其类型无效。”

在进一步调查中,我们发现,当日期值传递给报告的日期数大于12时,报告失败。 01/01/2011是好的。 17/06/2011将失败。这告诉我们,SSRS框的报告必须以美国格式的日期,即mm/dd/yyyy。

我该如何解决这个问题?到目前为止,我已经尝试了以下内容:

我已经将报告中的Language属性设置为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

好的我找到了一种方法来解决这个问题。以前我正在传递一个DateTime .NET类型。我现在传递格式为美国日期样式的字符串值,例如

MeetingDate = MyDateVariable.ToString("MM/dd/yyyy"); 

This Works。

0

它也可以使用更通用的“破折号分隔”ISO格式:yyyy-MM-dd。这种格式是独立于区域设置的。请注意,仅使用ISO格式(yyyyMMdd)它不起作用。

问候。