У меня есть отчет SSRS, и мне нужно отфильтровать статическую таблицу, созданную мной в отчете, на основе параметра. В этой таблице нет источника данных, и я ввожу данные вручную. Табличка содержит 3 столбца. Как фильтровать столбцы на основе параметра? Я попытался в выражении = @ param1, например, но он не работает. На данный момент мне удается только фильтровать, если выражение находится в полях источника данных.filter tablix без значений источника данных в ssrs
ответ
У вас буквально есть таблица с рядом значений, написанных непосредственно в отчете? Если это так, я не думаю, что вы сможете выполнить какую-либо фильтрацию на нем, так как эффективно все, что вы сделали, записывает данные в текстовые поля, которые отображаются.
Я бы предположил, что ваш лучший вариант - вместо этого создать новый набор данных и заполнить его вашими статическими данными, например.
SELECT 'A' AS Letter, 'English' AS Language
UNION
SELECT 'B' AS Letter, 'French' AS Language
UNION
SELECT 'A' AS Letter, 'German' AS Language
Чтобы дать вам следующую таблицу
Letter | Language
-------+----------
A | English
B | French
A | German
Что вы могли бы фильтровать по Letter = A
Так по существу вы табликсе, который имеет 3 колонки предварительно заполнены информацией вы должны вручную сами вошли в текстовые поля? Поскольку вы уже ввели эти данные, я не верю, что есть способ отфильтровать это во время выполнения. Эти данные жестко закодированы по существу. Способность фильтра в SSRS используется в качестве предложения WHERE
, поэтому он ограничивает то, что выдается в отчете из запроса.
Я хотел бы создать подключение источника данных к фиктивной базе данных, создать DataSet и создать запрос, заполняющий временную таблицу, всю информацию, которую вы ввели вручную. Когда вы создадите временную таблицу и вставили в нее значения, вы можете выполнить команду SELECT
с параметром. В Tablix будет заполняться только информация, соответствующая параметру. Что-то в виду:
CREATE TABLE #TempTable (
ID INT
,Name VARCHAR(MAX)
,Email VARCHAR(MAX)
)
INSERT INTO #TempTable (
ID
,Name
,Email
)
VALUES (
1
,'Bob'
,'[email protected]'
)
,(
2
,'Frank'
,'[email protected]'
)
,(
3
,'Jim'
,'[email protected]'
)
SELECT
*
FROM
#TempTable
WHERE
ID = @ID
DROP TABLE #TempTable