** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Encadenar valores de una tabla(Mihura)
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoEncadenar valores de una tabla(Mihura)

 Responder Responder
Autor
Mensaje
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 1977
Enlace directo a este mensaje Tema: Encadenar valores de una tabla(Mihura)
    Enviado: 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 
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 1977
Enlace directo a este mensaje Enviado: 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
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10839
Enlace directo a este mensaje Enviado: 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, ... 


Editado por Mihura - 11/Febrero/2019 a las 18:02
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 1977
Enlace directo a este mensaje Enviado: 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....
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10839
Enlace directo a este mensaje Enviado: 11/Febrero/2019 a las 20:47
Exactamente igual que con una tabla.
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 1977
Enlace directo a este mensaje Enviado: 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;

Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 10839
Enlace directo a este mensaje Enviado: 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.

Access Aplicaciones
Tecsys.es
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 1977
Enlace directo a este mensaje Enviado: 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
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable