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