Ir para conteúdo
Fórum Script Brasil
  • 0

Somar Colunas No Dbgrid


Hudson Cavazin

Pergunta

5 respostass a esta questão

Posts Recomendados

  • 0
Ex. Tenho uma tabela com os campos Qtde, ValorUnit, ValorTotal. No dbgrid são apresentados esses campos sendo que o ValorTotal é somente leitura. Como faço para ele automaticamente multiplicar o campo Qtde com o ValorUnit ?
Pelo que entendi você faz a edição dos dados no DBGrid, é isto?

Se for, você pode utilizar o evento OnChange dos campos Qtde e ValorUnit (eles devem ter sido adicionados ao seu dataset) para realizar o cálculo. Voce define um único evento para os dois campos, já que a operação será a mesma para a alteração de um ou outro.

No código do evento você coloca algo assim:

procedure TForm1.datasetQtdeChange(Sender: TField);
begin
  datasetValorTotal.AsFloat := datasetQtde.AsFloat *datasetValorUnit.AsFloat;
end;

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Oi pessoal,

Estou com o mesmo problema do Hudson.

Segui a sugestao do Micheus mas o campo não esta habilitado para edicao e não acontece absolutamente nada com ele.

Segue meu codigo:

procedure Tdmbanco.qryRelatoriosTOTALChange(Sender: TField);

begin

qryRelatorios.fieldbyname('TOTAL').AsFloat := qryRelatorios.fieldbyname('VALOR_VENDA').AsFloat * qryRelatorios.fieldbyname('QUANTIDADE').AsInteger;

end;

Fiz algo errado? é normal ele não estar habilitado? Mas como o valor é exibido neste campo?

No aguardo.

Link para o comentário
Compartilhar em outros sites

  • 0
Segui a sugestao do Micheus mas o campo não esta habilitado para edicao e não acontece absolutamente nada com ele.

Segue meu codigo:

procedure Tdmbanco.qryRelatoriosTOTALChange(Sender: TField);

begin

qryRelatorios.fieldbyname('TOTAL').AsFloat := qryRelatorios.fieldbyname('VALOR_VENDA').AsFloat * qryRelatorios.fieldbyname('QUANTIDADE').AsInteger;

end;

Fiz algo errado? é normal ele não estar habilitado? Mas como o valor é exibido neste campo?

Thaise Piculi, seu problema está no fato de você usar o campo que recebe o resultado. Voce quer calcular o valor TOTAL quando o VALOR_VENDA ou QUANTIDADE mudar, não é mesmo?!

Voce usou o evento OnChange do campo TOTAL (qryRelatoriosTOTALChange)!

Se voce ler de novo o que passei para o Hudson Cavazin:

você pode utilizar o evento OnChange dos campos Qtde e ValorUnit (eles devem ter sido adicionados ao seu dataset) para realizar o cálculo. Voce define um único evento para os dois campos, já que a operação será a mesma para a alteração de um ou outro.

Que no seu caso seriam dos campos qryRelatoriosVALOR_VENDA e qryRelatoriosQUANTIDADE. Então, baseado no que disse a ele, seu código deveria ser algo assim:

procedure Tdmbanco.qryRelatoriosVALOR_VENDAChange(Sender: TField);
begin
  qryRelatoriosTOTAL.AsFloat := qryRelatoriosVALOR_VENDA.AsFloat * qryRelatoriosQUANTIDADE.AsInteger;
end;

Onde o procedimento do evento OnChange so campo VALOR_VENDA (qryRelatoriosVALOR_VENDAChange) também seria atribuído ao mesmo evento do campo QUANTIDADE.

Abraços

Editado por Micheus
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...