删除破折号时在 SSRS 中传递参数

Pass a Parameter in SSRS while removing Dashes

我在 SSRS 报告中传递一个唯一 ID 作为参数。在来源 table 中,唯一 ID 不包含虚线。但是,用户可以插入包含破折号“-”的唯一 ID,在某些情况下可以不插入破折号。有没有一种方法可以从参数中删除破折号。

例如,唯一 ID 3120-20268-8 在 table 中存储为 3120202688。如果用户在 SSRS 报告中传递多个带或不带破折号的值,我将如何检索。

当在查询下方使用时,它仅针对单个值给出记录。但是,当提供多个值时会出错。

select * 来自 Table 其中 Unique_ID 在 (REPLACE(@Unique_ID,'-',''))

对于超过 1 个值,它会给出下面提到的错误:

替换函数需要 3 个参数。

数据集 'ATL_List' 的查询执行失败。

谢谢

您应该能够在您的报告中使用替换功能来格式化输入的参数值,如下所示

replace(Fields!Paramater.Value,"-","")=FieldinYourTable

最简单的机制之一是创建一个基于表达式的参数来保存经过净化的输入。这个参数会被隐藏,所以用户不知道,但是参数的其余用法是一样的。

NOTE: You could do something similar with a query based default value, but this case is easier to do via a simple expression

单值参数

创建一个新参数:

  • 设置为隐藏

  • 设置默认值表达式:

       =Str(Parameters!inputID.Value).Replace("-","")
    

Multi-Value参数

这只是稍微有点棘手,在表达式中,我们可以将选定的值连接到一个 CSV 字符串中,然后处理该值,然后将其拆分回来:

  • 设置参数为multi-value,但还是隐藏:

  • 设置默认值表达式:

       =Join(Parameters!inputID.Value,",").Replace("-","").Split(",")
    

无需详细说明,如果我们使已清理的参数暂时可见,只是为了演示转换,它应该如下所示:

参数必须隐藏!

NOTE: DO NOT make your sanitised parameter visible as in the above screenshot in your deployed report! Doing so will mean that it will not pickup changes made to the input value after it has rendered the first time.
remember that we have exploited the default value, we haven't arbitrarily defined en expression to always execute.

参数为 隐藏 时的输出是在呈现报表时计算的,只是更难形象化此静态 post:[=20= 中的行为]

在您的 DataSet 查询中,您只需使用经过清理的参数:

SELECT * FROM Table WHERE Unique_ID IN (@sanitisedMultiValue)