SSRS Создание выражения с неизвестными именами столбцов

У меня есть хранимая процедура, которая возвращает данные в три столбца в наш отчет 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

Заранее спасибо.


person StoriKnow    schedule 30.08.2012    source источник


Ответы (2)


Если ваша хранимая процедура не возвращает имена столбцов, вы не можете создать набор данных в SSRS, так как это вызовет ошибку

An item with the same key is already been added

и теперь вы можете ссылаться на имя столбца, используя индекс в SSRS

person praveen    schedule 31.08.2012
comment
Спасибо за комментарий, но он неверный. SSRS не выдаст ошибку, если хранимая процедура возвращает столбцы без имен столбцов. Набор данных все равно будет заполнен, я знаю это, потому что это было именно так для моего отчета. Однако точный доступ к столбцам невозможен. Как вы говорите, вы не можете получить доступ к столбцу по индексу в SSRS. Если во всех столбцах в наборе данных отсутствуют имена столбцов, службы SSRS просто будут использовать первый столбец в наборе. Мы решили проблему другим способом (см. мой ответ выше) - person StoriKnow; 31.08.2012

К счастью, способ сделать это был найден. Поскольку нашу хранимую процедуру нельзя было не изменить и она не возвращала достаточно информации для SSRS для создания отчета (отсутствуют имена столбцов в результирующем наборе данных), мы изменили способ заполнения нашего набора данных.

В построителе запросов 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

Я надеюсь, что это поможет кому-то еще с этой конкретной проблемой.

person StoriKnow    schedule 31.08.2012