Como Juntar dos Tablas mediante consulta

Veréis os cuento el caso.
Tengo 5 ficheros de excel que he importado en tablas en access.
Hasta aquí todo correcto.
La tabla principal tiene una columna REFERENCIA que es común en todas las tablas.
Cada tabla tiene unos campos que he de adjuntar en una tabla global.
Hasta aquí todo bien.
Pero resulta que 2 tablas tienen la columna REFERENCIA el mismo código con diferentes líneas.
De este modo.
Referencia composición
10010 20 gramos de paracetamol
10010 30 gramos de codeína
10010 20 GRAMOS DE PROTENINA
Y aquí esta el problema.
No se como generar una tabla que haga lo siguiente:
Referencia composición
10010 20 gramos de paracetamol, 30 gramos de codeína, 20 gramos de protenina.
Es decir que deje una sola referencia y si tiene 3 o más líneas que el resultado sea una sola línea separada por una, o . Da igual.
Alguno sabe como poder hacer esto.

2 Respuestas

Respuesta
2

Otra opción, a mi parecer menos "complicada", porque no necesitas una tabla nueva ni andar pulsando botones, es la que explica Mihura (Jesus Mansilla Castells) en su web, en este ejemplo: http://www.accessaplicaciones.com/ejemplos.html#sq01

Como verás, solo tienes que pegar la función (tal cual está) en un módulo y usarla en el diseño de la consulta con sus parámetros correspondientes, en vez del campo que quieres encadenar.

Un saludo.


Hola y muchas gracias por la información.

He probado los dos códigos, pero algo se me escapa o no me funciona.

Con la referencia del código que me remitiste a través del enlace.

Lo primero que he hecho ha sido crear un modulo y lo he llamado:

RT_Encadenar

Luego he generado una consulta con los datos que necesito:

pero cuando ejecuto la consulta el resultado es este:

Seguramente algo no he hecho bien, o no es un modulo que tenia que crear.

Un saludo y gracias anticipadas.

Al módulo llámalo mdlFunciones o como quieras, pero no igual que la función. Imagino que ese es el problema

Gracias.

Ya cambien de nombre el modulo y ahora me sale otro error.

Si le quito el campo ID

Me da el mismo error pero con el campo CÓDIGO

Alguna idea. ¡

Gracias anticipadas y disculpa.

¿Por qué usas la función primero() en el campo calculado?

Si la quitas te debería funcionar.

O bien, si es lo que buscas, haz una consulta de totales...

Hola de nuevo.

Es por que estaba en el código de ejemplo.

Pero ya di con el error, y era que no tenia agrupado la consulta.

Ya no me da error.

Pero el campo composición me sale vacío.

Es como si el modulo no funcionara.

Ver lo que me sale.

Este es el resultado de la consulta.

Este es el modulo.

¿Probaste a hacerlo sin agrupar la consulta, y si el Primero en el campo que le aplicas la función?

Imagino que habrás comprobado que los parámetros que le pasas a la función son los correctos, porque si no lo son, no te avisa ni te da error...

Y para mí que tienes mal algún parámetro, en concreto el nombre del campo (si en baso en la tercera imagen de tu primera respuesta), porque pones como nombre de campo "Valor" y no lo veo en los campos de la tabla "productos2"...

Hola de nuevo.

Hola saludos.

Si lo probé y si no agrupas es cuando me daba el primer error que comente al principio.

Creo que todos los datos que le paso son los correctos.

Si efectivamente corregí uno de los parámetros VALOR, que no me correspondía con mi tabla si no con la de ejemplo, pero como puedes ver en las ultimas imágenes que te adjuntaba, el parámetro esta corregido y sin embargo no sale la info.

No, en las últimas imágenes no sale la función, por tanto no puedo comprobarlo...

Y si le quitas lo de agrupar, has de quitarle en la expresión del campo también la función Primero() que le pones antes de la de Jesús, como ya te sugerí un par de veces...

Me refiero a la expresión en la consulta, no a la función en sí en el módulo, que si la has copiado tal cual, funciona perfectamente.

Si quieres pon aquí una copia (no hace falta que tenga datos) de tu BD para que la descargue, dime el campo que quieres encadenar, y te monto yo la consulta...

Ok, perfecto.

te comparto desde dropbox la base de datos.

muchas gracias por todo.

el enlace es el siguiente.

https://www.dropbox.com/s/4znk2uxila7s8th/limpia.accdb?dl=0 

Gracias.

¿Qué campos quieres en la consulta y cual encadenar?

Hola de nuevo.

Mira el código principal o la Clave de cada producto es el campo que pone CÓDIGO, este es el campo común entre las otras tablas, a las que tengo que vincular.

Y el campo que quiero agrupar o concatenar es el que pone INGREDIENTES

Que como veras por cada código hay varios ingredientes.

El resultado debería ser:

CÓDIGO-------INGREDIENTES

31----------- Estevio, Otros ingredientes: lactosa, Croscarmelosa, L-leucina, dióxido de silicio, estearato de magnesio

Un saludo.

Ya vi el problema, que estaba en el código de la función (hay que sustituir DbExterna por CurrentDb)

Te devuelvo el archivo con la consulta funcionando: http://filebig.net/files/35mKM7ZMKY 

¡Ojo! Pues la consulta tarda mucho en mostrarse (recorrer los 18000 registros para encadenarlos le lleva un tiempo. Quizás te convendría poner un parámetro para mostrar un único codigo de cada vez: ganarás mucho tiempo.

Si no necesitas nada más sobre este tema, te agradecería valorases la respuesta para dar la pregunta por finalizada. Gracias y un saludo.


Respuesta
2

Te explico muy detallado como se hace y lo trasladas a tus necesidades.

Supongamos que tienes una tabla Tabla2 como en la imagen. El campo Union es para que veas como queda, no sería necesario, pero es mejor ver como trabaja.

Como puedes ver las referencias 110 y 220 se repiten

Con ella creo un formulario con dos botones Unir y Eliminar( se podría hace con uno pero prefiero que lo veas con dos)

Tambien tengo una tabla Tabla3 con Id numérico, Referencia y Composición.

Si pulso el botón Unir se queda

Verás que el último registro de cada referencia ha "acumulado" las composiciones. Y como además en el código le he dicho que inserte los valores en la tabla3, ésta queda

Ahora correspondería eliminar los registros duplicados y dejar sólo los últimos. Para eso si hubiera pulsado el botón eliminar me quedaría

El código de los botones es

Es decir, la secuencia en el formulario sería pulsar primero el botón unir e inmediatamente el de eliminar y en la tabla3 te queda como querías.

Buenos días.

También he probado esta opción, pero me ha dado problemas.

Seguramente algo se me ha pasado por alto, o no lo he realizado correctamente.

Tengo una tabla productos2 que es donde esta todo el meollo.

Que como ves se repiten los códigos que quiero unificar en una línea.

He creado una segunda tabla con los mismos campos que se supone sera la salida del botón unificar y se llama PRODUCTOS

He creado el formulario con los dos campos que necesito cuyo origen es Productos2 y con los dos botones el de unir y eliminar.

Y un tercer campo que se supone que es el resultado de la union.

Los codigos de los botones, en evento al hacer click son los siguientes:

Bueno pues cuando pincho en el botón de unir en modo formulario sale un error, y se detiene:

Y no debería.

Salvo que me haya confundido.

Muchísimas gracias por tu gran explicación.

A ver si lo puedo poner en marcha.

Normalmente, en el 99% de los casos, eso es porque el control no se llama así. En el cuadro de texto Ingredientes mira en sus propiedades-otras-nombre.

Hola de nuevo.

Eso ya lo había mirado, pero se llama así, com puedes ver.

Adjunto foto.

¿Me puedes mandar sólo el formulario y la tabla VACÍA origen.?

Mi correo es [email protected] Si lo haces, en el asunto del mensaje pon tu alias Jorge Apellidos, ya que si no sé quien me escribe ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas