【问题标题】:SSRS Report Date Format Switching to US in Visual Studio 2012SSRS 报告日期格式在 Visual Studio 2012 中切换到美国
【发布时间】:2018-04-04 00:57:44
【问题描述】:

我们正在使用 SSRS 2014 并通过 SQL Data Tools - BI 在 Windows 7 上的 Visual Studio Ultimate 2012 中开发报告。在过去的四天里,我们在尝试开发任何具有日期提示的报告时遇到了一个相当烦人的问题。

当我们在 VS 中进行报表预览时,从弹出的日历控件中为参数选择一个日期,它将日期保存为 MM/DD/YYYY 格式。这包括多年来在 VS 中运行良好的现有报告,以及我们尝试添加的新报告。例如:

  • 带有“开始日期”参数的预览报告 从 日历例如今天是 2017 年 10 月 23 日
  • 当它关闭日期提示时,它将日期保存为 2017 年 10 月 23 日 是 en-GB 格式的无效日期,因此报告不会运行,我得到 参数类型的值无效的错误
  • 如果我选择的日期可能在 MM/DD/YYYY 或 DD/MM/YYYY 格式,如 2017 年 10 月 4 日,则保存为 04/10/2017 在预览文本框中。
  • 但是,如果我重新打开 日历控件来选择另一个日期。

我们尝试了以下方法:

  • 以 en-GB 的报告语言运行,并以此运行 空白
  • 在控制面板中检查了我的位置/键盘设置(这些
    都是英国英语)
  • 从源代码管理中检索旧版本的报告

如果我将报告部署到我们的测试服务器并在浏览器中运行,则不会出现此问题。 我们现在有点没有想法,欢迎任何帮助!

【问题讨论】:

  • 您的数据集查询是否接受该值作为日期或字符串数​​据类型?
  • 它应该接受它作为一个日期,基础字段是日期数据类型。如果我们选择一个在 MM 和 DD 互换后仍然有效的日期(例如 2017 年 8 月 10 日可能是 8 月或 10 月)“报告运行得非常愉快,但日期错误。只要我们选择一个日期如果 MM 和 DD 互换,则无效,我们会收到消息“本地报告处理期间发生错误。为报告参数“StartDate”提供的值对其类型无效”。

标签: sql-server visual-studio-2012 reporting-services sql-server-2014


【解决方案1】:

如果不查看所有详细信息就很难确定,但根据您的描述,听起来您可能在查询中的某处进行了到字符串数据类型的中间转换。 SQL Server 以内部化的数字格式存储没有格式的日期。它会抛出您所描述的错误的唯一方法是,如果某个地方发生了字符串转换并且区域/语言设置在此过程中不匹配。

您提到报告正在使用日期选择器,因此报告参数已正确配置为日期。在将 date 参数传递给 sql 查询之前,您是否有任何表达式以某种方式对其进行操作?

【讨论】:

  • 感谢韦斯的回复。日期参数上没有表达式。有一系列报告受到影响,有些报告直接将数据参数与 where 子句中的日期字段进行比较,有些则将其与转换为日期的日期时间字段进行比较。令人沮丧的是,这影响了大约一百个报告,我们以前可以在 VS 中正常工作而不会出现任何错误。我想知道我们笔记本电脑最近的 Windows 更新是否是罪魁祸首!
  • 笔记本电脑不应该是原因。日期参数值不依赖于语言,只依赖于日期值的表示。但是,您可能需要检查您的服务器是否有影响区域设置的更新。
  • 只有在 VS 2012 中的笔记本电脑上本地预览报告时才会出现该问题,据我了解,它不使用 SQL 服务器来运行报告,仅使用 SQL 数据工具(我可能错了!)。当我们部署报告并通过 IE/Chrome 在开发服务器上运行它们时,它们工作正常。
  • 感谢所有回复,我已成功说服我们的 IT 部门让我向 Microsoft 提出一个案例。解决后我会在此处发布解决方案。
【解决方案2】:

在与 Microsoft 多次讨论后,解决方案是升级到 Visual Studio 2015 的数据工具。此版本不受此问题的影响。工作原理与 .Net 2012 使用的版本有关,但老实说,我们没有进一步了解!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多