为什么我的数据集在 ReportServer 中不显示任何字段,我可以让它显示吗?

Why does my Dataset display no fields in ReportServer, and can I get it to do so?

我在 MS SQL Server Report Builder 3.0 的 BIDS 中打开了一份报告,因为我在 SO 上阅读了一个答案,它说这是创建包含所有内容的 table 的最简单方法数据集中的值。

所以我在那里打开了我的 .rdl 文件,select 编辑了插入选项卡,然后是 Table > Table 向导,然后是 "Choose an existing dataset in this report or a shared dataset" 列表中的数据集。

当我 select 单击向导的 "Next" 按钮时,所有列表都是空的(可用字段、列组、行组、值)。

如果我再次 select "Next",我得到,“值字段列表必须包含至少一个字段。

不过,这些是自动填充的,而且,如上所述,就像政治家的大脑一样空洞。

是否因为我的数据集是 StoredProc,而 returns 数据来自临时 table?如果是这样,是否有解决方法?

注意:我也尝试了 Matrix > Matrix Wizard,结果相同。

更新

此外,毫无疑问,当我尝试从 ReportBuilder 中 运行 报告时,我看到:

多么令人反感的发展!

更新 2

当我 return 投标处理项目并尝试在矩阵中添加表达式时,在“编辑表达式”对话框中,在 select 感兴趣的数据集上,我得到, " 数据集没有字段。"

啊,caramba!

更新 3

回应lrb的回答:不知道我的SP是不是真的无法解析;它从临时 table 中获取 return 值 - 这是它的结尾:

SELECT PLATYPUSDESCRIPTION, WEEK1USAGE, WEEK2USAGE, USAGEVARIANCE,
WEEK1PRICE, WEEK2PRICE, PRICEVARIANCE, PRICEVARIANCEPERCENTAGE
FROM #TEMPCOMBINED 
ORDER BY PLATYPUSDESCRIPTION;

这(使用临时 table)可能是问题所在吗?

更新 4

像这样向文本框添加表达式时:

=Fields!PLATYPUSDESCRIPTION.Value

...我在“预览”选项卡上收到以下指手画脚:

报告的定义'bla'无效。文本框 'textbox4' 的值表达式引用字段 'PLATYPUSDESCRIPTION'。报表项表达式只能引用当前数据集范围内的字段,或者如果在聚合内,则引用指定的数据集范围内的字段。

肯定有办法在 SSRS 报告中使用来自临时 tables 的结果,不是吗?

当无法确定地解析查询或存储过程时,就会发生这种情况。例如,如果您的数据集是一个 return 类似于以下内容的存储过程:

IF(@SomVariable=1)
    SELECT 1,2,3,4
ELSE
   SELECT 'A','B','C'

SP中的上述逻辑将是可怕的,但是无法确定字段名称和数据类型。在其他边缘情况下也是如此。

您可以通过修改 sp 并提供干净的 return 语句来欺骗解析器,然后将 sp 改回其原始形式。由于元数据在下一次刷新之前一直存在,因此您的值将保持不变。注意:如果在数据集中 returning 临时 table 时出现问题,请参阅下面的#4。

1.修改现有的存储过程

ALTER PROCEDURE MyProcedureThatDoesNotParse()
AS
BEGIN
    /*COMMENT OUT CURRENT SP LOGIC
    ...
   */
    SELECT 
      MyField1=1,
      MyField2='String',
      MyField3=0.01
END

2。在 SSRS 中刷新数据集的字段。 注意:您将在字段列表中看到 MyField1、MyField2 和 MyField3。

3。还原对存储过程的更改。

4.对于 return 本地#temporary table、全局##temporary table 或 table 值的@variable 的查询或 SP,似乎别名临时结构有效。 I.E

SELECT * FROM #TABLE --Does not always parse in SSRS
SELECT * FROM #TABLE T --Seems to be able to be parsed by SSRS