Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ZueRa

Erro no Cálculo

Recommended Posts

Pessoal, estou com um pequeno problema. Tenho vários TDBEdit(s), organizados em colunas.

Uma para os valores (em reais) a outra para a porcentagem.

Para melhor entendimento, tirei uma screen do mesmo:

 

 

Imagem Postada

 

 

Vamos começar...

 

os cálculos para se obter a porcentagem são feitos da seguinte forma:

 

procedure TFrelat.BtporcentagemClick(Sender: TObject);varsoma : double;begin  soma := Dbbebidas.Field.Value + Dbfrios.Field.Value + Dbcongelados.Field.Value + Dbacougue.Field.Value + Dbmassas.Field.Value + Dbhortifruti.Field.Value + Dbpadaria.Field.Value + Dbcereais.Field.Value + Dblimpeza.Field.Value + Dbfrente.Field.Value + Dbpetshop.Field.Value + Dboleos.Field.Value + Dbmatinais.Field.Value + Dbdoces.Field.Value + Dbconservas.Field.Value + Dbperfumaria.Field.Value + Dbbiscoito.Field.Value + Dbutilidades.Field.Value + Dbdieteticos.Field.Value + Dbleite.Field.Value;  Pbebidas.Text := Dbbebidas.Field.Value * 100 / soma;  Pfrios.Text := Dbfrios.Field.Value * 100 / soma;  Pcongelados.Text := Dbcongelados.Field.Value * 100 / soma;  Pacougue.Text := Dbacougue.Field.Value * 100 / soma;  Pmassas.Text := Dbmassas.Field.Value * 100 / soma;  Phortifruti.Text := Dbhortifruti.Field.Value * 100 / soma;  Ppadaria.Text := Dbpadaria.Field.Value * 100 / soma;  Pcereais.Text := Dbcereais.Field.Value * 100 / soma;  Plimpeza.Text := Dblimpeza.Field.Value * 100 / soma;  Pfrente.Text := Dbfrente.Field.Value * 100 / soma;  Ppetshop.Text := Dbpetshop.Field.Value * 100 / soma;  Poleos.Text := Dboleos.Field.Value * 100 / soma;  Pmatinais.Text := Dbmatinais.Field.Value * 100 / soma;  Pdoces.Text := Dbdoces.Field.Value * 100 / soma;  Pconservas.Text := Dbconservas.Field.Value * 100 / soma;  Pperfumaria.Text := Dbperfumaria.Field.Value * 100 / soma;  Pbiscoito.Text := Dbbiscoito.Field.Value * 100 / soma;  Putilidades.Text := Dbutilidades.Field.Value * 100 / soma;  Pdieteticos.Text := Dbdieteticos.Field.Value * 100 / soma;  Pleite.Text := Dbleite.Field.Value * 100 / soma;end;
E o do Valor Total assim:

 

procedure TFrelat.BtvalorClick(Sender: TObject);varsoma : double;begin  soma := Dbbebidas.Field.Value + Dbfrios.Field.Value + Dbcongelados.Field.Value + Dbacougue.Field.Value + Dbmassas.Field.Value + Dbhortifruti.Field.Value + Dbpadaria.Field.Value + Dbcereais.Field.Value + Dblimpeza.Field.Value + Dbfrente.Field.Value + Dbpetshop.Field.Value + Dboleos.Field.Value + Dbmatinais.Field.Value + Dbdoces.Field.Value + Dbconservas.Field.Value + Dbperfumaria.Field.Value + Dbbiscoito.Field.Value + Dbutilidades.Field.Value + Dbdieteticos.Field.Value + Dbleite.Field.Value;  Dbvalortotal.Text := FloattoStr(soma);end;
o problema é que caso eu LIMPE qualquer um dos campos dos VALORES (R$) e clique em Porcentagem ou em Valor Total aparece esse erro:

 

 

Imagem Postada

 

 

pelo que está me parecendo, ele avisa que porque eu deletei o campo, então ele virou NULL e não Double como está descrito no código.

 

O que eu poderia fazer para sanar esse problema ?

Desde já agradeço,

Thiago.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que poderia fazer é sempre verificar antes se tem valor o campo, algo do tipo:

 

if not Pbebidas.Field.IsNull then	Pbebidas.Text := Dbbebidas.Field.Value * 100 / soma;

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que poderia fazer é sempre verificar antes se tem valor o campo, algo do tipo:

if not Pbebidas.Field.IsNull then	Pbebidas.Text := Dbbebidas.Field.Value * 100 / soma;
Então eu teria que fazer esse procedimento para cada campo ? o.O

Compartilhar este post


Link para o post
Compartilhar em outros sites

Márcio, agora quando deixo algum campos de valor (R$) sem nada aparece o seguinte:

 

Imagem Postada

 

isso acontece quando clico no botão porcentagem!

 

o que poderá ser ?

 

obs.: o código que você me passou não resolveu o meu problema o.O

Compartilhar este post


Link para o post
Compartilhar em outros sites

Divisão por zero não é possível, no caso somente pode efetuar o cálculo se o campo a ser dividido for maior que zero:

 

if ((not Pbebidas.Field.IsNull) and (soma > 0)) then	Pbebidas.Text := Dbbebidas.Field.Value * 100 / soma;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Márcio, agora quando deixo algum campos de valor (R$) sem nada aparece o seguinte:

 

Imagem Postada

 

isso acontece quando clico no botão porcentagem!

 

o que poderá ser ?

 

obs.: o código que você me passou não resolveu o meu problema o.O

Márcio, acho que você não entendeu.

Ele continua com o mesmo erro, já tentei de várias maneiras modificar o teu código, porque quero que ele dê um tipo de Mensagem: "coloque algum valor..." algo do tipo.

Já tenti, porém não consegui.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi perfeitamente o que você disse, apenas mostrei o que podia ser feito. Se quer obrigar o usuário informar algo, basta validar os edits antes, caso não esteja preenchido faz com que ele preencha, uma simples validação antes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.