【问题标题】:SSRS report not displaying dataSSRS 报告不显示数据
【发布时间】:2012-07-06 09:08:13
【问题描述】:

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

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

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

存储过程

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 数据集

SSRS 数据集映射

SSRS 数据集参数

使用参数执行数据集

显示的表格上没有其他分组、过滤器或聚合。简直就是一张平桌

【问题讨论】:

  • 误将单元格的初始可见性属性更改为隐藏?
  • 不,所有项目的 Hidden 都是 False
  • 哎呀,我从来没有看到你正在使用临时表。我认为问题是 ssrs 在使用临时表时无法获取元数据
  • 刚才我试图重现你的问题。为了在预览窗格中获取数据,您需要进入数据选项卡中的通用查询设计器,单击刷新按钮。它会询问 fr 参数然后执行它。现在当您返回预览窗格并传入参数然后你会得到数据
  • 普拉文的最高职位。请创建一个新答案,我会将其标记为答案。

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


【解决方案1】:

以前从未见过。但是,SSRS 有时可能会有点“关闭”,所以这里列出了一些可以尝试的方法。恐怕其中大多数都是“您尝试将其关闭然后再打开吗?”类型。

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

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

  • tablix 有哪些分组方式?
  • tablix、行组和列组上的过滤器是什么?
  • 数据集的一般结构及其结果是什么?
  • 参数的结构和使用方式如何?

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      我对此问题的解决方法:从标准更改字体或字体大小(大小 10,Segoe UI)。然后,所有数据都显示出来了。将其更改回 Segoe UI 会使数据再次消失。

      【讨论】:

      • 这正是发生在我身上的事情。无论如何,这些字段都以打印预览模式显示。疯了!
      【解决方案4】:

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

          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”来确保如果在最终选择语句返回数据集之前在代码中指定了任何错误消息,SSRS 能够确定存储的字段程序。然后,当结果确定后,我为这些字段分配了一个别名。问题是字段的别名与声明的字段名称不匹配(即:声明的字段“GaugeColor”与我在选择中提供的别名“[Product]”不匹配以创建结果集。我的方式意识到这是当我刷新SSRS报告的Data部分中的字段,然后显示数据集字段时,它列出了表声明中的字段名称(即:“GaugeColor”)。当我在数据集中执行存储过程时(点击!),SSRS 中列出的结果集显示了字段别名(即:“产品”)。由于这些不匹配,因此我将字段分配给的文本框中没有显示任何内容(即:“=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
      

      【讨论】:

        【解决方案5】:

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

        我怀疑 SSRS 可能会以不同的格式传递日期(MM/DD/YY 是我当前默认日期的文化设置)。因此,凭着这种预感,我改变了我的 SQL 逻辑以使用任何传递的日期格式。 - 例如左(转换(日期,@anchorDate,20),7)

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-11-19
            • 2013-02-04
            • 2023-03-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多