【问题标题】:SSRS Custom Code LoopSSRS 自定义代码循环
【发布时间】:2017-01-10 20:44:19
【问题描述】:

谁能在这里解释一下循环(For,While)循环是如何工作的

A      B
Apple  13
Grape  5
Orange 16  

我已经编写了这段代码,但在这里不起作用。

Public Function SafeConvert(ByVal num As String) As String

Dim S as Integer
For i as Integer = 0 to 2
  s += num
next
Return s

End Function

SSRS 不是添加每个数字,而是仅添加最后一个单元格 16 * 3 次并显示不正确的结果。

你能不能也回答一下这个问题。

我有一个矩阵,其文本框包含 3 个值,如果值小于 5,我如何计算 Q27_A_1 的所有值的总和?

【问题讨论】:

  • 您的 tablix 似乎没有任何组,因此它显示了最后一行的计算结果。另请注意,您可以将代码中的 FOR 循环替换为 num * 3,即使您不需要自定义代码来获得您想要的内容。更好地解释并添加示例数据和预期结果示例。
  • 让我更深入地解释我的问题。我有一个数据集,我需要计算所有值的总和,例如 13、、16,所以我希望输出为 *。由于“”不能添加到数值中。根据我选择的参数,行值的数量会改变我希望结果发布 34 而不是(最后一行 B 组值 = 16*3=54)A B 苹果 5 葡萄 *(如果在某些情况下是 13 橙子 16我想要输出,所有这些值的总和。还有其他方法吗,请帮助我
  • 在 SSRS 中尝试=SUM(CINT(Fields!B.Value)),假设 B 是一个字符串列(varchar、nvarchar、text...)。这个不用自定义代码了。
  • 我们不接受“帮我解决这个问题”的问题,@AvinashKumar - 我已经删除了这些请求。这类问题在这里很快就解决了。

标签: reporting-services ssrs-2008 ssrs-2008-r2 ssrs-2012 ssrs-tablix


【解决方案1】:

您无需使用任何自定义代码即可实现此目的。如果您确信所有字符串值实际上都是数字,则可以在 tablix 表达式中使用众多转换函数之一以及 sum 将所有内容相加。

对于整数:

=sum(cint(Fields!B.Value))

对于十进制值:

=sum(cdec(Fields!B.Value))

对于双精度值:

=sum(cdbl(Fields!B.Value))

要使用这些表达式,您需要根据数据集向 Tablix 添加一个组,并将这些表达式放入您的 Group Total 文本框中。


要总结所有小于 5 的值,您需要在您的 tablix 上有一个组,您可以使用 sum 函数。但是,在这种情况下,您需要将任何大于或等于 5 的值替换为 0,因此它们不会添加到 sum 的总数中:

=sum(iif(Fields!Q27_A_1.Value < 5, Fields!Q27_A_1.Value, 0))

【讨论】:

    【解决方案2】:

    是的,我理解您使用 Sum 函数执行此操作的观点。使用 Sum 函数很容易实现这一点。但是我有一个包含 5000 多个矩阵框的巨大报告,我需要申请它。所以只想确认自定义代码是否在这里有效,以及这行代码有什么问题。

    公共函数 SafeConvert(ByVal num As String) As String

    将 S 调暗为整数

    对于 i as Integer = 0 到 2

    s += 数量

    下一个

    返回

    结束函数

    它所做的只是将最后一个单元格添加 3 次。我想在运行时添加单元格的所有值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多