Access - Función para elaborar cadena a partir de lectura vertical de registros

 
Vista:

Función para elaborar cadena a partir de lectura vertical de registros

Publicado por Ezel (50 intervenciones) el 06/06/2020 17:40:47
Hola a todos!!! Les pido su valiosa ayuda y trataré de explicarlo fácil. Imagínense una consulta de selección que devuelve 4 registros y uno de sus campos se llama NombreTitular, que mostrará verticalmente, por ejemplo, Ana en el primer registro, Juan en el segundo, Pedro en el tercero y José en el cuarto. Lo que necesito es una Función que me convierta en cadena estos valores y obtenga algo como: "Ana, Juan, Pedro, Jose". Es decir, que me relacione consecutivamente los valores que en ese campo aparecen verticalmente hacia abajo.
Gracias y abrazos!!!
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

Función para elaborar cadena a partir de lectura vertical de registros

Publicado por Anonimo (3316 intervenciones) el 06/06/2020 20:05:46
Para no reiterase en algo que esta tratado (con dudas resueltas y demás), localiza mensajes que traten el tema como CONCATENAR pues eso es lo que al parecer pretendes, concatenar datos y obtener un campo calculado.
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

Función para elaborar cadena a partir de lectura vertical de registros

Publicado por Ezel (50 intervenciones) el 06/06/2020 22:03:52
Gracias por responder. Pero la concatenación que pretendo incluye valores contenidos en diferentes registros de un mismo campo. 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

Función para elaborar cadena a partir de lectura vertical de registros

Publicado por Anonimo (3316 intervenciones) el 07/06/2020 00:40:31
En dos palabras:

En un Buffet libre, el contenido del plato lo seleccionas tu (para eso es libre)

Y si te agrada la combinación, puedes plantearte un banquete para celebrar algo y esa combinación ser el menú del dí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

Función para elaborar cadena a partir de lectura vertical de registros

Publicado por Ezel (50 intervenciones) el 09/04/2021 18:34:55
Amgos tengo este asunto pendiente y no he logrado solucionarlo. He buscado dentro y fuera de este foro, con resultados infructuosos. Si alguien ha tenido una situación similar agradecería su ayuda. 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

Función para elaborar cadena a partir de lectura vertical de registros

Publicado por Anonimo (3316 intervenciones) el 09/04/2021 20:10:22
Ahora mismo he efectuado una búsqueda en este mismo foro y me han salido un montón de respuestas.

La búsqueda ha sido muy simple, he utilizado 'CONCATENAR' y con excelentes resultados, si no es valido ninguno de ellos para la funcionalidad que pretendes, poco mas se podrá hacer (posiblemente datos fuera de normas).
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

Función para elaborar cadena a partir de lectura vertical de registros

Publicado por Ezel (50 intervenciones) el 09/04/2021 22:14:55
Gracias Anonimo por comentar. Si tienes acceso al historial de búsquedas notarás que hice exactamente lo mismo, varias veces, solo que no pude dar con la solución porque mis conocimientos son más limitados y por eso solicité una ayuda más particularizada, enfocada en mi caso. No creo que mi propósito sea algo 'fuera de normas'. Pretendo concatenar los valores de un MISMO CAMPO, en varios (todos) los REGISTROS. Por ejemplo: Obtener "Ana, Juan, Pedro" a partir de un campo destinado a nombres de personas. Si los resultados de tu búsqueda fueron excelentes (como es evidente que son también tus conocimientos) con mucha humildad te pido que compartas la solución a mi duda. 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

Función para elaborar cadena a partir de lectura vertical de registros

Publicado por Ezel (50 intervenciones) el 09/04/2021 23:12:40
Gracias nuevamente. Ya había intentado con ese ejemplo. Lo hice de esa manera sustituyendo el nombre de la función y los nombres de la tabla origen y de los respectivos campos.
Ocurre que al ejecutar la consulta me dice que la función no está definida, a pesar de que la definí como pública.
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

Función para elaborar cadena a partir de lectura vertical de registros

Publicado por Anonimo (3316 intervenciones) el 10/04/2021 00:29:24
Si quieres llegar a alguna parte, publica lo que has intentado para poder modificar lo que sea incorrecto y al final será algo que tú habrás creado.

Es tan sencillo como publicar los nombres de tablas, campos y su tipo, luego la función que has creado (se supone que basada en lo que habrás intentado tomando ejemplos que a otros les funcionan).
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

Función para elaborar cadena a partir de lectura vertical de registros

Publicado por Ezel (50 intervenciones) el 10/04/2021 03:26:22
Bueno, vamos allá:
Lo que pretendo es agrupar por [Id_cliente] y concatenar en cada caso sus actividades [Activ].
Ya logré la función en un Módulo, a la que nombré ConcatenarActiv y Access la reconoce, pero me dice que tiene error de sintaxis.
Un detalle que pudiera ser la causa: tanto [Id_cliente] como [Activ] tienen formato número (Entero largo) y creo que en el ejemplo que me basé tienen formato texto.
El sitio no me permite publicar las imágenes porque no estoy logeado. Cuando lo intento me dice correo o contraseña incorrectos, a pesar de que estoy poniendo la contraseña que me mandaron por mi correo.
Gracias por la ayuda y la paciencia
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
Imágen de perfil de Ezel
Val: 62
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Función para elaborar cadena a partir de lectura vertical de registros

Publicado por Ezel (24 intervenciones) el 10/04/2021 03:40:35
FunctionConcatenarActiv
MsjErrorConsulta
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

Función para elaborar cadena a partir de lectura vertical de registros

Publicado por Anonimo (3316 intervenciones) el 10/04/2021 16:06:32
En base a los campos mostrados de esa tabla (ver ‘consulta1’) y asumiendo que se desea obtener una lista agrupada de los que participan en una determinada actividad:
1.- Se filtra por actividad (que se indica que es numérica)
2.- Se obtendrán una serie de registros de los que ‘solo’ interesa el nombre (o nombres y apellidos)
3.- Se tendrá que tener en cuenta que todos los campos tengan datos (pueden faltar sobre todo los segundos apellidos)

Simplificando: solo parece que interesen los nombres de pila

La SQL de esa consulta seria esta:
1
Select Nomb From Lista_cp_activ Where Activ = [aquí un numero]

Nos devolverá una lista de nombres (pero ‘en vertical’), pasémosla a ‘horizontal’

Esta función devuelve (para una determinada actividad) el nombre de los que participan en ella

Se crea en un módulo existente o nuevo (puede llamarse ‘módulo xx’ pero NUNCA como otro objeto o función)

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
Option Compare Database ‘ para que se utilicen las opciones de la configuración regional
Option Explicit ‘ esto exigirá que se declaren las variables, evita errores
 
'la función en si misma
Public Function ConcatenarActiv(La_Activ As Long) As String
'esto crea una función que necesitara un dato (parámetro) de tipo entero largo (un numero) y devolverá una cadena de texto
'Dimensionamos (creamos) la variable, un objeto recordset (símil de una tabla) para el resto se reutilizan las que ya existen
Dim Tbl_Temp As DAO.Recordset
'Le asignamos los datos y lo abrimos para: solo lectura
Set Tbl_Temp = CurrentDb.OpenRecordset("Select Nomb From Lista_cp_activ Where Activ =" & La_Activ, , dbReadOnly)
'Verificamos que tiene datos, si no los tiene salimos
If Tbl_Temp.RecordCount = 0 Then Exit Function
'  tiene, lo 'agitamos' para que ninguno se oculte (símil de ‘pasar lista’)
Tbl_Temp.MoveLast: Tbl_Temp.MoveFirst
'Lo recorremos y creamos la lista que iremos asignado a la función
Do Until Tbl_Temp.EOF ' mientras no se llega al final
'con esta línea añadimos un separador si hay datos en la variable
If Len(ConcatenarActiv) <> 0 Then ConcatenarActiv = ConcatenarActiv & ", "
' añadimos el nombre
ConcatenarActiv = ConcatenarActiv & Tbl_Temp!Nomb
' vamos al siguiente
Tbl_Temp.MoveNext
' repetimos el bucle
Loop
'hemos finalizado,  cerramos el recordset ( aunque sea de solo lectura es recomendable hacerlo)
Tbl_Temp.Close
' limpiamos el espacio de memoria utilizado (es importante no dejar atrás basura
Set Tbl_Temp = Nothing
‘aquí finaliza la función
' Se la utilizara así: ConcatenarActiv([aquí un número o una variable numérica, la actividad])
' Ejemplo===>>  Participantes: ConcatenarActiv([activ]), la consulta deberá filtrar (no se necesita agrupar) las actividades y presentar solo una de cada.
End Function

He comentado lo que 'hace' cada línea del código para que si se desea (y mejor en una copia) se pueda experimentar con ella
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
Imágen de perfil de Ezel
Val: 62
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Función para elaborar cadena a partir de lectura vertical de registros

Publicado por Ezel (24 intervenciones) el 10/04/2021 21:28:47
Muchas gracias Anónimo por tu ayuda. Lo probaré pero de antemano te reitero mi gratitud por tu ayuda y tu paciencia. Llevo años trabajando con Access pero me estoy iniciando en VBA. 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