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 09-06-2016
Belen12 Belen12 is offline
Miembro
NULL
 
Registrado: may 2016
Posts: 29
Poder: 0
Belen12 Va por buen camino
¿Cómo mostrar la suma de un dbgrid en un tedit?

Hola buenas tardes. tengo un pequeño programa que realizo ventas el cual esta asociado a una base de datos en el formulario de venta tengo un dbgrid asociado a un datasource que el mismo se asocia a la tabla detalle venta. En el dbgrid muesto los siguientes campos (productos,cantidad,precio,subtotal)
bien atravez de un boton buscar ingreso al formulario de productos y por medio de un tedit seleciono la cantidad hasta este punto todo me funciona bien.

El tema es el siguiente cuando necesito guardar el total que este se almacena en una tabla llamada venta de la base de datos (que es la suma de los subtotales que estan cargados en el dbgrid) no me realiza dicha operacion y a la vez necesito que este resultado se muestre en un tedit(eTotal) en el formulario de ventas y se sume o se reste a medida que agregue o quite productos en el dbgrid... Bien espero haber sido clara les dejo el codigo y las tabla de la base de datos

Código SQL [-]
tabla venta
idventa
total

Código SQL [-]
detalle_venta
iddetalle
idproducto
idventa
subtotal
precio
cantidad

Aqui el codigo del boton selecionar que se encuentra en el formulario de productos

Código Delphi [-]
  
 fmodulo.tDetalle.Insert;
 fmodulo.tDetalle['idventa']:= fmodulo.tVentas['idventa'];
 fmodulo.tDetalle['idproducto'] := fmodulo.qProductos['idproducto'] ;
 fmodulo.tDetalle['cantidad'] := StrToInt(self.eCantidad.Text);
 fmodulo.tDetalle['precio'] :=  fmodulo.qProductos['precio_unit']  ;
 fmodulo.tDetalle['subtotal']  := fmodulo.tDetalle['precio']*StrToInt(eCantidad.Text)  ;
  fmodulo.tDetalle.Post;
 fmodulo.tVentas.Edit;
 fmodulo.tVentas['total']:= fmodulo.tVentas['total'] +   fmodulo.tDetalle['subtotal'];
 fmodulo.tVentas.Post;


desde ya muchas gracias espero que puedan ayudarme
Responder Con Cita
  #2  
Antiguo 09-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 Belen12.

No logro que me que me quede claro el planteo de tu consulta, pero basándome en el título de tu mensaje creo entender que deseas mostrar la sumatoria de los datos ingresados en una columna de una tabla.

Como desconozco el gestor de BD y componente con que te estas conectando, debo partir del DBGrid; entonces para obtener la sumatoria del campo SUBTOTAL podrías hacer:
Código Delphi [-]
function GetTotal(DS: TDataSet): Currency;
var
  BM: Pointer;
begin
  Result := 0;
  BM := DS.GetBookmark;
  DS.DisableControls;
  try
    DS.First;
    while not DS.Eof do
    begin
      Result := Result + DS.FieldByName('SUBTOTAL').AsCurrency;
      DS.Next;
    end;
  finally
    DS.EnableControls;
    DS.GotoBookmark(BM);
    DS.FreeBookmark(BM);
  end;
end;
Ejemplo de uso:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  eTotal.Text := FormatFloat('0.00', GetTotal(DBGrid1.DataSource.DataSet));
  ...
Contando con mas información tal vez exista otra opción o forma mas eficiente de realizarlo, cualquier cosa nos comentas.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 10-06-2016
Belen12 Belen12 is offline
Miembro
NULL
 
Registrado: may 2016
Posts: 29
Poder: 0
Belen12 Va por buen camino
Gracias Por responder

Cita:
Empezado por ecfisa Ver Mensaje
Hola Belen12.

No logro que me que me quede claro el planteo de tu consulta, pero basándome en el título de tu mensaje creo entender que deseas mostrar la sumatoria de los datos ingresados en una columna de una tabla.

Como desconozco el gestor de BD y componente con que te estas conectando, debo partir del DBGrid; entonces para obtener la sumatoria del campo SUBTOTAL podrías hacer:
Código Delphi [-]
function GetTotal(DS: TDataSet): Currency;
var
  BM: Pointer;
begin
  Result := 0;
  BM := DS.GetBookmark;
  DS.DisableControls;
  try
    DS.First;
    while not DS.Eof do
    begin
      Result := Result + DS.FieldByName('SUBTOTAL').AsCurrency;
      DS.Next;
    end;
  finally
    DS.EnableControls;
    DS.GotoBookmark(BM);
    DS.FreeBookmark(BM);
  end;
end;
Ejemplo de uso:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  eTotal.Text := FormatFloat('0.00', GetTotal(DBGrid1.DataSource.DataSet));
  ...
Contando con mas información tal vez exista otra opción o forma mas eficiente de realizarlo, cualquier cosa nos comentas.

Saludos
Disculpa si no fui tan clara me exprese lo mejor que pude haber. Utilizo los componentes zeos para conectarme a la base de datos la cual la cree usando mysql. Si basicamente eso es lo que quiero la idea es realizarlo desde el boton "selecionar" que esta en el formulario productos y a medida que valla cargando productos estos se vallan sumando y mostrando en el Tedit en el formulario venta. E probado tu codigo y no logro hacer que funcione
Responder Con Cita
  #4  
Antiguo 10-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 Belen12.
Cita:
Empezado por Belen12 Ver Mensaje
...
E probado tu codigo y no logro hacer que funcione
El código me funciona perfectamente, como te muestro en esta imágen:


Y en tu caso que sucede, ¿ te dá un error ? ¿ no muestra correctamente el resultado ? ¿ no lo muestra en absoluto ? ¿ ... ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 11-06-2016
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
No se si el componente tenga la opcion de crear un campo de suma o calculado como el tclientdataset. Si no tienes eso tambien tienes el txquery o simplemente recorrerás el dataset y vas sumando o recorrer el buffer si lo posee para que afectes la parte visual. Aunque de verdad ahorita me cuesta ayudar con dbaware ya que ahorita solo programa modelo vista controlador. Espero eso te pueda ayudar.

Enviado desde mi SM-G900H mediante Tapatalk
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #6  
Antiguo 13-06-2016
Belen12 Belen12 is offline
Miembro
NULL
 
Registrado: may 2016
Posts: 29
Poder: 0
Belen12 Va por buen camino
Gracias

Hola disculpa la tardanza al contestar. Ya solucione el prolema tu codigo funciona perfecto fui yo la que adapte mal el codigo a mi programa muchas gracias
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
TDBAdvGrid mostrar suma columnas Jose Manuel Varios 2 14-09-2014 19:25:36
¿Cómo pasar varios datos de un TEdit a un DbGrid? day_eli Conexión con bases de datos 3 29-05-2007 22:22:29
como hacer que una columna del dbgrid contenga un valor de un TEdit en cada celda Shidalis OOP 2 02-08-2005 12:05:35
mostrar suma alachaise PHP 1 14-04-2005 15:57:05
mostrar la suma de un campo ebeltete SQL 2 04-09-2004 01:43:48


La franja horaria es GMT +2. Ahora son las 21:44:39.


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