Access - Access: Unir texto de varios registros para un mismo cliente

 
Vista:

Access: Unir texto de varios registros para un mismo cliente

Publicado por Yorscar (6 intervenciones) el 07/03/2012 10:55:18
Tengo una tabla (que la obtengo de otro programa) con datos de tipo "texto":

Cliente Comentario
2300 Este comentario
2300 Sigue el comentario
2200 Sus comentarios
1500 Más comentarios

Me gustaría crear una consulta donde me junte para el cliente "2300" todos sus comentarios en un solo registro, no en varios como me aparece.
De esta forma:
Cliente Comentario
2300 Este comentario Sigue el comentario
2200 Sus comentarios
1500 Más comentarios

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Access: Unir texto de varios registros para un mismo cliente

Publicado por Marcelo (166 intervenciones) el 08/03/2012 13:28:23
Yorscar:

La solución que propongo y que me ha servido mucho en mi trabajo para generar emails automáticos con varios contactos concatenados. Va de la siguiente manera.

2 Tablas:

-Detalle: Así llamé a la Tabla que tú describes

Cliente Comentario
2300 a
2300 b
2200 a
1500 Aquí
2200 b
2300 c
2300 d
2300 e
2300 f
2300 g
2300 h
2300 i
1500 está
1500 la
1500 solución
1500 del
1500 problema

-Resultado: Tabla con los Clientes existentes con los comentarios agrupados en un campo según su posición en la tabla Detalle. Inicialmente está vacía

Cliente Comentario


2 Consultas:

-“01 Anexa a Resultado el 1er Comentario para ese nuevo Cliente” (consulta de datos anexados), vista en SQL es así, sólo debes copiar y pegar en una nueva consulta en vista SQL y grabarla con el mismo nombre que te sugiero.

INSERT INTO Resultado ( Cliente, Comentario )
SELECT [Forms]![Formulario1]![Cliente] AS Expr1, [Forms]![Formulario1]![Comentario] AS Expr2;

-“02 Actualiza Resultado sgtes Comentario del Cliente Existente” (consulta de actualización), lo mismo que la otra.

UPDATE Resultado SET Resultado.Comentario = [Forms]![Formulario1]![ComentarioAcum]
WHERE (((Resultado.Cliente)=[Formularios]![Formulario1]![Cliente]));

1 Formulario:

-Formulario1: Basado en la tabla Detalle, 2 cuadros de texto dependientes de los campos Cliente y Comentario respectivamente, 1 cuadro de texto independiente llamado ComentarioAcum y 1 botón de comando llamado Comando4 que tiene asociado un procedimiento de evento “Al Hacer Clic” en Visual Basic

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Private Sub Comando4_Click()
 
'Variables de tipo Numérico
Dim ctaReg, i, veCliente As Long
'Variable de Tipo texto
Dim traeComentAnt As String
 
'quita las advertencias
DoCmd.SetWarnings False
 
'Borra el contenido de la tabla resultado
DoCmd.RunSQL "DELETE Resultado.* FROM Resultado;"
 
'Cuenta la cantidad de registros de la tabla Detalle
ctaReg = DCount("Cliente", "Detalle")
 
'Repite el proceso para cada registro de la tabla Detalle, en este caso 17 veces
For i = 1 To ctaReg
 
    'Ve si el Cliente de la Tabla Detalle existe en la TablaResultado
    veCliente = DCount("Cliente", "Resultado", "Resultado.Cliente = Forms![Formulario1]![Cliente]")
 
    'Si la cuenta arroja 0 se anexa el cliente con su respectivo comentario
    If veCliente = 0 Then
 
        DoCmd.OpenQuery "01 Anexa a Resultado el 1er Comentario para ese nuevo Cliente"
 
    'Si la cuenta es mayor que 0 el cliente ya existe en la Tabla Resultado, así que se actualiza el comentario de dicho Cliente
    ElseIf veCliente > 0 Then
 
        'Se busca el comentario en la Tabla Resultado de ese cliente y se concatena con el comentario actual en ComentarioAcum
        traeComentAnt = DLookup("Comentario", "Resultado", "Resultado.Cliente = Forms![Formulario1]![Cliente]")
 
        ComentarioAcum.Value = traeComentAnt & " " & Comentario.Value
 
        'Se actualiza el comentario en la Tabla Resultado para ese cliente
        DoCmd.OpenQuery "02 Actualiza Resultado sgtes Comentario del Cliente Existente"
 
    End If
 
    'Se limpia ComentarioAcum
    ComentarioAcum.Value = Null
 
    'Se va al siguiente registro hasta el final 17
    DoCmd.GoToRecord acDataForm, "Formulario1", acNext
 
'Termina de recorrer la Tabla Detalle representada en el formulario Formulario1
Next i
 
'Vuelve al primer registro para dejar el formulario en el prmer registro por si queremos ejecutar nuevamente el proceso
DoCmd.GoToRecord acDataForm, "Formulario1", acFirst
 
'Abre la tabla Resultado con los registros concatenados por cliente
DoCmd.OpenTable "Resultado", acViewNormal
 
'Es muy importante reestablecer las advertencias
DoCmd.SetWarnings True
 
End Sub

La tabla Resultado quedaría al final

Cliente Comentario
2300 a b c d e f g h i
2200 a b
1500 Aquí está la solución del problema

Un Saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access: Unir texto de varios registros para un mismo cliente

Publicado por Yorscar (6 intervenciones) el 09/03/2012 08:40:09
Gracias Marcelohipe por la solución propuesta (que te habrá costado lo suyo) y además por la rapidez.
Así a simple vista parece complicada de aplicar (ya que no manejo código) por lo que trataré de descifrarla y utilizarla.

Gracias de nuevo y ya lo contaré
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Access: Unir texto de varios registros para un mismo cliente

Publicado por Marcelo (166 intervenciones) el 09/03/2012 21:28:01
Para nada, cómo te dije, lo uso mucho en mi trabajo. Te recomiendo que le pierdas miedo al código, en este caso crea el formulario cómo te digo y las consultas copialas y pegalas en vista SQL, es más fácil de lo que parece. Al que le interese que me escriba y le envio el archivo en access. Además el código esta explicado con comentarios, son los que van precedidos por ' (comilla simple)

Te recomiendo que investigues acerca de:

DCount()
DLookup()
For...Next
If...then
Conatenación de caracteres
Ir a registro

Un Saludo desde Viña del Mar, Chile
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access: Unir texto de varios registros para un mismo cliente

Publicado por yorscar (6 intervenciones) el 14/03/2012 10:26:44
Gracias de nuevo, y lo dicho me pondré manos a la obra

Otro saludo desde Santo Domingo de la Calzada, España
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access: Unir texto de varios registros para un mismo cliente

Publicado por jbatres (1 intervención) el 08/08/2012 18:46:59
Muy buena solución, solo que no me reconoce cuando el campo es hipervinculo ya que el separador es " ; " pero se remedia poniendolo manualmente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access: Unir texto de varios registros para un mismo cliente

Publicado por Maria (1 intervención) el 08/02/2020 14:33:53
Hola, te agradecería si me pudieras enviar el código ya en access. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access: Unir texto de varios registros para un mismo cliente

Publicado por Alfredo (1 intervención) el 27/08/2013 19:51:20
Hola Marcelo,

El programa funciona de maravilla.

Tenía este problema con una base de datos de 60000 notas a consolidar de 15000 clientes potenciales para poder meterlos en SugarCRM y aunque al principio parecía que el access se había estropeado, en el administrador de tareas he visto que estaba uno de los cuatro nucleos a tope y el access usando un 22% del CPU así que 12 minutos. == Resultado el deseado.

Moraleja, hay que tener paciencia y confiar en los buenos programadores

Gracias de nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access: Unir texto de varios registros para un mismo cliente

Publicado por humberto torres (1 intervención) el 05/12/2013 17:27:56
Por favor alguien me puede regalar el codigo de esa apliacion. slaudos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access: Unir texto de varios registros para un mismo cliente

Publicado por Juan José (3 intervenciones) el 08/04/2014 17:08:14
Buenas tardes,

Me he alegrado mucho al encontrar este codigo que puede hacer lo que estoy buscando desde hace tiempo, pero el codigo me da error en "ComentarioAcum.Value = Null"
¿Me podeis ayudar?

Gracias de antemano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access: Unir texto de varios registros para un mismo cliente

Publicado por Juan José (3 intervenciones) el 08/04/2014 18:05:34
Solucionado,
Gracias a todos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access: Unir texto de varios registros para un mismo cliente

Publicado por Agustin (2 intervenciones) el 26/01/2015 12:55:45
Hola Juan José,
Como solucionaste el erro en:
"ComentarioAcum.Value = Null"

???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access: Unir texto de varios registros para un mismo cliente

Publicado por Agustin (2 intervenciones) el 27/01/2015 20:18:13
Ya encontré el problema...
...el error es debido a que no encuentra el campo ComentarioAcum, por lo que se debe crear el código para que pueda recibir el código, es decir agregar:

Private Sub Region_WPAcum_Click()

End Sub

Sólo eso....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access: Unir texto de varios registros para un mismo cliente

Publicado por Juan Esteban (1 intervención) el 06/01/2016 22:02:18
Saludos.

Estoy tratando de utilizar esta solucion para un problema similar y simplemente el sistema no ejecuta ninguna acción ni me da ningún mensaje de error. Estoy utilizando Access 2013. Hay algo que haya cambiado?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access: Unir texto de varios registros para un mismo cliente

Publicado por Tito (1 intervención) el 19/01/2017 17:50:41
Buenos días Marcelo,

Estuve siguiendo los pasos uno a uno y copiando el código pero no realiza proceso alguno, ud me podría regalar una explicación mas detallada de como realizarlo.

Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access: Unir texto de varios registros para un mismo cliente

Publicado por David (1 intervención) el 07/07/2017 00:21:32
Hola. Alguien sabe cómo hacer esto mismo pero con instrucciones SQL, es decir, sin usar los controles del formulario sino los registros de la tabla directamente?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access: Unir texto de varios registros para un mismo cliente

Publicado por David (1 intervención) el 26/12/2017 19:37:12
¿Para que se usa el cuadro de texto independiente? ComentarioAcum
Cuando voy al segundo u otro registro diferente al primero, en el formulario y uso el botón "Comando4" para ejecutar me aparece el siguiente cuadro emergente

Se produjo un error "2105" en tiempo de ejecución:
No se puede ir al registro especificado
Finalizar Depurar Ayuda


A seleccionar Depurar me resalta la linea 47

La cual contiene:

DoCmd.GoToRecord acDataForm, "Formulario1", acNext
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access: Unir texto de varios registros para un mismo cliente

Publicado por miguel reyes (1 intervención) el 28/03/2018 06:17:14
Tengo el mismo problema el llegar la rutina

DoCmd.GoToRecord acDataForm, "Formulario1", acNext

me detiene el proceso y tengo que cortar el proceso

me puedes ayudar

para solucionar este proceso

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access: Unir texto de varios registros para un mismo cliente

Publicado por daniel (2 intervenciones) el 05/02/2018 18:46:54
Marcelo Buen día tengo una duda que me está volviendo loco, estoy haciendo una base de dato en acces 2007 nesecito hacer lo siguiente:

Nesecito hacer una consulta….

Tabla: Curva de Talles

Cod-Molde Color
01 Negro
02 Blanco
02 Rojo
03 Blanco
03 Negro
Y lo que quiero es:

Cod-Molde Color
01 Negro
02 Blanco, Rojo
03 Blanco, Negro

Desde ya te Agradezco. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access: Unir texto de varios registros para un mismo cliente

Publicado por daniel (2 intervenciones) el 06/02/2018 19:05:56
Buen día tengo una duda que me está volviendo loco, estoy haciendo una base de dato en acces 2007 nesecito hacer lo siguiente:

Nesecito hacer una consulta….

Tabla: Curva de Talles

Cod-Molde Color
01 Negro
02 Blanco
02 Rojo
03 Blanco
03 Negro
Y lo que quiero es:

Cod-Molde Color
01 Negro
02 Blanco, Rojo
03 Blanco, Negro

Desde ya te Agradezco. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Access: Unir texto de varios registros para un mismo cliente

Publicado por francy alvarez (1 intervención) el 03/05/2018 19:00:51
Este código me ayudó mucho. gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar