我已经使用 Crystal Reports 大约 2 年了,现在我正在尝试学习 SSRS,以便将我们的一些自定义报表转换为 SSRS。
在数据库中,我有一个名为 OpenToPublic 的列,它要么是 0 表示否,要么是 1 表示是。在 CR 中,我创建了一个公式,根据值在报表上显示 Y 或 N:
if {DriveMaster.OpenToPublic} then 'Y'
else 'N'
在 SSRS 中完成同样事情的最佳方法是什么?是表达吗?
我已经使用 Crystal Reports 大约 2 年了,现在我正在尝试学习 SSRS,以便将我们的一些自定义报表转换为 SSRS。
在数据库中,我有一个名为 OpenToPublic 的列,它要么是 0 表示否,要么是 1 表示是。在 CR 中,我创建了一个公式,根据值在报表上显示 Y 或 N:
if {DriveMaster.OpenToPublic} then 'Y'
else 'N'
在 SSRS 中完成同样事情的最佳方法是什么?是表达吗?
让 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")