带有DateTimes的SSRS图表空白

时间:2013-11-20 23:00:58

标签: datetime charts ssrs-2008

我正在使用SSRS,但无法创建图形图表来显示数据。我的数据集非常简单,因为它只有一列是日期时间字段(称为CreatedOn)。

我的SQL查询是:

SELECT [CreatedOn]
FROM [Incident]
WHERE CreatedOn > DATEADD(m,-11, DATEADD(
    month, DATEDIFF(month, 0,CURRENT_TIMESTAMP), 0))

我的目标是让查询结果显示在图表中,并按年份和月份进行分组,以及排序。例如,我应该能够看到在2005年2月创建了40个事件。这40个事件将以图形方式表示为单个条形图(它是条形图),数字40位于顶部(或某处)。

我的问题是我的图表显示为完全空白,或报告无法运行。当它无法运行时,我收到的错误是:

the value expression for field 'CreatedOn' contains an error: conversion from string 'CreatedOn' to type 'Date' is not valid

我尝试在CreatedOn字段上使用SSRS表达式,例如CDate()FormateDateTime()。这确实会使报告运行,但图表显示为空白。我不认为该字段必须在SSRS中进行格式化或转换,因为它已经是数据库级别的日期时间字段。我尝试了大约10种不同的分组和排序组合,但我的图表总是显示为空白。我甚至在分组和排序表达式中使用CDate()等等,这是图表的一部分。

如何让我的条形图工作(a.k.a.显示日期时间,分组和排序)?

2 个答案:

答案 0 :(得分:0)

我将假设:

  1. 您提取的数据多于“CreatedOn”字段。

    一个。因为如果你不这样做,就很难创建一个图表,因为你没有别的东西可以比较它。

  2. 如果这是一个准确的假设,这里有一个如何创建图表并按日期格式化数据的示例。

    在设计图表时,您需要考虑很多因素。首先,我想确保尽可能少的空数据。这导致图表表现得很不稳定(至少从我的经验来看)。

    其次是如何表示数据。 当我们考虑图表和组时,我们需要考虑几件事情。 有类别组,系列组,然后是值。

    According to Microsoft:图表与Matrix的直接相似。他们的行为方式相同:

    • Matrix的列组类似于图表中的类别组。
    • Matrix的行组类似于图表中的系列组。
    • Matrix的数据区域类似于图表中的值组。

    设置图表: 如果我们想要按年份和月份排序的事件数量,它可能看起来像这样:

    分类年份(您可以在此处按表达式使用您的论坛)=Year(Fields!CreatedOn.Value) 事件将出现在值部分=Count(Fields!Incidents.Value)

    一旦你有了工作并显示数据,我就会开始添加本月的数据。再次考虑如何显示数据。然后,您可以使用月份功能在另一个类别下添加第二个分组。

    Another Useful link on charts(我知道这有点旧,但它的细节仍然相关)

    * 旁注 :处理日期时,如果SSRS没有将某些内容识别为日期,则可能会有点棘手。这是我在处理日期时使用的有用链接。 Dates

    我希望这有帮助!

答案 1 :(得分:0)

问题是CreatedOn日期字段未正确定义。

我的数据源是使用依赖于参数的表达式定义的,使用表达式:="Data Source=sql01;" & "Initial Catalog=" & Parameters!ParentID.Value。由于必须在报表的运行时定义数据集,因此无法使用“刷新字段”按钮刷新数据集中的字段。

我认为我可以通过手动定义CreatedOn字段来解决这个问题。在第一次尝试时,SSRS在运行时抛出一个错误,声称我正在尝试将字符串转换为日期,这基本上意味着它将数据集中定义的CreatedOn字段视为字符串。所以我接着尝试在字段的定义中使用CDate()表达式,但这给我留下了一个完全空白的图。

解决方案是:

  1. 删除我已在数据集中定义的所有字段
  2. 暂时将我的数据源硬编码为使用数据库(Data Source=sql01;Initial Catalog=MyDatabaseName
  3. 单击数据集
  4. 中的“刷新字段”按钮
  5. 返回将数据源设置为我想要的原始数据源,这取决于参数。