【问题标题】:SSRS rdl preview shows date with bad value shows up despite SQL query that should exclude it尽管 SQL 查询应该排除它,但 SSRS rdl 预览显示日期值错误
【发布时间】:2018-11-07 17:37:45
【问题描述】:

SSRS rdl 预览显示日期错误,尽管 SQL 查询应该排除它。

rdl 文件中查询的 xml 是:

  <Query>
    <DataSourceName>ourDataSource</DataSourceName>
    <CommandText>
      use ourDataBase
      ----------------------------------------
      select convert(date, Date1) as ourDate1, count(*) as ourCountForDate
      from ourDataBase.dbo.ourTable
      where
      (
          (Date1 between (getDate()-365) and (getDate()+1) )
      )
      group by convert(date, Date1)
      order by convert(date, Date1)
    </CommandText>
    <rd:UseGenericDesigner>true</rd:UseGenericDesigner>
  </Query>

在 SSMS 中直接使用 TSQL 时,此查询在 SQL 数据库中运行良好。

但是,数据库中有一个奇怪年份的杂散值(例如 7654),它显示在 'preview' 中的 rdl 文件的结果中,但在 SQL 中 NOT -查询结果为 SSMS。

我尝试了很多变体,大于或等于等等,但这个杂散值总是出现。

我正在使用带有底层 TSQL 的 SSRS、Visual Studio 2015。 SSRS 使用 2016/01/reportdefinition。该项目的 SQL 服务器是 SQL Server 2008 R2、2012 或 2014。

有什么想法吗?

【问题讨论】:

    标签: sql-server xml tsql reporting-services rdl


    【解决方案1】:

    最好在 SQL Server 中创建一个存储过程,然后让 SSRS 调用它。也能表现得更好。这使数据控制完全在 SQL Server 中。

    【讨论】:

      【解决方案2】:

      对于那些不想使用存储过程的人(例如,由于必须从不同的数据库区域迁移它们),这对我有用:

      删除关联的“.data”文件也有助于“清理”和“重建”项目。

      您还可以尝试确保年份以 2 开头(或者对于某些人来说小于 3)。 以下是检查从 2 开始的方法:

      (left(Datepart(yyyy, Date1),1) = '2')

      【讨论】:

        猜你喜欢
        • 2022-01-08
        • 2017-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-02
        • 1970-01-01
        • 2023-04-03
        相关资源
        最近更新 更多