SSRS创建具有未知列名称的表达式

时间:2012-08-30 19:48:48

标签: reporting-services ssrs-2008 ssrs-expression

我有一个存储过程,可以将三列数据返回到SSRS报告中。存储过程不会对其中两列进行别名,因此它们将返回未命名的列。以下是返回数据集的示例:

[FundName]      [blank]          [blank]
    Abc         col2val1        col3val1
    Def         col2val2        col3val2
    Ghi         col2val3        col3val3

我希望能够在SSRS中使用表达式来检索第2列和第3列中的值。以下是从FundName检索数据的示例:

=Fields!FundName.Value

有没有办法用列,索引或列的位置替换列名(在本例中为FundName),如下所示:

=Fields![0].Value    //returns FundName values
=Fields![1].Value    //returns column 2 values
=Fields![2].Value    //returns column 3 values

提前谢谢。

2 个答案:

答案 0 :(得分:1)

如果您的存储过程未返回列名称,则无法在SSRS中创建数据集,因为它会引发错误

An item with the same key is already been added

现在可以使用SSRS中的索引来引用列名

答案 1 :(得分:1)

幸运的是,已经找到了实现这一目标的方法。由于我们的存储过程可以更改,并且它没有返回足够的SSRS信息来生成报告(在结果DataSet中缺少列名),我们改变了填充DataSet的方式。

在DataSet查询构建器中,我们创建了一个临时表,并将存储过程插入到该临时表中。插入后,我们选择了填充DataSet的临时表中的所有值。现在,DataSet有3列,包含3个列名,供我们的报告使用。

CREATE TABLE #tempTable (
FundName varchar(50),
col2 dec(15,4),
col3 char(8)
)

insert into #tempTable
exec storedProcedureName

select * from #tempTable

drop table #tempTable

然后,您可以像以前一样访问表达式中的那些列值:

=Fields!FundName.Value    //returns FundName values
=Fields!col2.Value        //returns column 2 values
=Fields!col3.Value        //returns column 3 values

我希望这可以帮助其他人解决这个问题。