【问题标题】:how to format the specified cell value in two different formats in SSRS Report如何在SSRS报告中以两种不同的格式格式化指定的单元格值
【发布时间】:2019-06-10 08:25:47
【问题描述】:

我有 SSRS 报告数据,我们将在某些单元格中有两个不同的东西,例如: SourceDB 中的旧值

FirstName   LastName 
Robin       Son
BOB         Alice

更新数据库值:

FirstName   LastName 
Robin       S
BOB         A

经过一些更新,我们将在审核表中获得更改和新旧值,因此报告将像这样创建。

FirstName LastName
Robin     was: Son now: S
BOB       Was: Allice now: A

是否可以将 Was 值设为红色,将 now 值设为绿色。 在最坏的情况下,如果无法将整个单元格值变为红色。

感谢您的建议或回答,甚至是反馈。

【问题讨论】:

  • 您的Was:Now: 在您的Audit 表中是否保持一致?

标签: sql-server reporting-services ssrs-2008 ssrs-2012 sqlreportingservice


【解决方案1】:

如果您无法按照 Ashiko 的非常明智的建议更改您的 Audit 表以将 WasNow 值保存在单独的列中,则需要在报告中解析出字符串值的相关部分.

您可以做到这一点的一种方法是通过具有基于表达式的值的placeholders。在您的 SSRS 表中,将 4 个placeholders 添加到基于您的Audit 数据集的表中,并使用以下表达式作为它们的LabelValue

  1. Was: - ="Was: "
  2. Old Value - =replace(left(Fields!LastName.Value,instr(Fields!LastName.Value," Now:")-1),"Was: ","")
  3. Now: - ="Now: "
  4. New Value - =mid(Fields!LastName.Value,instrrev(Fields!LastName.Value,":")+2,99999)

然后,您可以像处理普通文本一样格式化单个 placeholder 项目,使用一种颜色和另一种颜色。

如果你做对了,你应该得到这样的结果:

设计视图:

渲染:


但请注意,如果您确实以这种方式拆分字符串值,如果您正在搜索该模式(例如:旧值中的 Now: 或新值中的 :),您将在您的报告中得到不良结果。

如果这完全是出于监控目的的内部报告,这可能不是问题。但是,如果这将是面向客户的,我强烈建议您在 Audit 表中为 OldNew 值添加额外的列,以实现绝对控制。

【讨论】:

  • 我已经在审计表中有单独的列,但在选择查询中,我正在合并审计表中的结果并将其一起显示在 SSRS 的单个单元格中。
  • 在这种情况下,将值作为 SSRS 数据集中的单独列返回,并根据我上面的回答在第二个和第四个 placeholder 表达式中引用它们。
【解决方案2】:

你试过了吗?

  1. 选择单元格

  2. 按 F4 打开单元格属性或右键单击属性

  3. 在字体选项卡中,选择颜色

4 选择下面的表达式

5 写成

=iif(Fields!ColumnName.Value = "WAS","Red","Green")

【讨论】:

  • 但这会改变整个单元格的格式,我希望 WAS: item 被格式化为该颜色。
  • 您可以创建一个列作为标识符,如果它是或现在,然后在表达式中使用它。在报告中将 WAS 和 NOW 的单元格分开,并为其值创建新列,这样它就不会影响整个单元格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-16
  • 1970-01-01
  • 1970-01-01
  • 2020-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多