2015-08-27 2 views
0

У меня есть отчет SSRS, и мне нужно отфильтровать статическую таблицу, созданную мной в отчете, на основе параметра. В этой таблице нет источника данных, и я ввожу данные вручную. Табличка содержит 3 столбца. Как фильтровать столбцы на основе параметра? Я попытался в выражении = @ param1, например, но он не работает. На данный момент мне удается только фильтровать, если выражение находится в полях источника данных.filter tablix без значений источника данных в ssrs

ответ

1

У вас буквально есть таблица с рядом значений, написанных непосредственно в отчете? Если это так, я не думаю, что вы сможете выполнить какую-либо фильтрацию на нем, так как эффективно все, что вы сделали, записывает данные в текстовые поля, которые отображаются.

Я бы предположил, что ваш лучший вариант - вместо этого создать новый набор данных и заполнить его вашими статическими данными, например.

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

0

Так по существу вы табликсе, который имеет 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