ZueRa 0 Denunciar post Postado Abril 15, 2007 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: 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: 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
marcio.theis 3 Denunciar post Postado Abril 16, 2007 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
ZueRa 0 Denunciar post Postado Abril 17, 2007 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
marcio.theis 3 Denunciar post Postado Abril 17, 2007 Sim. Compartilhar este post Link para o post Compartilhar em outros sites
ZueRa 0 Denunciar post Postado Abril 21, 2007 Márcio, agora quando deixo algum campos de valor (R$) sem nada aparece o seguinte: 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
marcio.theis 3 Denunciar post Postado Abril 22, 2007 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
ZueRa 0 Denunciar post Postado Abril 30, 2007 Márcio, agora quando deixo algum campos de valor (R$) sem nada aparece o seguinte: 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
marcio.theis 3 Denunciar post Postado Abril 30, 2007 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