【问题标题】:SSRS Format a multi-value fieldSSRS 格式化多值字段
【发布时间】:2014-07-30 18:18:16
【问题描述】:

我的 ssrs 报告中有一个数字字段,其中有多个值,用逗号分隔。我想将数字转换为货币,但当字段超过值时出现错误。我正在将文本框转换为货币并添加 (*) 运算符以乘以 0.01,这样我的数字就不会被夸大。我确定逗号是导致错误的原因,因为 BIDS 需要一个数字,但我不确定如何编写表达式,以便它只修改字符串中的数字。

=Fields!field_A.Value * .01

Field
Number1 = converts to currency($Number1)
Number1, Number2 = #Error
number1, number2, number3 = #error

【问题讨论】:

  • 查看这篇文章 - 如果您只需要从字段中提取 Number1 部分,您可以使用答案的代码(修改为基于逗号而非空格提取)。 stackoverflow.com/questions/5819335/…
  • 文本框字段的完整表达式是什么?
  • 我不想提取,我希望附加数字值也具有货币值。所以如果 Number1, Number2 = $number1, $number2 如果有第三个值,则相同
  • 您还需要小数,还是只需要 $ 符号?
  • 需要小数。我从 ssms 获取数字,所以如果值为 1000,我需要它为 10.00 美元。这就是为什么我乘以 .01

标签: sql reporting-services bids ssrs-grouping


【解决方案1】:

您可以使用报表中的嵌入代码来处理字符串。这允许您使用完整的 VB.NET 语言。从 SSRS 的报告菜单中选择 Report Properties 并选择左侧的 Code 部分。 (这是在 VS2010 中,我不确定您正在构建的 SSRS 版本。)

然后您可以使用如下所示的 VB.NET 函数来进行实际的字符串处理。我不确定您想要输出的确切方式,因此您需要阅读 FormatNumber() VB.NET 函数上的 MSDN 页面。

Function ConvertCashString(orig As String)
    Dim newString As String = ""
    For Each s As String In orig.Split(",")
        Dim parsedString As Double
        If (Double.TryParse(s, parsedString)) Then
            newString += "$" + FormatNumber(parsedString * 0.01, 2, TriState.True, TriState.UseDefault, TriState.False) + ", "
        End If
    Next

    Return newString
End Function

然后在报告本身中,您可以像这样调用函数:

 =Code.ConvertCashString(Fields!dbString.Value)

您还应该阅读 MSDN 页面:Add Code to a Report (SSRS)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多