Fórum Somar linhas selecionadas n grid, como? #297428

28/09/2005

0

Olá pessoal,

Estou precisando somar todas as linhas selecionadas em um DbGrid. O problema é que o campo ValorTotal que utilizado para saber o valor total da parcela, é um campo calculado. Assim toda vez que faço um While ele irá fazer TODOS os calculos de Todas as parcelas com meu codigo abaixo. Alguem tem alguma ideia de como fazer isso?

  with vClntDtStSoma do
  begin
    for Cont := 0 to SelectedRows.Count - 1 do
    begin
      GotoBookmark(Pointer(SelectedRows[Cont]));
      if vClntDtStSoma.FieldByName(FCampoStatus).Value <>
        FValorStatusPago then
      begin
        ValorLinha := vClntDtStSoma.FieldByName(NomeCampoSoma).Value;
        Somatorio := Somatorio + ValorLinha;
      end;
    end;
  end;


Como o campo é calculado o While é acionado cada vez que clico em uma linha, isso está matando o algorítimo, pois está lento. Alguem sabe como posso fazer ou tem alguma sugestão para fazer isso com campo calculado?

Obrigado.


Yallebr

Yallebr

Responder

Posts

28/09/2005

Cpd_arim

Para realizar uma soma de campo valor de um DBGrid selecionando as linhas desejadas para a soma:

procedure TFMov_Nota.BitBtn1Click(Sender: TObject);
begin
DBEdit.Field.AsVariant:=0;
Query1.First;
While not Query1.Eof do
begin
if DBGrid1.SelectedRows.IndexOf(Query1.BookMark) >= 0 then
DBEdit1.Field.AsVariant :=
DBEdit1..Field.AsVariant+Query1CampoValor.AsVariant;
Query1.Next;
end;
end;


Responder

Gostei + 0

28/09/2005

Yallebr

Amigo,

Como falei acima, não posso usar While EOF por causa dos campos calculados, cada vez que clicar em uma linha irá fazer um While e calcular meus campos calculados, isso fica muito lento.

Alguma outra sugestão?


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar