SSRS - IIF /切换/替换字段中的多个条件

时间:2015-11-18 02:22:28

标签: reporting-services replace switch-statement iif ssrs-expression

在ms sql中有一个nvarchar列,根据用户输入,可能有也可能没有回车符和换行符(CHR(13)& CHR(10)),只有一个回车符(CHR( 13)),只是换行(CHR(10))。在ssrs中使用该列时,我需要查找是否存在上述任何列,并分别用字符串\x0D\x0A\x0D\x0A替换它们。

我迷失在这个表达中,感谢任何帮助。

=SWITCH
(
(InStr(Fields!Info.Value, CHR(13)&CHR(10) > 0, REPLACE(Fields!Info.Value, CHR(13)&CHR(10)), "\x0D\x0A")),
(InStr(Fields!Info.Value, CHR(13) > 0, REPLACE(Fields!Info.Value, CHR(13)), "\x0D")),
(InStr(Fields!Info.Value, CHR(10) > 0, REPLACE(Fields!Info.Value, CHR(10)), "\x0A"))
)

错误是:

  

System.Web.Services.Protocols.SoapException:的值表达式   textrun'Info.Paragraphs [0] .TextRuns [0]'包含一个错误:   [BC30455]参数'Replacement'未指定参数   '公共函数替换(表达式为字符串,查找为字符串,   替换为字符串,[Start As Integer = 1],[Count As Integer =   -1],[比较为Microsoft.VisualBasic.CompareMethod = Microsoft.VisualBasic.CompareMethod.Binary])As String'。在   Microsoft.ReportingServices.Library.ReportingService2005Impl.SetReportDefinition(字符串   Report,Byte []定义,Guid batchId,Warning []&警告)   Microsoft.ReportingServices.Library.ReportingService2010Impl.SetItemDefinition(字符串   ItemPath,Byte []定义,字符串expectedItemTypeName,Property []   属性,警告[]&警告)   Microsoft.ReportingServices.WebServer.ReportingService2010.SetItemDefinition(字符串   ItemPath,Byte []定义,属性[]属性,警告[]&   警告)

1 个答案:

答案 0 :(得分:1)

试试这个:

=SWITCH(
InStr(Fields!Info.Value, CHR(13) & CHR(10)) > 0,
   REPLACE(Fields!Info.Value,CHR(13) & CHR(10), "\x0D\x0A"),
InStr(Fields!Info.Value,CHR(13)) > 0,
   REPLACE(Fields!Info.Value, CHR(13), "\x0D"),
InStr(Fields!Info.Value, CHR(10)) > 0,
   REPLACE(Fields!Info.Value, CHR(10), "\x0A")
)
  

注意如果使用Switch功能,它将仅执行第一种情况   那是true,所以如果第一个条件是true第二个和{。}}   第三个不会被评估,因此不会执行。

如果要替换每个字符,则应使用多个REPLACE嵌套函数。

=Replace(
  Replace(
    REPLACE(Fields!Info.Value,CHR(13) & CHR(10), "\x0D\x0A"),
  CHR(13),"\x0D"),
CHR(10),"\x0A")