Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Ordenar dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=16948)

jzk 17-12-2004 11:59:22

Ordenar dbgrid
 
Tengo un programa con la siguiente estructura:

Query1, DBGrid,Table1,table2

El DbGrid está asociado a la Query1, que utilizo para insertar,modificar, eliminar registros.
Para conseguir esta acción debo tener RequesLive = True, lo que me impide hacer subselect en esta query, subselect que necesito para obtener descripción de ciertos campos.
Para eso utilizo la table1 y table2 que tengo como tablas detalle para obtener la descripción que necesito y que muestro en el dbgrid.

Bien, una vez situados (al menos eso espero) paso a explicar mi problema;
Cuando pulso en cualquier cabecera del dbgrid ordeno los datos por el campo de la columna seleccionada, pero cuando ese campo es el que he definido/obtenido a través de la tabla1 y tabla2 me provoca un error donde me indica que el campo no está definido y es porque no está dentro de la propia sql, es decir dentro de Query1.Sql.Text sino a través de Fields Editor

¿Existe algún método/posibilidad de poder ordenar este dbgrid por los campos obtenidos a través de la tabla detalle.?

Estoy utilizando el dbgrid de las rx para delphi6 con una base de datos de Informix
Un saludo

Neftali [Germán.Estévez] 17-12-2004 12:15:41

Cita:

Empezado por jzk
El DbGrid está asociado a la Query1, que utilizo para insertar,modificar, eliminar registros.
Para conseguir esta acción debo tener RequesLive = True, lo que me impide hacer subselect en esta query, subselect que necesito para obtener descripción de ciertos campos.
Para eso utilizo la table1 y table2 que tengo como tablas detalle para obtener la descripción que necesito y que muestro en el dbgrid.

Las soluciones que se me ocurren:

(1) Cargar todos los datos de la consulta en memoria, cosa que funcionaría (dejando las ordenaciones al DBGrid), pero altamente ineficiente y yo la descartaría (a no ser que la tabla sea pequeña y sepas con seguridad que no va a crecer).

(2) Construir una tabla temporal en el servidor con todos los datos y lanzar la consulta contra esa tabla. Ineficiente también, aunque un poco menos que la anterior. Tampoco me gusta personalmente.

(3) La tercera pasa por conseguir que en una sóla consulta tengas todos los datos; ¿No hay forma de obtener esas descripciones con una única sentencia SQL? Utilizando JOIN's. Creo que es la correcta, pero sin saber la estructura de las tablas...

jzk 17-12-2004 12:51:13

Gracias por tu respuesta Neftali.

De las tres primeras soluciones, las dos primeras como tu indicas las voy a descartar por el volumen de datos con el que voy a tratar.

Y la tercera no me es posible con la estructura actual del programa porque el objeto Query1 es el que utilizo para la inserción/modificación/borrado de datos y para realizar una Join necesito poner la propiedad RequesLive a False, lo que me impediría las gestión que acabo de explicar de los datos.

Me ha dejado patidifusa este problemilla que me ha surgido.

Neftali [Germán.Estévez] 17-12-2004 13:25:16

¿Y hacer la consulta con JOIN y realizar las inserciones aparte, no te es posible?
Dejar el DGGrid de sólo lectura vamos, y crear un form de edición; En ese caso ya no tendrías ese problema. ¿Es posible? o ¿tienes alguna limitación para éste comportamiento?

jzk 17-12-2004 13:45:45

Es lo que haré al final, me llevará un poco de tiempo pero no veo otra solución.

Gracias por tu atención.


La franja horaria es GMT +2. Ahora son las 14:40:04.

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