Pregunta

Tengo un informe que muestra un nombre de miembro en el formato de: prefijo, primero, medio, último, sufijo. El código de informe se ve así: [name_prefix] [name_first] [name_middle] [name_last] [name_suffix

Cada entrada de campo tiene un solo espacio entre y funciona muy bien cuando el miembro tiene un segundo nombre, pero cuando el segundo nombre es nulo, dos espacios se producen entre los nombres primero y los apellidos. Intenté resolver el problema con una expresión que se ve así:

=IIF(IsNothing(Fields!name_middle.Value),"",Fields!name_middle.Value & " ")

También ajusté el espacio para verse así: [name_first] [name_middle] [name_last] sin espacio entre el campo medio y apellido. Espero que si hubiera un segundo nombre habría espacios entre los nombres y cuando el segundo nombre era nulo, solo un espacio entre el primer y apellido. Cuando hay un segundo nombre, se reproduce correctamente, pero si el segundo nombre es nulo, todavía hay un espacio adicional. Así que probé otro método sin espacios entre los campos que se ve así:

=IIF(IsNothing(Fields!name_middle.Value)," "," " & Fields!name_middle.Value & " ")

Nuevamente, el mismo problema funciona bien donde hay un segundo nombre pero dos espacios cuando no lo hay. He considerado concatenar todo el nombre del miembro, pero creo que tendré el mismo resultado. El mismo informe realizado con Crystal Reports usa el primer método y funciona sin problemas. Gracias de antemano.

¿Fue útil?

Solución

Dependiendo de la fuente de datos subyacente, es posible que cuando no haya un segundo nombre se trate como una cadena vacía, en lugar de un nulo.

Sugiero enmendar la expresión como lo siguiente:

=IIF(IsNothing(Fields!name_middle.Value) OR Len(Fields!name_middle.Value) < 1,
     "",Fields!name_middle.Value & " ")

Una buena prueba para encontrar la longitud de la cadena dentro de un campo es:

=Len(Fields!fieldName.Value)

Otros consejos

Lo que hizo en la primera línea es correcto, y sospecho que está obteniendo un segundo nombre de la base de datos que es un espacio; Por eso parece doble.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top