Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Master Detail con querys (https://www.clubdelphi.com/foros/showthread.php?t=79411)

oscarac 03-07-2012 04:34:15

Master Detail con querys
 
Buenas noches, no se si el titulo se haga entender pero tengo una duda
imaginemos que tengo un query donde acumulo los consumos por producto algo asi como esto

Código SQL [-]
Select Kod, Sum (Cantidad) As Cant from detalle where fecha = '01/07/2012'

es obvio que esta sumatoria se basa en un detalle
me gustaria saber como hacer para que se muestre el detalle de cada una de las sumas de las cantidades que se muestran en una grilla

tengo la idea de generar un query con el detalle
Código SQL [-]
Select Kod, Cantidad from detalle where fecha = '01/07/2012'

pero queria saber si existe alguna forma de hacerlo mas automatico, porque abrir el query cada vez que se mueve el registro en el grid.. demora un poco

alguien conoce una forma mas optimizada?

gracoas

CoCaInE 03-07-2012 05:26:22

Cita:

Empezado por oscarac (Mensaje 436569)
Buenas noches, no se si el titulo se haga entender pero tengo una duda
imaginemos que tengo un query donde acumulo los consumos por producto algo asi como esto

Código SQL [-]
Select Kod, Sum (Cantidad) As Cant from detalle where fecha = '01/07/2012'

es obvio que esta sumatoria se basa en un detalle
me gustaria saber como hacer para que se muestre el detalle de cada una de las sumas de las cantidades que se muestran en una grilla

tengo la idea de generar un query con el detalle
Código SQL [-]
Select Kod, Cantidad from detalle where fecha = '01/07/2012'

pero queria saber si existe alguna forma de hacerlo mas automatico, porque abrir el query cada vez que se mueve el registro en el grid.. demora un poco

alguien conoce una forma mas optimizada?

gracoas

mmmmmmm....debes de tener un campo con la misma longitud y tipo en la tabla maestro y en la tabla detalle luego tienes que enlazarlas por medio a ese campo suponiendo que el campo kod es el campo de elance entre las dos tablas y quieres mostrar la sumatoria en el detalle seria algo asi para el query del detalle

Código SQL [-]
Select Kod, Cantidad from detalle where fecha = '01/07/2012' group by Kod

Casimiro Notevi 03-07-2012 09:42:55

Aunque tampoco debe tardar al cambiar de registro, salvo que no tenga índice el campo o, no sé, algo raro. No debe tardar.

ozsWizzard 03-07-2012 12:08:29

Hay algo que no me cuadra, y es que a la primera select le falta el group.

Y como dice Casimiro, no debe tardar demasiado en hacer una select simple, a menos que tenga una conexión muy mala con la base de datos o que no tengas indice o lo que sea.

A lo mejor quieres mejorar el rendimiento por la carga inicial, que tardará más de la cuenta. Si es por eso, lo mejor es usar:
Código Delphi [-]
   ClientDataSet1.DisableControls;
   CargarDatos;
   ClientDataSet1.EnableControls;

Y ya no se me ocurre nada más

oscarac 04-07-2012 06:03:42

Cita:

Empezado por ozsWizzard (Mensaje 436579)
Hay algo que no me cuadra, y es que a la primera select le falta el group.

Y como dice Casimiro, no debe tardar demasiado en hacer una select simple, a menos que tenga una conexión muy mala con la base de datos o que no tengas indice o lo que sea.

A lo mejor quieres mejorar el rendimiento por la carga inicial, que tardará más de la cuenta. Si es por eso, lo mejor es usar:
Código Delphi [-]
   ClientDataSet1.DisableControls;
   CargarDatos;
   ClientDataSet1.EnableControls;

Y ya no se me ocurre nada más

es cierto
me olvide colocar el group
he probado la opcion de abrir y cerrar un segundo query y funciona rapido
ahora quisiera preguntar, en el grid en que parte debo colocar el codigo para que cuando me mueva de registro en registro se active el segundo query

en este momento lo estoy haciendo en el keyup

Casimiro Notevi 04-07-2012 10:48:57

Cita:

Empezado por oscarac (Mensaje 436663)
en el grid en que parte debo colocar el codigo para que cuando me mueva de registro en registro se active el segundo query en este momento lo estoy haciendo en el keyup

En el grid, no, en el dataset o en su datasource, en el evento de cambio de registro, creo que era onchange, no tengo ahora ningún delphi por aquí.

ozsWizzard 05-07-2012 11:37:20

Como no sé exactamente que has hecho...

Si son campos calculados, probaría en el OnCalcFields.

Lo que se lanza seguro cada vez que te mueves de registro es el AfterScroll.

Un saludo.


La franja horaria es GMT +2. Ahora son las 02:20:54.

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