我正在根据通过在线表单提交给SQL Server的数据开发报告。一部分是复选框列表,用于指示所需的服务。我在Report Builder中编写了一个表达式,将字段连接成一列,为了便于在repor中读取,我决定添加一个回车+(VbCrLf)。
= Fields!Service1.Value +(VbCrLf)+ Service2.Value +(VbCrLf)+ Service3.Value +(VbCrLf)+ Service4.Value ETC. ETC。
问题是每个字段都会导致回车,因此如果选择第1,第8和第12服务,可能会出现大量差距。
如果字段为Null或Blank,是否有办法使表达式忽略VbCrLf?或者针对不同或更好的解决方案的任何建议。
答案 0 :(得分:0)
mt第一反应是将整个表达式包装在替换函数中,并用一个连续替换2个连续的VbCrLf
=replace(Fields!Service1.Value + (VbCrLf) + Service2.Value + (VbCrLf) +
Service3.Value + (VbCrLf) + Service4.Value,Vbcrlf+VbCrLf,VbCrLf)
这里的问题是你3个空值仍然会产生2个新行,所以你可以嵌套替换函数使它适用2或3次,或者你可以使用内联IF
来测试每个添加新行之前的值
=Fields!Service1.Value + iif(Service2.Value is nothing or Service2.Value = "","",VbCrLf) + Service2.Value + iif(Service3.Value is nothing or Service3.Value = "","",VbCrLf) etc etc
答案 1 :(得分:0)
Public Function ConcatFields(ByVal s As String) As String
If String.IsNullOrEmpty(s) Then
Return ""
End If
Return s + Environment.NewLine
End Function
然后按如下方式调用函数:
=Code.ConcatFields(Fields!Service1.Value) + Code.ConcatFields(Service2.Value) + Code.ConcatFields(Service3.Value) + Code.ConcatFields(Service4.Value) ETC. ETC.