Concatenado separado por comas en Access de filas a columnas

Quisiera saber como puedo hacer para pasar los datos de una tabla y mostrar un resultado concatenado separado por comas en Access 2013, muestro a continuación como se encuentra la tabla y el resultado después del proceso.

Tabla Original

Tabla Respuesta

1 respuesta

Respuesta
2

No es muy difícil de hacer, te dejo un ejemplo con dos formas: http://filebig.net/files/Zi4xqvVJWz

Como verás, hay que crear una función que encadene los valores para cada ID (la función que está en el módulo), y luego la puedes usar en una consulta de creación de tabla (como en el ejemplo), en una de datos anexados... o hacerlo por código como tienes en el botón del formulario.

Cualquier duda, me comentas.

Un saludo.


     bit.ly/ForoNkSv 

Buenos Días, me podrías enviar la información al correo [email protected] ya que no tengo acceso donde estoy a la URL que me compartiste.

Gracias

Ya te lo envié. Cualquier cosa, escribe por aquí, porque ese correo no lo utilizo para nada.

¡Gracias!  era lo que necesitaba...como siempre les debo una

Hola, una pregunta adicional. Hay alguna forma de optimizar los recursos para que el código que me pasaste, ya que si tengo demasiados registros puede tardar mucho tiempo en procesar.. Intente reduciendo la cantidad pero se demora más de 40 min la cantidad de registros que tengo es de 348.127

Gracias

Puedes aligerar el proceso si la tabla de destino solo la actualizas y no la borras y creas de nuevo de cada vez.

Incluso lo mejorarías si en vez de mostrar los resultados en una nueva tabla lo hicieras en una consulta.

Ya lo intente de varias formas, pero veo que excel es mas rápido con la formula =SI(A2=A1;D1&", "&B2;B2) .. =( 

Como te decía en mi respuesta anterior, hay formas de "aligerar" el proceso, pero ten en cuenta que a más registros, más tiempo tardará en realizar todas las operaciones.

En el ejemplo te proponía una consulta de Creación de tabla con esta SQL:

SELECT DISTINCT TOriginal.ID, fncConcatena([ID]) AS NuevaClasificacion INTO TRespuesta
FROM TOriginal
ORDER BY TOriginal.ID;

Esta consulta realiza dos acciones, primero una consulta de selección (SELECT DISTINCT TOriginal.ID, fncConcatena([ID]) AS NuevaClasificacion FROM TOriginal ORDER BY TOriginal.ID) y luego la de creación de tabla (SELECT ...  INTO  TRespuesta)

Si eliminas del DISTINCT, ambas consultas se ejecutan más rápido (no tiene que eliminar los IDs repetidos), pero te insertará registros duplicados (aunque luego puedes hacer una consulta sobre la tabla resultados para eliminarlos.

Otra alternativa es usar una consutla de datos agrupados en vez de usar DISTINCT (SELECT TOriginal.ID, First(fncConcatena([ID])) AS NuevaClasificacion FROM TOriginal GROUP BY TOriginal. ID, ORDER BY TOriginal. ID)

En cualquier caso, crear la nueva tabla siempre va a consumir más recursos que solo hacer una consulta de selección. También es evidente que a más registros, mayor tiempo le llevará ejecutar la consulta. Y por supuesto, en la velocidad de ejecución también influyen las características de tu PC...

Pero bueno, si prefieres hacerlo con Excel, ya es cuestión de preferencias...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas