Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-06-2016
mblascog mblascog is offline
Miembro
 
Registrado: may 2006
Posts: 131
Poder: 18
mblascog Va por buen camino
Ordenar tclientdataset

Buenas,
En otro post gnzsoloyo me ayudó a crear una sentencia sql, para mi, compleja. Como funciona no pienso ni tocar una coma, pero resulta que el resultado de esta consulta la visualizo en un dbgrid, donde se permite ordenar pulsado en el título de la columna.
Al mismo tiempo tengo otra query que cuelga del primero, asignando mastersource, ...
No he encontrado la manera de ordenar dichas sentencias por lo que me he decidido a crear unas tablas virtuales con el resultado y a partir de aquí he pensado que lo tendría todo resuelto, pero no.

He usado, primero JvMemoryData de las Jedi, pero no hay la propiedad MasterSource y sí SortedOnFields.
Como necesito las dos he probado TClientDataSet, este te permite MasterSource, pero no veo la manera de ordenar los campos.

Alguna ayudita! Gracias
Responder Con Cita
  #2  
Antiguo 05-06-2016
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
El orden inicial de los campos es el indicado en la consulta. Cambiando el orden en el que aparecen en la consulta SQL cambiará el orden en la tabla. No se me ocurre otra solución.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 05-06-2016
mblascog mblascog is offline
Miembro
 
Registrado: may 2006
Posts: 131
Poder: 18
mblascog Va por buen camino
Gracias Ñuño
Responder Con Cita
  #4  
Antiguo 05-06-2016
mblascog mblascog is offline
Miembro
 
Registrado: may 2006
Posts: 131
Poder: 18
mblascog Va por buen camino
Se me ha pasado el tiempo para poder editar el anterior post, por lo que he tenido que crear uno nuevo

Si así no se puede, tendré que volver al inicio e intentar crear en tiempo de ejecución las sentencias sql.

La sentencia sql es la siguiente:

Código SQL [-]
SELECT  idclient,  client,  concepte, historic,  directori,  idtasca,  idestat,  datavenciment,  estat,  color
FROM 
    (SELECT c.id idclient, c.client, t.concepte, t.historic, c.directori, t.id idtasca, e.id idestat, s.datavenciment, e.estat, e.color
    FROM clients c 
            INNER JOIN tasques t ON t.idclient = c.id
            INNER JOIN subtasques s ON s.idtasca = t.id
            INNER JOIN estat e ON s.idestat = e.id
    ORDER BY c.client ASC, s.datavenciment DESC) t1
GROUP BY client, idtasca

Y devuelve estos registros:


De estos registros, solo muestro en un dbgrid Client, Concepte y Estat. Y éstos son los únicos campos por los que en un momento dado tendré que ordenar
- por client, ya está, ya que esta misma ordena por client
- por concepte, la ha modificado así, y también funciona:

Código SQL [-]
SELECT  idclient,  client,  concepte, historic,  directori,  idtasca,  idestat,  datavenciment,  estat,  color
FROM 
    (SELECT c.id idclient, c.client, t.concepte, t.historic, c.directori, t.id idtasca, e.id idestat, s.datavenciment, e.estat, e.color
    FROM tasques t 
            INNER JOIN subtasques s ON t.id = s.idtasca
            INNER JOIN clients c ON t.idclient = c.id
            INNER JOIN estat e ON s.idestat = e.id
    ORDER BY t.concepte ASC, s.datavenciment DESC) t1
GROUP BY concepte

- en cambio, por estat, no.
Código SQL [-]
SELECT  idclient,  client,  concepte, historic,  directori,  idtasca,  idestat,  datavenciment,  estat,  color
FROM 
    (SELECT c.id idclient, c.client, t.concepte, t.historic, c.directori, t.id idtasca, e.id idestat, s.datavenciment, e.estat, e.color
    FROM estat e 
            INNER JOIN subtasques s ON s.idestat = e.id
            INNER JOIN tasques t ON t.id = s.idtasca
            INNER JOIN clients c ON t.idclient = c.id
    ORDER BY e.estat ASC, s.datavenciment DESC) t1
GROUP BY estat

- el registro con Client2 sale duplicado y no aparece uno cuyo cliente es Didac (habría de haber 2 con Didac)



Gracias por vuestra ayuda
Responder Con Cita
  #5  
Antiguo 05-06-2016
mblascog mblascog is offline
Miembro
 
Registrado: may 2006
Posts: 131
Poder: 18
mblascog Va por buen camino
Yo misma me contesto:

Código SQL [-]
SELECT idclient, client, concepte, historic, directori, idtasca, idestat, datavenciment, estat, color
FROM
  (SELECT c.id idclient, c.client, t.concepte, t.historic, c.directori, t.id idtasca, e.id idestat, s.datavenciment, e.estat, e.color
  FROM subtasques s, clients c, tasques t, estat e      
  WHERE s.idtasca = t.id AND s.idestat = e.id AND t.idclient = c.id
  ORDER BY idtasca,s.datavenciment DESC) t1
GROUP BY idtasca
ORDER BY estat

Y sólo tengo que cambiar el ORDER BY por el campo que tengo que ordenar.

Seguro que es muy fácil para los que entendeis, pero yo que no domino, mis horas me ha costado (no hay mal que por bien no venga .... a la próxima tardaré menos)
Gracias.
Responder Con Cita
  #6  
Antiguo 06-06-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola mblascog.

Me alegro que lo solucionaras , pero creo que también te podrían resultar interesantes estos enlaces:
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TClientDataset en ADO trex2000 Conexión con bases de datos 1 08-09-2006 17:34:33
TClientDataset Uso samantha jones Varios 1 09-03-2005 21:22:20
TClientDataSet carlomagno Firebird e Interbase 0 09-09-2004 11:29:23
TClientDataSet xml carlomagno Firebird e Interbase 0 03-09-2004 11:32:25
TClientDataSet y el SO tgsistemas OOP 4 02-08-2004 15:01:20


La franja horaria es GMT +2. Ahora son las 21:55:46.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi