【问题标题】:Microsoft Reports Adding Two Column ValuesMicrosoft 报告添加两个列值
【发布时间】:2010-12-31 01:21:00
【问题描述】:

是否可以添加两列值说我有 3 列:

Item 1                |    Item 2                |  Total

=Fields!Item1.Value   |   =Fields!Item1.Value    |   ???

我想要避免的(出于可维护性的原因)是这样的:

=Fields!Item1.Value + Fields!Item2.Value

我宁愿寻找类似的东西

Column1Value + Column2Value

谢谢各位!!!!

【问题讨论】:

  • 这是否来自某种数据库,如果是,为什么无法在查询中获得总数?
  • 这来自网络服务,数据集是自定义对象的列表。我可以在对象本身中实现总体逻辑,但它只在报告中有意义,所以我避免在对象中进行总计,因为我最终会在该对象中得到“新的总属性堆”

标签: .net reporting-services reportviewer reportbuilder


【解决方案1】:

听起来您想做的是引用报表对象(文本框)的值,而不是查询中的列。您可以使用 ReportItems! 来做到这一点。

当您从数据集中拖出列时,它可能会在列之后命名文本框,如果列名称可以变化,您将需要为显示该值的文本框分配一个静态值。

因此,在您给出的初始示例中,您将拥有名称为 Item1、Item2 和 Total 的文本框。因此,您需要在相应的 Total 文本框中:

=ReportItems!Item1.Value + ReportItems!Item2.Value

或者,如果您将文本框命名为红色和蓝色,则为:

=ReportItems!Red.Value + ReportItems!Blue.Value

当您点击“!”时,将弹出可用 ReportItems 的列表在 ReportItems 之后。

【讨论】:

  • 我只是用它来做一些变量格式化,比如如果 Total 是 3,那么背景就会变成紫色。我厌倦了两次输入表达式,一次输入值,一次输入颜色。这也使维护变得困难。现在我只做 IIF(ReportItems!Total.Value=3,...)。感谢 D.S. 的回答和 Luis 的提问!
【解决方案2】:

您也可以通过在数据集中添加计算字段来做到这一点。因此,添加您的两个源字段,我们通常将它们称为 Item1Item2 - 将它们的 Source 设置为数据中字段的名称来源。然后添加一个计算字段,通过将字段的 Expression 设置为 =Fields!Item1.Value + Fields!Item2.ValueTotal 到报表数据集/em>。 然后,您可以在报告中的任何位置使用 =Fields!Total.Value 访问计算值。

通过这种方式,您无需修改​​基础数据源即可获得计算,它更易于维护(在一个地方进行计算),它简化了在整个报告中引用计算的过程。

【讨论】:

  • 这一直有效,直到查询中的那些字段名称发生变化。您马上就可以使用字段,这是 OP 说他们不想做的事情。所以这不是答案。您仍然需要使用 ReportItems。更改字段名称的值,让我知道结果如何。
  • 实际上,表达式中使用的那些字段名称(即 Fields!Item1、Fields!Item2)完全由报表作者控制并在报表的 DataSet 元素中指定。数据源的基础字段名称在 RDL 字段元素的“源”中指定。所以报表数据集的字段可以是 Item1,但它可以绑定到数据源中具有不同名称的字段。
  • 是的,就像我说的,更改数据源的字段名称并让我知道会发生什么。当您引用报表项时,它可以从“CustomerTotal”更改为“CusTotalAmt”,并且它仍然有效,因为正在添加文本框的实际值,而不是字段名称的值。
【解决方案3】:

我会在查询中进行加法并将其作为计算字段返回。

例如

SELECT field1, field2, field1 + field2 AS total;

我看不出这有可维护性问题。如果您需要将查询与其他所有内容分开,请考虑使用存储过程或某种工厂来生成查询。

【讨论】:

  • 我正在使用自定义业务对象,这些总数对对象没有意义,而对报告本身没有意义,我想避免在对象本身中计算它..如果可能的话,如果不是那么我将不得不接受建议。谢谢
【解决方案4】:

如果您使用matrix,则您寻求的行为是内置的。

【讨论】:

  • 嗯..不是在我的特殊情况下,因为这些总数不是一行的总数,而是来自 2 列,这意味着我可以有第四列,我不想包含在总数中。希望这是有道理的。
猜你喜欢
  • 2012-03-26
  • 1970-01-01
  • 2015-08-26
  • 1970-01-01
  • 1970-01-01
  • 2015-08-15
  • 1970-01-01
  • 1970-01-01
  • 2017-10-03
相关资源
最近更新 更多