【问题标题】:SSRS ExpressionSSRS 表达式
【发布时间】:2015-01-21 20:08:49
【问题描述】:

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

在数据库中,我有一个名为 OpenToPublic 的列,它要么是 0 表示否,要么是 1 表示是。在 CR 中,我创建了一个公式,根据值在报表上显示 Y 或 N:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    现在对于您的表达式,您可以执行以下操作(我假设您的 OpenToPublic 的数据类型是 Bool),

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

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

    【讨论】:

      【解决方案2】:

      让 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")

      【讨论】:

      • 谢谢,我已经通过 SQL 表达式添加了一个 Case 语句。
      • 我会说是明智的选择:)
      猜你喜欢
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多