【问题标题】:SSRS - Show textbox if string contains numbersSSRS - 如果字符串包含数字,则显示文本框
【发布时间】:2017-09-06 13:14:29
【问题描述】:

我正在尝试将以下 SQL Server 表达式转换为 SSRS 中包含错误消息的某个文本框的可见性表达式:

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

我的 SSRS 报告允许用户搜索 @Location,它是地址和 commonPlaceName 的组合,并返回记录表。

我试图根据字符长度和提供的参数值是否包含数字来限制返回的行数。我想在他们搜索没有数字的公共地点或地址时显示错误消息"抱歉,您的搜索范围太广,因此记录的数量有限"。

我使用以下方法使长度部分起作用:

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

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

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

我仍在学习 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 

【问题讨论】:

    标签: sql-server reporting-services ssrs-2008


    【解决方案1】:

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

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

      =IIF(Fields!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(Fields!MyField.Value),0,1)

    【讨论】:

    • 谢谢罗斯。数字 1 将不起作用,因为我正在根据 case 语句设置行数以避免不必要的服务器负载。你能再解释一下第 2 点吗?我对您使用字段而不是我的@Location 参数感到困惑,而且我不确定用什么替换“[MyRegExString]”。谢谢!
    • 我已经编辑了我的原始问题以包含我用来限制行数的 SQL 代码(如果有帮助的话)。
    • 如果要检查参数的值,请将 Fields!FieldName,Value 替换为 Parameters!Location.Value。至于正则表达式,您也许可以使用 [0-9]。我不是正则表达式专家,不想在那里提供误导性建议。
    【解决方案2】:

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

    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)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-21
      • 2019-03-15
      • 2022-08-02
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      相关资源
      最近更新 更多