在 Visual Studio 中为 SQL Server 上运行的报表设置数字格式

Posted

技术标签:

【中文标题】在 Visual Studio 中为 SQL Server 上运行的报表设置数字格式【英文标题】:Formatting number in Visual Studio for reports running on SQL Server 【发布时间】:2016-03-22 12:21:37 【问题描述】:

我需要格式化一个带有空格的数字作为千位分隔符并且没有小数。 例如。在 SQL Server 上运行的报告上的“1234567890123,4321”到“1 234 567 890 123”。

在占位符属性 --> 数字 --> VS 中的自定义下,可以在报告中格式化数字。

我可以让它工作的唯一方法是使用格式字符串“### ### ### ### ###。”

问题是,如果数字变大,我不会得到空格分隔符,数字将看起来像:'543211 234 567 890 123'

尝试(以及其他)制作类似“# ###.”的模式,但没有成功。

如果它应该能够处理任何数字,你知道用什么作为模式吗?

干杯 /J

【问题讨论】:

我很好奇为什么你没有标记任何答案是正确的?如果答案不充分,欢迎您发表评论,但请注意,如果他们解决了您的问题,请将其标记为正确至关重要,否则对于任何未来的读者来说,问题仍然没有得到解决。 【参考方案1】:

转到Report 菜单/Report Properties... 并选择Code 选项卡。在文本区域中输入以下代码。

Public Function MySplit(input as String) As String
  Const charNumber = 3
  Dim sb As New System.Text.StringBuilder()
  For i As Integer = 0 To input.Length - 1
  If i Mod charNumber = 0 Then
    sb.Append(" "c)
  End If
  sb.Append(input(i))
  Next
  Dim newString = sb.ToString()
  Return newString
End Function

现在使用 tablix 中的函数:

=StrReverse(Code.MySplit(StrReverse(Cstr(FLOOR(Fields!Value.Value)))))

Fields!Value.Value 替换为您要格式化的字段。

在这样的 tablix 中

它会产生这样的东西:

或者,您可以使用Format 属性中的Switch 函数来根据字段长度确定字段所需的格式:

=Switch(
LEN(Cstr(Floor(Fields!Value.Value)))<4,"###",
LEN(Cstr(Floor(Fields!Value.Value)))<5,"# ###",
LEN(Cstr(Floor(Fields!Value.Value)))<6,"## ###",
...,...
...,...
)

它有效,但添加每个案例可能很乏味。

如果这有帮助,请告诉我。

【讨论】:

以上是关于在 Visual Studio 中为 SQL Server 上运行的报表设置数字格式的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 2013 中为性能分析器设置环境变量

如何在 Visual Studio 2013 中为 sqlite 配置实体框架 6

如何在 Visual Studio Code 中为 Python 设置虚拟环境?

如何在 Visual Studio Code 中为 React Native 设置调试?

如何在 Visual Studio 2017 中为 Linux 应用启用多线程

在 Visual Studio 2015 中为自定义代码分析器抑制警告