Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   actualizar datos grid maestro detalle!!!!! (https://www.clubdelphi.com/foros/showthread.php?t=45814)

david_uh 14-07-2007 00:56:50

actualizar datos grid maestro detalle!!!!!
 
Buen día caballeros
una consulta estoy trabajando con dos tablas una de vendedores y otra de pedidos
tengo un formulario con un dbloockupcombobox del cual selecciono un vendedor y en una grilla me aparecen los pedidos de este

propiedades de dblookupcombobox
*************************
Código Delphi [-]
listsource := datasource(clientes)
listfield := nombre vendedor
keyfield := id del vendedor
//la grilla tiene estas prppiedades
datasource := datasource(pedidos)

//este datasource tiene como mastersource al datasource de los vendedores

el hecho es cuando en el combo cambia el cliente se muestran sus pedidos en la grilla, pero lo que deseo es mostrar en un label al momento de que selecciono un vendedor: el nro de registros (pedidos de ese vendedor) asi como el total de ventas, es decir que se sumen los montos de todos los pedidos, la pregunta es como podria hacer eso mas concretamente donde o en eque evento deberia programar ello

gracias por cualquier respuesta

BlueSteel 14-07-2007 01:29:23

Hola david_uh

Bueno, primero las consultas de rutina.. .que delphi, que base de datos...??


te aconsejo realizar una Query, en donde puedes realizar la suma de las ventas...

De la forma que trabajo yo.. con Interbase seria algo similar a esto:

1 Query para sumar
2 Edit1 para ingresar codigo vendedor y mostrar total de ventas

Edit1.Text -> Codigo del Vendedor
Edit2.Text -> Monto Total de venta (del vendedor)

En la Queri tendria que tener esto

Código SQL [-]
     Query.SQL.Clear;
     Query.SQL.Add('Select Sum (Total_Vta) From Ventas');
     Query.SQL.Add('Where Cod_Vendedor=:Var1');
     Query.Params[0].AsString := Edit.Text;
     Query.Open;
     Query.First;

Para tener el total vendido, seria algo asi

Código Delphi [-]
Edit2.Text := IntToStr(Query['F_1']);

al menos con esto puedes solucionar parte de tu problema

BlueSteel 14-07-2007 01:33:34

en cuanto a obtener el total de Ventas realizadas por un vendedor, tendrias que utilizar:

1 query....
1 Edit

Código SQL [-]
     Query.SQL.Clear;
     Query.SQL.Add('Select * From Ventas');
     Query.SQL.Add('Where Cod_Vendedor=:Var1');
     Query.Params[0].AsString := Edit.Text;
     Query.Open;
     Query.First;

y para obtener el numero de registros.... seria algo así

Código Delphi [-]
Edit1.Text := IntToStr(Query.RecordCount)

ahora esto funciona a veces., yo lo utilizaba mucho y siempre bien.. pero el otro dia me di cuenta que en vez de entregarme 13, me decia 1...

y leyendo aca en foro.. no lo recomendaban.. por que siempre fallaba... mira este hilo http://www.clubdelphi.com/foros/show...ht=RecordCount

BlueSteel 14-07-2007 02:00:45

Encontre esta opcion, que la puede ocupar con 3 edit y 1 query.. y seria algo asi

Edit1.Text -> Cod Vendedor
Edit2.Text -> Total de Ventas
Edit3.Text -> Nº de Ventas

Código SQL [-]
     Query.SQL.Clear;
     Query.SQL.Add('Select Sum (Total_Vta), COUNT(*) From Ventas');
     Query.SQL.Add('Where Cod_Vendedor=:Var1');
     Query.Params[0].AsString := Edit.Text;
     Query.Open;
     Query.First;

Código Delphi [-]
  Edit2.Text := IntToStr(Query['F_1']);     // Si el valor es te tipo Integer pones IntToStr, y es de tipo Float pones FloatToStr
  Edit3.Text := IntToStr(Query['COUNT']);

ya y con eso deberias tener...

david_uh 14-07-2007 19:37:26

ok gracias por tu ayuda tu solución da más consistencia al programa al usar slq directamente muy agradecido si tienes msn el mio es david_uh gracias

roman 15-07-2007 04:13:28

Una alternativa, prácticamente equivalente, sería poner todo en una misma consulta que alimente al combo:

Código SQL [-]
select
  vendedores.campos,
  (
    select count(vendedor_id) from pedidos
    where vendedor_id = vendedores.id
  ) as num_pedidos,
  (
    select sum(monto) from pedidos
    where vendedor_id = vendedores.id
  ) as total_ventas
from vendedores

es decir, en la misma lista de vendedores tendremos el número depedidos de cada uno y el total de ventas. Con esto alimentamos el DBLookupComboBox y lo ponemos como maestro del DataSet de pedidos. Así, basta conectar un DBText o DBEdit a los campos num_pedidos y venta_total de la consulta maestra.

// Saludos


La franja horaria es GMT +2. Ahora son las 15:14:06.

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