为什么我的数据集在 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
我在 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