В идеале вы хотели бы присоединиться к таблицам в своем первоначальном запросе, но вы можете иметь два отдельных набора данных в своем отчете и использовать функцию поиска, чтобы делать то, что вам нужно. Функция Lookup выполняет 4 параметра; в вашем случае вы должны заполнить: поле Идентификатор из первого набора данных, поле Идентификатор из второго набора данных, поле имени пользователя из второго набора данных, имя набора данных. См. Статью MSDN для получения дополнительной информации: http://msdn.microsoft.com/en-us/library/ee210531.aspx
Хорошим способом фильтрации данных является использование функции разделения. Установите параметр SSRS быть значения, разделенные запятыми или даже многозначным, а затем вы можете использовать функцию табличное значение ниже, чтобы превратить его в временную таблицу для использования в запросе:
CREATE FUNCTION Split (@origString varchar(max))
returns @temptable TABLE (items varchar(max))
as
begin
declare @idx int
declare @split varchar(max)
set @idx = 1
if datalength(@origString)<1 or @origString is null
return
while @idx <> 0
begin
set @idx = charindex(',', @origString)
if @idx <> 0
set @split = left(@origString, @idx - 1)
else
set @split = @origString
if(datalength(@split) > 0)
insert into @temptable(Items) values(ltrim(rtrim(@split)))
set @origString = right(@origString, datalength(@origString) - @idx)
if datalength(@origString) = 0
break
end
return
end
Тогда ваш запрос мог бы включите что-то подобное в качестве фильтра:
SELECT *
FROM Table1 as T1
INNER JOIN Split(@SSRScsvParameter) as T2 on T1.ID = T2.ID
Мне нравится это решение. Еще одна вещь, которая была запрошена мной, - это ограничить отчет на основе перечня или массива. В SQL что-то вроде SELECT * FROM a WHERE a.b_Id IN (SELECT Id FROM c). Проблема, с которой я сталкиваюсь сейчас, заключается в том, что, хотя я создал хранимую процедуру, в которой я передаю определенный пользователем тип таблицы, я не могу передать ее в качестве параметра через Reporting Services. Кто-нибудь знает об этом? Я думал об использовании DataSet в качестве источника данных служб Reporting Services, но не нашел для этого последних примеров. –
ОК, см. Мои правки. – StevenWhite
Мне это нравится и думаю, что это сработает для меня. Было бы неплохо, если бы я мог передавать пользовательский тип таблицы, но на самом деле это лучше, потому что он более общий, и теперь я могу использовать функцию split в большем количестве мест. –