Datetime 带日期时间的SSRS空白图表

Datetime 带日期时间的SSRS空白图表,datetime,charts,ssrs-2008,Datetime,Charts,Ssrs 2008,我正在使用SSRS,在创建图形图表以显示数据时遇到了问题。我的数据集非常简单,因为它只有一列是日期时间字段(称为CreatedOn) 我的SQL查询是: SELECT [CreatedOn] FROM [Incident] WHERE CreatedOn > DATEADD(m,-11, DATEADD( month, DATEDIFF(month, 0,CURRENT_TIMESTAMP), 0)) 我的目标是让查询结果显示在一个图表中,并按年份和月份进行分组,以及排序。例如,

我正在使用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位于顶部(或某处)

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

字段“CreatedOn”的值表达式包含错误:从字符串“CreatedOn”到类型“Date”的转换无效

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


如何使条形图正常工作(即显示日期时间、分组和排序)?

我将不再假设:

  • 除了“CreatedOn”字段外,您还有更多的数据被提取

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

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

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

    第二个问题是如何表示数据。 当我们想到图表和组时,我们有几件事要考虑。 有类别组、系列组,然后是值

    :图表与矩阵有直接的相似性。它们的行为方式相同:

    • 矩阵的列组与图表中的类别组相似
    • 矩阵的行组与图表中的系列组相似
    • 矩阵的数据区域与图表中的值组的数据区域相似
    设置图表: 如果我们希望事件的数量按年份和月份排序,它可能会如下所示:

    按年分类(您可以在此处按表达式使用分组)
    =年(字段!CreatedOn.Value)
    事件将位于值部分
    =Count(Fields!events.Value)

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

    (我知道这有点过时,但细节仍然相关)

    *旁注:在处理日期时,可能会有点棘手,特别是当SSRS没有识别某个日期时。这里是一个有用的链接,我在处理日期时使用过。


    我希望这有帮助

    问题在于未正确定义
    CreatedOn
    date字段

    我的数据源是使用一个依赖于参数的表达式定义的,该表达式使用以下表达式:
    =“data source=sql01;”和“Initial Catalog=“¶meters!”!ParentID.Value
    。因为数据集必须在报表运行时定义,所以我无法使用“刷新字段”按钮刷新数据集中的字段

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

    解决办法是:

  • 删除数据集中已定义的所有字段
  • 临时硬编码我的数据源以使用数据库(
    datasource=sql01;initialcatalog=MyDatabaseName
  • 单击数据集中的“刷新字段”按钮
  • 返回,将数据源设置为我想要的原始数据源,这取决于参数

  • 当您在SQL中运行该查询时,它会提供数据还是给您一个错误?或者错误只发生在SSR中?您还可以在查询中执行“Order by Createdon”,以便在数据进入报表之前设置订单。您还可以使用格式(Fields!CreatedOn.Value,“MM/dd/yy”)代替CDate();这通常在我的报告中起作用。你能发布几张你报告的屏幕截图或概述分组吗?分组可能是一个棘手的野兽!直接在SQL中运行时,查询将返回结果。分组公式为
    =Year(Fields!CreatedOn.Value)
    =Month(Fields!CreatedOn.Value)
    ,首先分组年份。感谢您的帮助。我已经大致遵循了你在答复中概述的一般建议。你可以看到我精确的答案。