Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Suma el dBgrid vertical (https://www.clubdelphi.com/foros/showthread.php?t=77707)

gianfranco_tont 21-02-2012 06:20:46

Suma el dBgrid vertical
 
Ya logre que me hiciera la suma en un dbgrid horizontal ahora solo me falta hacerlo vertical: quiero que me sume todas la columna del total y que me lo refleje en un edit.text. Alguien puede indicarme como hacerlo? Olvide comentarle, que tengo un dbgrid atado a un dataste atravez de un datasource y un datasetprovider a un adoquery.

olbeup 21-02-2012 08:56:24

Hola gianfranco_tont

Lo puedes hacer de dos formas.

Cita:

1.) Registro a registro
Código Delphi [-]
...
var
  ImporteTotal: Extended;
begin
  with adoquery do
    while (not eof) do
    begin
      ImporteTotal := ImporteTotal + FieldByName('TOTAL').AsFloat;

      Edit1.Text := FormatFloat('#,#0.00', ImporteTotal);

      Next;
    end;
end;
Cita:

2.) Por SQL
Código Delphi [-]
...
var
  ImporteTotal: Extended;
begin
  with adoQry do
  begin
    SQL.Clear;

    SQL.Add('SELECT');
    SQL.Add('    SUM(TOTAL) AS IMPORTETOTAL');
    SQL.Add('  FROM Pedido');
    SQL.Add('  WHERE IDPEDIDO = 45');

    Open;

    ImporteTotal := FieldByName('IMPORTETOTAL').AsFloat;

    Edit1.Text := FormatFloat('#,#0.00', ImporteTotal);

    Close;
  end;
end;

Espero que te sirva o te oriente.

Un saludo.

gianfranco_tont 21-02-2012 18:12:11

Lo hice con la primera pero cuando paso al próximo registro no me hace la suma simplemente me muestra el valor de total del registro donde estoy ubicado.

olbeup 01-03-2012 09:01:59

No debería de darte problemas, Prueba esto otro:
...
Código Delphi [-]
var
  ImporteTotal: Extended;
begin
  ImporteTotal := 0;
  with adoquery do
    while (not eof) do
    begin
      ImporteTotal := ImporteTotal + FieldByName('TOTAL').AsFloat;

      Next;
    end;

    Edit1.Text := FormatFloat('#,#0.00', ImporteTotal);
end;

Un saludo.

Casimiro Noteví 01-03-2012 10:11:25

Recuerda ;)




.

olbeup 06-03-2012 08:42:25

Tienes toda la santa razón,

Antes de presentar la respuesta, la realizo en el procesador de texto y cuando me di cuenta ya era demasiado tarde.

Cita:

Perdón, Sorry, Désolé, Traurig
Un saludo :o

Casimiro Noteví 06-03-2012 10:02:25

Tampoco es necesario que te hagas el harakiri :)



La franja horaria es GMT +2. Ahora son las 10:02:59.

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