Imprimir página | Cerrar ventana

Encadenar valores de una tabla(Mihura)

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84285
Fecha de impresión: 17/Agosto/2019 a las 19:06


Tema: Encadenar valores de una tabla(Mihura)
Publicado por: rokoko
Asunto: Encadenar valores de una tabla(Mihura)
Fecha de publicación: 11/Febrero/2019 a las 17:51
Estoy intentando utilizar esta rutina de Mihura, pero no la hago funcionar, algo me debo estar perdiendo.Unhappy

La rutina esta en un modulo, me he creado una tabla como en el ejemplo de Mihura TPR1, pero nada, no me sale ni a la de tres...
http://www.accessaplicaciones.com/ejemplos.html

Ejemplo encadenar valores de una tabla.



'--------------------------------------------------------------------------------------------- 
' Autor : JESUS MANSILLA CASTELLS -Mihura-
'--------------------------------------------------------------------------------------------- 
Function RT_Encadenar(Separador As String, Tabla As String, Campo As String, Optional Condición As String) As String 
'** Es un destrozo de una de Raipon 
'** RT_Encadenar(' - ', 'NombreTabla', 'CampoAVisualizar', 'Condicion') 
'** RT_Encadenar(' - ', 'Tabla LEFT JOIN Tabla1 ON Tabla.codi = Tabla1.codi1', 'Descripcion_tasi', 'Codprofesor_aspr = 10') 
'** RT_Encadenar(' - ', 'Tabla LEFT JOIN Tabla1 ON Tabla.codi = Tabla1.codi1', 'Descripcion_tasi', 'Codprofesor_aspr = ' & CampoTabla) 
Dim MiTablaRT As Recordset 
On Error Resume Next 
    
     RT_Encadenar = "" 
     ' 
     Set MiTablaRT = DbExterna.OpenRecordset("SELECT " & Campo & " AS Resultado FROM (" & Tabla & ") WHERE " & Campo & " Is Not Null" & IIf(Len(Condición) > 0, " AND " & Condición, ""), dbOpenForwardOnly) 
         If Err.Number > 0 Then 
             RT_Encadenar = "" 
             rst.Close 
             Exit Function 
         End If 
     Do Until MiTablaRT.EOF 
         If Len(RT_Encadenar) = 0 Then 
             RT_Encadenar = MiTablaRT!Resultado 
           Else 
             RT_Encadenar = RT_Encadenar & Separador & MiTablaRT!Resultado 
         End If 
         MiTablaRT.MoveNext 
     Loop 
     MiTablaRT.Close 
    
End Function 



Respuestas:
Publicado por: rokoko
Fecha de publicación: 11/Febrero/2019 a las 18:01
Encontre el "fallo", CurrentDB en vez de DbExterna...


Set MiTablaRT = DbExterna.OpenRecordset("SELECT " & Campo & " AS Result

Set MiTablaRT = CurrentDb.OpenRecordset("SELECT " & Campo & " AS Result

Saludos


Publicado por: Mihura
Fecha de publicación: 11/Febrero/2019 a las 18:01
Otro que se piensa que somos adivinos ....  Clown

Si no pones lo que has hecho mal vamos a poder ayudarte.

Un saludo. Tongue


Edito: hemos escrito a la vez, ... 


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: rokoko
Fecha de publicación: 11/Febrero/2019 a las 19:56
jaja me estaba volviendo loco

Otra cosa, sobre una consulta funciona?? no lo consigo!!!! quizas no se pueda....


Publicado por: Mihura
Fecha de publicación: 11/Febrero/2019 a las 20:47
Exactamente igual que con una tabla.

-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: rokoko
Fecha de publicación: 11/Febrero/2019 a las 23:20
Publicado originalmente por Mihura Mihura escribió:

Exactamente igual que con una tabla.

Pues eso pensaba yo, pero no me funciona, y no veo el porque

de una tabla

SELECT tbDetallesAlumno.IdAlumnos, RT_Encadenar("-","tbDetallesAlumno","CursoInscrito","idAlumnos=" & [idAlumnos] & "") AS ConceptoCursos
FROM tbDetallesAlumno
GROUP BY tbDetallesAlumno.IdAlumnos;

de una consulta, qryFechasCurso esta basada en la tabla tbDetallesAlumno, en teoria en tu funcion con cambiar el nombre de la tabla por el de la consulta deberia bastar, el resto es igual

SELECT qryFechasCurso.IdAlumnos, RT_Encadenar("-","qryFechasCurso","CursoInscrito","idAlumnos=" & [idAlumnos] & "") AS ConceptoCursos
FROM qryFechasCurso
GROUP BY qryFechasCurso.IdAlumnos;



Publicado por: Mihura
Fecha de publicación: 12/Febrero/2019 a las 08:50
Esto es una consulta:
ClientesConsulta
Codigo Nombre
1 Pepillo
2 Luis
3 Pepe
4 a


Esto es una tabla:
Sedes
Id ClienteId Sede
1 1 Madrid
2 1 Móstoles
3 2 Toledo
4 2 Illescas
5 3 Principal

Con esta SELECT (lo he probado en VBA, lo digo por las comillas, dobles comillas, etc):

    SQL = "SELECT Codigo, Nombre, RT_Encadenar(' - ', 'Sedes', 'Sede', 'ClienteId = ' & Codigo) As Sedes FROM ClientesConsulta"


Sale esto:
_AAA_Prueba
Codigo Nombre Sedes
1 Pepillo Madrid - Móstoles
2 Luis Toledo - Illescas
3 Pepe Principal
4 a





-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: rokoko
Fecha de publicación: 13/Febrero/2019 a las 18:43
Buanas, ya he consegudo hacerlo funcionar en consultas, pero lo curioso es que en unas va y en otras no. Para mi que hago todo bien, pero sera que no jajaj

Donde queria que funcionase, ya funciona.
Se puede cerrar

Saludos



Imprimir página | Cerrar ventana