Servicios de informes: unir todos los campos en un conjunto de datos

En un informe, tengo un conjunto de datos con un filtro (basado en un parámetro MultiValue).

Este conjunto de datos contiene dos campos: Id y Nombre.

Necesito mostrar en algún lugar la concatenación de todos los nombres:

Name1 / Name2 / Name3

El problema es que join El método solo funciona en la matriz, y luego no puedo especificar un conjunto de datos como valor.

También busqué en el código personalizado, pero no encontré nada que funcionara.

Cómo debería hacer esto ?

preguntado el 12 de junio de 12 a las 14:06

2 Respuestas

Puede que llegue un poco tarde para esto, pero para cualquiera que esté interesado en esto, hay una manera bastante fácil de hacerlo en SSRS:

=Join(LookupSet(1,1,Fields!Name.Value, "DatasetName")," / ")

respondido 22 mar '13, 07:03

LookupSet no disponible en ssrs-2005. ¿Alguna solución similar? - maxx777

Lo siento, no conozco ningún otro método. - urbanhusky

Leyenda, LookupSet está bastante mal documentado: el truco aquí es que los dos primeros parámetros sean 1. - hacha de carne

Teóricamente, los primeros dos parámetros podrían ser cualquier cosa, solo tienen que ser iguales. No puedo probarlo o verificarlo en este momento, pero LookupSet toma el valor (tercer parámetro) siempre que el primer parámetro coincida con el segundo, generalmente entre dos campos diferentes. - urbanhusky

SSRS-2008 R2 y más alto...

1. Usando LookupSet
Si está más allá de la versión 2008 que tiene OP, existe una buena solución:

=Join(LookupSet(1, 1, Fields!Name.Value, "DatasetName"), " / ")

Crédito por esta respuesta usando el LookupSet solución va enteramente a La respuesta de @urbanhusky.


SSRS-2008 y menores...

Sin embargo, mantendré esta respuesta porque agrega la solución de @urbanhusky con las soluciones disponibles para las almas pobres atrapadas con la versión OP de SSRS e inferior.

En SSRS 2008 solo hay tres "opciones" por lo que puedo ver, cada una con su propio inconveniente. El primero es probablemente el menos hackish.

2. Parámetro adicional
Cree un parámetro interno (por ejemplo, "NameParameter", consulte esta SO respuesta or MSDN) con Permitir valores múltiples. Establezca el valor predeterminado del parámetro en el Name campo de su conjunto de datos. Luego usa la función =Join(Parameters!NameParameter.Value, " / ") para mostrar los nombres unidos en un cuadro de texto.

Esta puede ser su mejor opción, pero si hay muchos valores, es posible que el parámetro no funcione muy bien.

3. Usa una lista
Cree una Lista y arrastre/suelte el campo Nombre en ella. Si es necesario, agrupe también en el Nombre.

La desventaja aquí es que (AFAIK) la lista no se puede mostrar horizontalmente.

4. Usa una matriz
Oh chico, este es realmente feo. No obstante, aquí va: cree una matriz, arrastre el campo Nombre al encabezado de la columna y oculte la primera columna y la segunda fila (para mostrar los datos).

La principal desventaja es que es un truco (y bastante exagerado), además de que tendrás que recortar el último carácter separador manualmente con una expresión.

contestado el 23 de mayo de 17 a las 13:05

Desafortunadamente no puedo: 1. Recibo solo la ID del remitente, 2. Tengo que poner esto de manera horizontal, 3. Ya lo intenté pero tengo que especificar el ancho de cada columna :( - J4N

Con la opción 1 quise decir un interno parámetro, no uno que el usuario tiene que completar, sino uno que llena el conjunto de datos. - Jeroen

¿Oh? No conozco este tipo de "parámetro interno". ¿Tiene alguna información al respecto? - J4N

He agregado algunos enlaces en la respuesta (aunque debe invertir algo de tiempo en encontrar su camino en MSDN y otras preguntas de SO, que es más fácil y más efectivo que preguntar a otros). ¡Espero eso ayude! - Jeroen

¡Perfecto! ¡Visibilidad! :) - KyleMit

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.