【问题标题】:SSRS - How to get a part of a stringSSRS - 如何获取字符串的一部分
【发布时间】:2015-06-22 08:04:39
【问题描述】:
我有一个名为 Analyst group 的参数,格式如下:
[Dimension].[Analyst Group].&[Nl.Workplace.Foundation]
我想将此参数传递给另一个报表,以过滤数据。它是一个多值参数。但是其他报告只接受这种格式:[KanBan].[Analyst Group].&[Nl.Workplace.Foundation]
所以我试图隔离“Nl.Workplace.Foundation”,所以我可以在 Go To Report 参数表达式中执行以下操作:="[KanBan].[Analyst Group].&["& --Isolated analyst group-- &"]" 以创建所需的格式。
所以我需要提取 .&[ 和 ] 之间的部分
但我真的不知道如何隔离字符串的那部分。
【问题讨论】:
标签:
string
reporting-services
split
between
【解决方案1】:
找到了解决办法!如果我只使用Parameter.label 而不是Parameter.value 它会自动执行我想要的操作!
【解决方案2】:
已找到不同的解决方案,但我仍会回答最初的问题。它可能会有所帮助。
所以我需要提取 .&[ 和 ] 之间的部分
您可以使用正则表达式。
这可能不是最快的方法,但它可以处理大多数情况。
所以假设你有一个字符串包含:
[Dimension].[Analyst Group].&[Nl.Workplace.Foundation]
而你想得到以下字符串:
Nl.Workplace.Foundation
只需使用以下表达式:
=System.Text.RegularExpressions.Regex.Match("[Dimension].[Analyst Group].&[Nl.Workplace.Foundation]", "\.&\[(?<NWF>[^]]+)\]").Groups("NWF").Value
在表达式中,将输入字符串替换为您的动态值,例如:
=System.Text.RegularExpressions.Regex.Match(Fields!Dimension.Value & "." & Fields!AnalystGroup.Value, "\.&\[(?<NWF>[^]]+)\]").Groups("NWF").Value
我使公式尽可能简单,以便您可以轻松地调整它,例如,处理输入字符串不匹配的情况(使用上述查询,它将返回#Error)。
您可以通过添加 IIF() 或更好的方法来做到这一点,使用可以在多个地方重复使用的自定义函数,并且会减少表达式的长度。