Arthur Silvestre Posted June 4, 2013 Report Share Posted June 4, 2013 Bom pessoal, o meu problema é com o arredondamento do 'val()'. possuo um numero que por exemplo é 1234567, a picture deste numero eu determino em uma área do meu sistema, por nome 'PARAMETROS'. Exemplo: Se a picture for '999.999.999,99', ele retorna '12.345,67', mas se for '999.999.999,999' ele retornaria '1.234,567', Certo ? O problema é quando eu digito um valor de por exemplo 17,50. Esse campo no meu DBF é 'C', ao usar o val está retornando apenas os 17,00 (esses ',00' vem conforme a picture). Ai está o meu problema. Não posso usar um right pois nem sempre o numero de decimais é o mesmo e não conheço uma outra função q utilize o método de transformar de caractere para numérico. Se ao menos tivesse como eu identificar a posição do ponto ou da virgula, seria uma mão na roda, mas ainda não tenho esse conhecimento. Se alguém puder ajudar, desde já eu fico agradecido. Quote Link to comment Share on other sites More sharing options...
sambomb Posted June 4, 2013 Report Share Posted June 4, 2013 Se mudar a máscara deve pegar novamente do banco de dados, vale lembrar que o ideal é você deve truncar e não arredondar nesses casos pois assim evita que os valores fiquem discrepantes da realidade. Coloca o trecho do código para ficar mais simples de ajudarmos. Quote Link to comment Share on other sites More sharing options...
Arthur Silvestre Posted June 4, 2013 Author Report Share Posted June 4, 2013 O código é so isso aqui sambomb: vprvenda:=calcplav(Val(oGet:cText())) Ele pega o texto do get no browser, o campo no browser é preenchido por 'orcit->prvenda'. Agradeço a atenção. Quote Link to comment Share on other sites More sharing options...
Arthur Silvestre Posted June 4, 2013 Author Report Share Posted June 4, 2013 Consegui, percebi que o 'Val()' arredonda apenas os valores na qual venham com virgula(999,99) e não com pontos(999.99). Mas valeu a atenção de todos. Quote Link to comment Share on other sites More sharing options...
sambomb Posted June 4, 2013 Report Share Posted June 4, 2013 Na verdade o Val converte o trecho válido em número, como a linguagem utilizar "." ( ponto ) como separador decimal e não "," ( vÃrgula ) sendo assim, 999,99 é o mesmo que 999A99 ou 999|99 para a linguagem. Quote Link to comment Share on other sites More sharing options...
evandro Posted June 9, 2013 Report Share Posted June 9, 2013 Olá, Como você colocou que foi resolvido mas não falou como, segue uma forma de resolver: vprvenda:=calcplav(Val( strtran( oGet:cText(), ",", "." ) )) Quote Link to comment Share on other sites More sharing options...
MatheusFarias Posted June 11, 2013 Report Share Posted June 11, 2013 Acho q essa foi a soluçao ou Conclusão Consegui, percebi que o 'Val()' arredonda apenas os valores na qual venham com virgula(999,99) e não com pontos(999.99). Mas valeu a atenção de todos. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.