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
有多种方法可以做到这一点。
计算查询中的可见性并将可见性设置为计算查询字段。这在报告中更清晰。通常您会希望将所有显示逻辑放在报表本身中,但是,我也偷懒过一两次。
=IIF(字段!ShouldShowField.Value==1,0,1)
使用InStr()
或
等SSRS函数
=IIF(Regex.Replace(Fields!MyField.Value, "[MyRegExString]").Length == Fields!MyField.Value.Length, 0, 1)
使用自定义代码进行高级字符串操作并调用类似于
的代码
=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)
到目前为止,这似乎运作良好。如果你们还有什么想法,请告诉我!
我正在尝试将以下 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
有多种方法可以做到这一点。
计算查询中的可见性并将可见性设置为计算查询字段。这在报告中更清晰。通常您会希望将所有显示逻辑放在报表本身中,但是,我也偷懒过一两次。
=IIF(字段!ShouldShowField.Value==1,0,1)
使用
等SSRS函数InStr()
或=IIF(Regex.Replace(Fields!MyField.Value, "[MyRegExString]").Length == Fields!MyField.Value.Length, 0, 1)
使用自定义代码进行高级字符串操作并调用类似于
的代码=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)
到目前为止,这似乎运作良好。如果你们还有什么想法,请告诉我!