在调用 GetValue() 之前使用 IIF() 来检查拆分字符串的长度,仍然是错误的
To use IIF() for checking a length of spliited string before calling GetValue(), is still error
在 rdlc 报告中。为从主报告接收的 4 个参数创建了一个子报告。
但有时一个主要报告可能会发送少于四个值。
例如:从这些 VB.Net 代码发送了一个字符串。
Dim strProcessCode As String = {"A,B"}
一个字符串只包含两个值。(A和B)
所以我通过对每个参数使用表达式来拆分这个字符串
=iif(Split(Parameters!pProcessCode.Value, ",").Length>0,
(Split(Parameters!pProcessCode.Value, ",")).GetValue(0)
,nothing) ''For first parameter
第一个和第二个参数没问题。但是当我为第三个参数准备值时出现问题。尽管它使用相同的方式。
=iif(Split(Parameters!pProcessCode.Value, ",").Length>2,
(Split(Parameters!pProcessCode.Value, ",")).GetValue(2)
,nothing) ''For third parameter
显示此错误消息
Error: Subreport could not shown.
如何解决?
如果你能把它分解成 If.. ElseIF.. Else
或 Select
会更容易阅读和维护。
Function ReturnResult(byval pProcessCodeValue as string) as string
If Instr(0, pProcessCodeValue,",",vbTextCompare) = 0 Then
ReturnResult = pProcessCodeValue
Exit Function
End If
dim arr() as string
arr = Split(pProcessCodeValue , ",")
ReturnResult = arr(arr.Length)
End Function
称呼它:
=ReturnResult(Parameters!pProcessCode.Value)
但是,对于 SSRS,您可能需要使用嵌套的 IIF,例如:
=iif(Split(Parameters!pProcessCode.Value, ",").Length = 0,
(Split(Parameters!pProcessCode.Value, ",")).GetValue(0)
, iif(Split(Parameters!pProcessCode.Value, ",").Length = 1,
(Split(Parameters!pProcessCode.Value, ",")).GetValue(1)
, iif(Split(Parameters!pProcessCode.Value, ",").Length = 2,
(Split(Parameters!pProcessCode.Value, ",")).GetValue(2)
, nothing))
)
在 rdlc 报告中。为从主报告接收的 4 个参数创建了一个子报告。 但有时一个主要报告可能会发送少于四个值。 例如:从这些 VB.Net 代码发送了一个字符串。
Dim strProcessCode As String = {"A,B"}
一个字符串只包含两个值。(A和B) 所以我通过对每个参数使用表达式来拆分这个字符串
=iif(Split(Parameters!pProcessCode.Value, ",").Length>0,
(Split(Parameters!pProcessCode.Value, ",")).GetValue(0)
,nothing) ''For first parameter
第一个和第二个参数没问题。但是当我为第三个参数准备值时出现问题。尽管它使用相同的方式。
=iif(Split(Parameters!pProcessCode.Value, ",").Length>2,
(Split(Parameters!pProcessCode.Value, ",")).GetValue(2)
,nothing) ''For third parameter
显示此错误消息
Error: Subreport could not shown.
如何解决?
如果你能把它分解成 If.. ElseIF.. Else
或 Select
会更容易阅读和维护。
Function ReturnResult(byval pProcessCodeValue as string) as string
If Instr(0, pProcessCodeValue,",",vbTextCompare) = 0 Then
ReturnResult = pProcessCodeValue
Exit Function
End If
dim arr() as string
arr = Split(pProcessCodeValue , ",")
ReturnResult = arr(arr.Length)
End Function
称呼它:
=ReturnResult(Parameters!pProcessCode.Value)
但是,对于 SSRS,您可能需要使用嵌套的 IIF,例如:
=iif(Split(Parameters!pProcessCode.Value, ",").Length = 0,
(Split(Parameters!pProcessCode.Value, ",")).GetValue(0)
, iif(Split(Parameters!pProcessCode.Value, ",").Length = 1,
(Split(Parameters!pProcessCode.Value, ",")).GetValue(1)
, iif(Split(Parameters!pProcessCode.Value, ",").Length = 2,
(Split(Parameters!pProcessCode.Value, ",")).GetValue(2)
, nothing))
)