我创建了一个SSRS报告。
在此报告中,我创建了一个名为:DataSet1 的数据集。DataSet1 包含两列:EntityId(整数)和 Name (Varchar)。如果 EntityId 列中的值之一是"27",我想显示一个文本框。
所以我想写一个表达式来做这个:
如果 DataSet1 中的一行的 EntityId 值为 27,则显示文本框,否则隐藏文本框。
通过阅读其他一些类似的问题,我认为计算行数可能是要走的路。所以它可能是这样的:
计算 DataSet1.EntityId = 27 的行。如果行数大于 0,则显示"SSRS"文本框,否则隐藏文本框。
任何关于表达的帮助将不胜感激
您可以使用简单的表达式轻松完成此操作。
将文本框的hidden
属性设置为
=SUM(IIF(Fields!EntityID.Value = 27,1,0), "DataSet1") = 0
我们在这里所做的只是,从内心的表达开始......
- 检查
EntityID
= 27,如果返回 1,则返回 0。 - 对范围
"DataSet1"
中的每个实例(整个数据集)执行此操作 - 对结果求和
- 测试结果是否为零
如果结果为零(无行 = 27),这将返回True
,因此隐藏文本框
注意:数据集名称必须用引号引起来,并且区分大小写。
为了保持表达式简单,我建议将相应的标志直接添加到数据集中。以下示例:
DECLARE @t TABLE(
EntityID int
,Title nvarchar(10)
)
INSERT INTO @t VALUES
(10, 'Test 1')
,(27, 'Test 2')
,(27, 'Test 3')
,(11, 'Test 4')
,(15, 'Test 5')
,(15, 'Test 6')
,(27, 'Test 7')
SELECT *, COUNT(CASE WHEN EntityID = 27 THEN 1 ELSE NULL END) OVER (ORDER BY (SELECT 1)) AS flag
FROM @t
如果未找到 EntityID 27,则列flag
为 0,如果找到此 ID,则列> 0,因此您的表达式类似于if flag > 0 then...
。