此问题适用于 Microsoft SQL Server 2012 Reporting Services。

症状

请考虑以下情况:

  • 创建基于 Microsoft .NET Framework 4.0 的 Windows 窗体应用程序或 Windows Presentation Foundation (WPF)应用程序。

  • 在 Windows 窗体或 WPF 应用程序中,使用 Microsoft Report Viewer 2010 控件显示在远程模式下运行的 Microsoft SQL Server 2012 Reporting Services (SSRS 2012)报表。

  • 报表包含具有默认值的DateTime 类型参数。

  • 在 "区域设置" 设置为 "意大利语" 的操作系统上运行应用程序。 此外,长时间 格式设置为 "HH: mm: ss"。

在这种情况下,你可能会遇到下列问题之一:

  • DateTime类型参数的默认值不会显示在参数提示区域中。

  • 如果将值分配给 DateTime类型参数并更新报表,则在呈现报表且不显示报表后,该值将丢失。

原因

出现此问题的原因是 .NET Framework 4.0 中的更改会阻止应用程序和 SSRS 2012 使用基于操作系统区域设置的正确信息。 基于 .NET Framework 4.0 的应用程序使用 Windows 返回的区域设置。 但是,SSRS 2012 是基于 .NET Framework 3.5 Services Pack 1 (SP1)构建的。 因此,SSRS 2012 使用嵌入在 .NET Framework 3.5 SP1 中的区域设置。当 SSRS 2012 服务器使用 "." 符号作为时间分隔符运行报表时, DateTime 类型参数将作为字符串发送回客户端。 报表查看器控件调用 TryParse 方法,通过使用 ":" 符号作为时间分隔符来验证字符串。 因此,字符串将验证为 false,并且不会显示在参数提示区域中。注意仅当 长时间 格式设置为 "HH: mm: ss" (意大利语区域设置的默认设置)时,才会出现此问题。 意大利区域设置的默认设置取决于您的操作系统。 此外,您可以通过更改长时间 格式来配置操作系统的默认设置。

解决方案

累积更新信息

SQL Server 2012 的累积更新 2 Service Pack 1 (SP1)

此问题的修补程序首次在累积更新2中发布。有关如何获取此累积更新包的 SQL Server 2012 Service Pack 1 的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2790947 SQL Server 2012 的累积更新包 2 Service Pack 1注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2012 Service Pack 1 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2772858 在发布 SQL Server 2012 Service Pack 1 之后发布的 SQL Server 2012 版本

状态

Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。

解决方法

要解决此问题,请使用以下解决方法之一:

  • 将应用程序和操作系统上的区域设置设置为与位于客户端上的区域设置相匹配。

  • 创建用于填充文本的用户的字符串输入字段。 然后在报表中,将字符串转换为日期。

  • 在运行报表时,创建从字符串输入字段填充的隐藏或无提示参数。

  • 在报表查看器控件之外创建不可见的 DateTime类型参数和 DateTimePicker 控件。 单击 "查看报表",然后将字符串值放入SubmittingParameterValues事件处理程序中的DateTime类型参数。

更多信息

Microsoft Report Viewer 2010 SP1 可再发行程序包可从以下 Microsoft 下载中心网站下载:

Microsoft Report Viewer 2010 SP1 可再发行程序包若要了解有关 TryParseExact 方法和 TryParse 方法的详细信息,请访问以下 MSDN 网站:

TryParseExact 方法(String、string、IFormatProvider、DateTimeStyles、datetimeoffset%datetimeoffset TryParse 方法(string、datetimeoffset%)

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。