我使用Crystal Reports大约2年了,现在我正在尝试学习SSRS,以便将我们的一些自定义报告转换为SSRS。
在DB中,我有一个名为OpenToPublic的列,其中0表示否,或者1表示是。在CR中,我创建了一个公式,在报表上显示Y或N,具体取决于值:
if {DriveMaster.OpenToPublic} then 'Y'
else 'N'
在SSRS中完成同样的事情的最佳方法是什么?这是表达吗?
答案 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,则为绿色,否则为红色)。
重申一下,如果绝对需要,请选择表达式(例如格式化,可见性等)
较慢的方法是使用表达式。 IIF
和Switch
都可以完成您的工作。以下任何一种表达方式都可以。
=IIF(Fields!OpenToPublic.Value = 1, "Y", "N")
=Switch(Fields!OpenToPublic.Value, 1, "Y", Fields!OpenToPublic.Value, 0, "N")