Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

598
Vistas
Usar IIF() para verificar una longitud de cadena dividida antes de llamar a GetValue(), sigue siendo un error

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 parameter

El 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 parameter

Muestra este mensaje de error

Error: no se pudo mostrar el subinforme.

¿Cómo arreglarlo?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

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 Function

Llá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)) )
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda