带有日期时间的 s-s-rS 图表空白

Posted

技术标签:

【中文标题】带有日期时间的 s-s-rS 图表空白【英文标题】:s-s-rS Chart Blank with DateTimes 【发布时间】:2013-11-20 23:00:57 【问题描述】:

我正在使用 s-s-rS,但无法创建图形图表来显示数据。我的数据集非常简单,因为它只有一列是日期时间字段(称为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 字段上使用s-s-rS 表达式,例如CDate()FormateDateTime()。这确实使报告运行,但图表显示为空白。我不认为该字段必须在 s-s-rS 中进行格式化或转换,因为它已经是数据库级别的日期时间字段。我尝试了大约 10 种不同的分组和排序组合,但我的图表总是显示为空白。我什至在作为图表一部分的分组和排序表达式中使用了CDate() 等等。

如何让我的条形图正常工作(也就是显示日期时间、分组和排序)?

【问题讨论】:

当您在 SQL 中运行该查询时,它会提供数据还是给您一个错误?还是该错误仅发生在 s-s-rS 中?您还可以在查询中执行“按 Createdon 排序”,以便在数据进入报告之前设置订单。您也可以使用 Format(Fields!CreatedOn.Value, "MM/dd/yy") 代替 CDate();这通常在我的报告中有效。你能张贴几张你的报告的屏幕截图或概述分组吗?分组可能是个棘手的问题! 查询在 SQL 中直接运行时返回结果。分组公式为=Year(Fields!CreatedOn.Value)=Month(Fields!CreatedOn.Value),其中年份分组在前。 【参考方案1】:

我要打破假设:

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

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

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

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

其次是数据的表示方式。 当我们考虑图表和组时,我们有几件事要考虑。 有类别组、系列组,然后是值。

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

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

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

按类别划分的年份(您可以在此处按表达式使用您的组)=Year(Fields!CreatedOn.Value) 事件将在“值”部分中=Count(Fields!Incidents.Value)

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

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

*旁注:处理日期时可能会有些棘手,尤其是在 s-s-rS 无法将某些内容识别为日期的情况下。这是我在处理日期时使用的一个有用的链接。 Dates

我希望这会有所帮助!

【讨论】:

感谢您的帮助。我已经几乎遵循了您回答中概述的一般建议。您可以查看我的答案以获得精确修复。【参考方案2】:

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

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

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

解决办法是:

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

【讨论】:

以上是关于带有日期时间的 s-s-rS 图表空白的主要内容,如果未能解决你的问题,请参考以下文章

带有公式的 s-s-rS 日期默认值禁用参数

s-s-rS 范围图系列位置

s-s-rS 空白页

s-s-rS 图表 - 显示图例和百分比

如何从 s-s-rS 2008 中具有日期类型的列中删除时间部分?

Google Chart API:折线图 - 图表日期与日期?