【问题标题】:SSRS reports only accept American date parametersSSRS 报告只接受美国日期参数
【发布时间】:2011-06-17 08:16:12
【问题描述】:

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

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

经过进一步调查,我们发现当传递给报告的日期值的天数大于 12 时,报告会失败。例如2011 年 1 月 1 日可以。 2011 年 6 月 17 日将失败。这告诉我们,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 要求所有日期参数都是美国格式?我可以在不跳槽的情况下解决这个问题吗?请帮忙!

【问题讨论】:

    标签: .net silverlight-4.0 reporting-services


    【解决方案1】:

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

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

    这行得通。

    【讨论】:

      【解决方案2】:

      它也可以使用更通用的“破折号分隔”ISO 格式:yyyy-MM-dd。此格式与区域设置无关。请注意,仅使用 ISO 格式 (yyyyMMdd) 是行不通的。

      问候。

      【讨论】:

        【解决方案3】:

        试试:

         MyDateVariable.ToString(CultureInfo.InvariantCulture)
        

        【讨论】:

        • 它是文化中立的,应该涵盖很多情况。
        猜你喜欢
        • 2022-08-06
        • 1970-01-01
        • 2018-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多