【发布时间】:2015-08-27 14:53:19
【问题描述】:
我有 SSRS 报告,我需要根据参数过滤我在报告中创建的静态表。此表没有数据源,我手动输入数据。 tablix 包含 3 列。 如何根据参数过滤列? 例如,我尝试了表达式 =@param1,但它不起作用。 现在我只设法过滤表达式是否在数据源字段上。
【问题讨论】:
标签: visual-studio reporting-services ssrs-tablix
我有 SSRS 报告,我需要根据参数过滤我在报告中创建的静态表。此表没有数据源,我手动输入数据。 tablix 包含 3 列。 如何根据参数过滤列? 例如,我尝试了表达式 =@param1,但它不起作用。 现在我只设法过滤表达式是否在数据源字段上。
【问题讨论】:
标签: visual-studio reporting-services ssrs-tablix
您是否确实有一个表格,其中包含直接写入报告中的多个值?如果是这样,我认为您将无法像您所做的那样有效地对其执行任何过滤,它将数据写入显示的文本框。
我想你最好的选择是创建一个新数据集并用你的静态数据填充它,例如
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
【讨论】:
所以基本上你有一个 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
【讨论】: