SSRS报告未显示数据

时间:2012-07-06 09:08:13

标签: sql sql-server reporting-services reportingservices-2005

我刚刚创建了一个SQL Server 2005 SSRS报告,并且数据未显示在“预览”窗格中。

根据String参数从存储过程中正确填充数据集。我可以在“数据”窗格中执行它。在“预览”窗格中运行报表时,将显示正确的行数,但单元格的内容不包含任何数据

Missing Data

源数据集基于存储过程,在SQL Server 2005中传入String参数,返回临时表的内容。然后,数据集将字段映射到本地。我可以在数据视图中正确执行此操作。

存储过程

ALTER PROCEDURE spWebReportStage25BuildReview
    @BuildNumber as nvarchar(50)

临时表架构

CREATE TABLE #tmpModelZones
(
    BuildID bigint NOT NULL,
    BuildNo nvarchar(50) NOT NULL,
    ModelID int NOT NULL,
    ModelName nvarchar(50) NOT NULL,
    ZoneID int NOT NULL,
    ZoneName nvarchar(50) NOT NULL,
    SortOrder int NOT NULL,
    Created bit DEFAULT 0 NOT NULL,
    Closed bit DEFAULT 0 NOT NULL,
    PRIMARY KEY (BuildID, ZoneID)
)

SSRS数据集

enter image description here

SSRS数据集映射

enter image description here

SSRS数据集参数 enter image description here

使用参数

执行数据集

enter image description here

显示的表格上没有其他分组,过滤器或聚合。它只是一张平台

6 个答案:

答案 0 :(得分:11)

之前从未见过这个。但是,SSRS有时会有点“关闭”,所以这里有一个要尝试的事项列表。我担心其中大多数都是“你试过把它关掉再打开吗?”。

  • 删除与报告相关联的.data文件
  • 复制/备份报告,并尝试在全新的基本Tablix中添加数据集以查看是否显示数据。
  • 检查隐藏属性。不要忘记(出于一些愚蠢的原因)它不是(像任何其他理智的产品)可见 Y / N字段,而是隐藏 Y / N字段。
  • 仔细检查字体颜色和大小
  • 在报告服务器上运行报告(而不是预览)以检查是否有效。
  • 使用一些临时文本框显示参数的实际值,以检查它们是否与测试运行数据集时完全相同。
  • 检查代码隐藏(rdl中的xml)是否有Tablix中的意外过滤器,隐藏属性,表达式等。即使你不能完全“阅读”RDL,使用语法高亮显示你应该能够浏览它并提取大量信息。
  • 检查 ExecutionLog2 和其他日志记录内容,了解报告运行中返回的行数。

此外,如果您使用更多信息更新/编辑您的问题,将会有所帮助:

  • Tablix有哪些分组?
  • Tablix,行组和列组有哪些过滤器?
  • 数据集的一般结构是什么,结果如何?
  • 如何构建和使用参数?

答案 1 :(得分:8)

使用临时表时,SSRS无法获取元数据。因此,基本上有两种让SSRS知道列名的方法:

  1. 添加SET FMTONLY ON。这将检索元数据,但不会显示数据。

  2. 转到DATA选项卡并单击Generic查询设计器,然后单击刷新字段。这将提示用于指定参数值的对话框。当我们在查询设计器中运行查询时,SSRS从存储过程中获取模式和数据。现在,数据将在预览窗格中显示。

答案 2 :(得分:3)

我遇到了同样的问题。这是我发现的。这是我的代码:

    DECLARE @tblPigProblems TABLE (
    Id          INT IDENTITY, 
    PPId            INT, 
    GaugeColor      VARCHAR(25), 
    FullStartTime       VARCHAR(25), 
    PigSystem         VARCHAR(25)
    )

    IF (1 = 0)
    BEGIN
        SELECT * FROM @tblPigProblems
    END

    ...

    SELECT '@tblPigProblems'    [PigProblems],  
    @p_vchLine      [Line],         
    GaugeColor      [Product],
    FullStartTime       [Start Time],
    PigSystem       [Pig System]
FROM @tblPigProblems

我所做的是使用初始的“SELECT * FROM @tblPigProblems”来确保如果在返回数据集的最终select语句之前在代码中指定了任何错误消息,那么SSRS就能够确定存储的字段程序。然后,当确定结果时,我为字段分配了别名。问题是字段的别名与声明的字段名称不匹配(即:声明的字段“GaugeColor”与我在select中提供的别名“[Product]”不匹配以创建结果集。我的方式意识到这是当我刷新SSRS报告的数据部分中的字段,然后显示数据集字段时,它列出了表声明中的字段名称(即:“GaugeColor”)。当我在数据集中执行存储过程时(单击!),SSRS中列出的结果集显示了字段别名(即:“Product”)。由于这些不匹配,因此我在分配字段的文本框中没有显示任何内容(即:“= Fields !ColorGauge.Value“)。SSRS没有发现这种差异并允许创建报告,但没有显示任何值。修复很简单,替换:

    IF (1 = 0)
    BEGIN
        SELECT * FROM @tblPigProblems
    END

使用:

    IF (1 = 0)
    BEGIN
        SELECT '@tblPigProblems'    [PigProblems],  
        @p_vchLine      [Line],         
        GaugeColor      [Product],
        FullStartTime   [Start Time],
        PigSystem       [Pig System]
    FROM @tblPigProblems
    END

答案 3 :(得分:3)

我也有类似的问题。在我的情况下,它甚至没有任何参数或任何东西,只是你能想象的最简单的报告。它包括一个带有单个字段的表,没有使用过滤器。我确实设法查看了一些数据,但只显示了那些不适合单元格的行,从而迫使行高增加。

我对此问题的修复:从标准(大小10,Segoe UI)更改字体或字体大小。然后,显示所有数据。将此更改回Segoe UI会使数据再次消失。

答案 4 :(得分:2)

我有一个工作报告停止显示数据的情况。我添加了另一个没有格式化的表,链接到同一个数据集 - 验证了SSRS传递参数时查询不再返回数据。在调查之后,我注意到我的测试参数是一个"锚定日期" value的格式为YYYY-MM-DD,在我更新的查询中,我假设日期参数中的字符顺序(截断为YYYY-MM进行一次连接)。

我怀疑SSRS可能以不同的格式传递日期(MM / DD / YY是我目前的日期默认文化设置)。因此,我以预感运行,将我的SQL逻辑更改为使用任何传递的日期格式。 - 例如left(convert(date,@ anchorDate,20),7)

这解决了我的问题 - 我测试过的格式假设(用于在开发时测试查询的硬编码值)是错误的假设。 SSRS也可以以本地格式传递数据 - 所以一定要注意这种假设。

答案 5 :(得分:0)

我遇到了同样的问题,因此尝试检查tablix的优先级。我通过将CANGROW的值更改为FALSE来解决了这个问题。