En el informe rdlc. Se creó un subinforme de 4 parámetros para recibir del informe principal. Pero en algún momento un informe principal puede enviar menos de cuatro valores. Por ejemplo: Se envió una cadena desde este código VB.Net.
Dim strProcessCode As String = {"A,B"}Una cadena incluye solo dos valores. (A y B) Entonces, dividí esta cadena usando una expresión para cada parámetro como estos
=iif(Split(Parameters!pProcessCode.Value, ",").Length>0, (Split(Parameters!pProcessCode.Value, ",")).GetValue(0) ,nothing) ''For first parameterEl primer y segundo parámetro está bien. Pero tiene un problema cuando preparé un valor para el tercer parámetro. A pesar de que se utiliza de la misma manera.
=iif(Split(Parameters!pProcessCode.Value, ",").Length>2, (Split(Parameters!pProcessCode.Value, ",")).GetValue(2) ,nothing) ''For third parameterMuestra este mensaje de error
Error: no se pudo mostrar el subinforme.
¿Cómo arreglarlo?
Sería más fácil de leer y mantener si pudiera dividirlo en If.. ElseIF.. Else o 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 FunctionLlámalo:
=ReturnResult(Parameters!pProcessCode.Value)Sin embargo, con SSRS es posible que deba usar IIF anidados, por ejemplo:
=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)) )