Hudson Cavazin Postado Abril 21, 2007 Denunciar Share Postado Abril 21, 2007 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 ?Grato! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Abril 21, 2007 Denunciar Share Postado Abril 21, 2007 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Hudson Cavazin Postado Abril 21, 2007 Autor Denunciar Share Postado Abril 21, 2007 vllw :P Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thaise Piculi Postado Fevereiro 25, 2009 Denunciar Share Postado Fevereiro 25, 2009 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Fevereiro 26, 2009 Denunciar Share Postado Fevereiro 26, 2009 (editado) 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 Fevereiro 27, 2009 por Micheus Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thaise Piculi Postado Fevereiro 27, 2009 Denunciar Share Postado Fevereiro 27, 2009 Funcionou, obrigada pela dica! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Hudson Cavazin
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 ?
Grato!
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
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.