SSRS - 如果字符串包含数字则显示文本框

SSRS - Show textbox if string contains numbers

我正在尝试将以下 SQL 服务器表达式转换为 SSRS 中包含错误消息的特定文本框的可见性表达式:

select address, commonPlaceName, municipality where @Location not like '$[0-9]%'

我的 SSRS 报告允许用户搜索 @Location,它是地址和 commonPlaceName 以及 returns 和 table 记录的组合。

我正在尝试根据字符长度和提供的参数值是否包含 number.I 来限制返回的行数 number.I 希望在他们搜索不包含的公共地点或地址时显示错误消息表示 "Sorry your search was too broad so the number of records has been limited".

的数字

我使用以下方法得到了长度部分:

=iif(len(Parameters!Location.Value)<=5,false,true)

但我不知道如何在字符串中搜索数字

对于那些感兴趣的人,在 SQL 脚本中,我根据与我试图在 SSRS 中设置的可见性选项平行的案例语句设置行数。

我仍在学习 SSRS,非常感谢任何帮助!

编辑:

如果有帮助,下面是我用来限制行数的 SQL 语句:

declare @top int

set @top = case when len(@Location) <= 5 then 100
            when @Location not like '%[0-9]%' then 100
            when len(@Location) >5 then 0
       end

set rowcount @top 

有多种方法可以做到这一点。

  1. 计算查询中的可见性并将可见性设置为计算查询字段。这在报告中更清晰。通常您会希望将所有显示逻辑放在报表本身中,但是,我也偷懒过一两次。

    =IIF(字段!ShouldShowField.Value==1,0,1)

  2. 使用InStr()

    等SSRS函数

    =IIF(Regex.Replace(Fields!MyField.Value, "[MyRegExString]").Length == Fields!MyField.Value.Length, 0, 1)

  3. 使用自定义代码进行高级字符串操作并调用类似于

    的代码

    =IIF(Code.ShouldShowTextBox(字段!MyField.Value),0,1)

好的,我想我现在找到了解决方法。我最终创建了一个新数据集:

select 

'LocationWithNum' = case 
                         when @Location like '%[0-9]%' then 'true'
                         else 'false'
                    end

然后我将错误消息文本框的可见性表达式更改为以下内容:

=iif(len(Parameters!Location.Value)<=5 or First(Fields!LocationWithNum.Value, "LocationWithNum") = false, false, true)

到目前为止,这似乎运作良好。如果你们还有什么想法,请告诉我!