0

我有一个存储过程,可以将三列数据返回到我们的 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

先感谢您。

4

2 回答 2

1

如果您的存储过程没有返回列名,那么您不能在 SSRS 中创建数据集,因为它会引发错误

An item with the same key is already been added

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

于 2012-08-31T06:01:11.317 回答
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

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

于 2012-08-31T13:26:45.467 回答