在ssrs中过滤没有数据源值的tablix

时间:2015-08-27 14:53:19

标签: visual-studio reporting-services ssrs-tablix

我有SSRS报告,我需要根据参数过滤我在报告中创建的静态表。此表没有数据源,我手动输入数据。 Tablix包含3列。 如何根据参数过滤列? 我试着在表达式= @ param1中作为示例,但它不起作用。 现在我只设法过滤表达式是否在数据源字段上。

2 个答案:

答案 0 :(得分: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

进行过滤

答案 1 :(得分:0)

所以基本上你有一个Tablix有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'
    ,'bob@email.com'
    )
    ,(
    2
    ,'Frank'
    ,'frank@email.com'
    )
    ,(
    3
    ,'Jim'
    ,'jim@email.com'
    )
SELECT
    *
FROM
    #TempTable
WHERE
    ID = @ID
DROP TABLE #TempTable