SSRS表达

时间:2015-01-21 20:08:50

标签: reporting-services ssrs-2008 ssrs-2008-r2 ssrs-expression

我使用Crystal Reports大约2年了,现在我正在尝试学习SSRS,以便将我们的一些自定义报告转换为SSRS。

在DB中,我有一个名为OpenToPublic的列,其中0表示否,或者1表示是。在CR中,我创建了一个公式,在报表上显示Y或N,具体取决于值:

if {DriveMaster.OpenToPublic} then 'Y'
else 'N'

在SSRS中完成同样的事情的最佳方法是什么?这是表达吗?

2 个答案:

答案 0 :(得分:1)

Expressions中有SSRS来设置计算并为您的字段设置值。 Here is more info.

现在您的表达式可以如下所示(我假设您的OpenToPublic的数据类型为Bool),

= IIF(Fields!OpenToPublic.Value,"Y","N")

在要显示值的cell上设置此表达式。如果您想在dataset中添加计算字段,那么也可以Look here.并为该字段设置相同的表达式。

答案 1 :(得分:0)

让SQL Server处理计算(通过在数据集中执行)而不是SSRS引擎(使用表达式)通常会更快。因此,如果可能,请在数据集中创建其他字段。

修改现有数据集以为新列添加lew列逻辑:

SELECT CASE WHEN OpenToPublic = 1 THEN 'Y' ELSE 'N' END AS DisplayCol
FROM dbo.DriveMaster 

然后只需显示Fields!OpenToPublic.Value之类的列。您甚至可以添加更多格式以根据值更改单元格的颜色(例如,如果是Y,则为绿色,否则为红色)。

重申一下,如果绝对需要,请选择表达式(例如格式化,可见性等)

较慢的方法是使用表达式。 IIFSwitch都可以完成您的工作。以下任何一种表达方式都可以。

=IIF(Fields!OpenToPublic.Value = 1, "Y", "N")

=Switch(Fields!OpenToPublic.Value, 1, "Y", Fields!OpenToPublic.Value, 0, "N")