0

SSRS レポートに 3 列分のデータを返すストアド プロシージャがあります。ストアド プロシージャはこれらの列の 2 つに別名を付けないため、名前なしで返されます。返されるデータセットの例を次に示します。

[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 に答える