带有日期时间的 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 图表空白的主要内容,如果未能解决你的问题,请参考以下文章