我刚刚创建了一个SQL Server 2005 SSRS报告,并且数据未显示在“预览”窗格中。
根据String参数从存储过程中正确填充数据集。我可以在“数据”窗格中执行它。在“预览”窗格中运行报表时,将显示正确的行数,但单元格的内容不包含任何数据
源数据集基于存储过程,在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数据集
SSRS数据集映射
SSRS数据集参数
使用参数
执行数据集
显示的表格上没有其他分组,过滤器或聚合。它只是一张平台
答案 0 :(得分:11)
之前从未见过这个。但是,SSRS有时会有点“关闭”,所以这里有一个要尝试的事项列表。我担心其中大多数都是“你试过把它关掉再打开吗?”。
.data
文件。此外,如果您使用更多信息更新/编辑您的问题,将会有所帮助:
答案 1 :(得分:8)
使用临时表时,SSRS无法获取元数据。因此,基本上有两种让SSRS知道列名的方法:
添加SET FMTONLY ON
。这将检索元数据,但不会显示数据。
转到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
来解决了这个问题。