GARANTIR DESCONTO

Fórum Virgula no lugar de ponto #391984

07/12/2010

0

Olá pessoal estou com um problema com um campo numerico em uma tabela quando o cliente usa um micro terminal para adicionar a quantidate de produto ele tem q colocar fracionario Tipo: 2.05 ou 10.50

so que o sistema esta dando erro quando é informado o ( . ) como é um micro terminal ele nao tem virgula e quando adiciona o ponto da o seguinte erro:

02.05 is not a valid floating point value


O problema esta no ( . ) se eu colocar a ( , ) funciona mas o micro terminal nao tem virgula

a linha de comando q estou usando é esta:

  // lancar no banco de dados
  frmmodulo.st_consumo.Close;
  frmmodulo.st_consumo.ParamByName('cod_mesa').asinteger   := strtoint(comanda);//StrToInt(frmPrincipal.lb_mesa.Caption);
  frmmodulo.st_consumo.ParamByName('cod_produto').asstring := frmmodulo.qrproduto.fieldByName('codigo').AsString;
  frmmodulo.st_consumo.ParamByName('qtde').asfloat         := StrToFloat('0' + teclado);
  frmmodulo.st_consumo.ParamByName('unitario').asfloat     := strToFloat(frmmodulo.qrproduto.fieldByName('precovenda').AsString);
  // calcula o valor total....
vValor := frmmodulo.st_consumo.ParamByName('qtde').asfloat * strToFloat(frmmodulo.qrproduto.fieldByName('precovenda').AsString);


O problema esta na linha em vermelho quando recebe as informações do terminal no caso o produto com o campo 2.05 ele da erro...
Laelson Fagundes

Laelson Fagundes

Responder

Posts

08/12/2010

Leonardo Xavier

A variavel teclado é o valor fracionado seria isso? Ou seja o valor 2.05
Responder

Gostei + 0

08/12/2010

Laelson Fagundes

a variavel Teclado = teclado: string; // BUFFER DO TECLADO

ela pega as informações digitada no teclado...

ou ceja como o Micro terminal não tem virgula so o Ponto se eu digitar por exemplo 0.55 ele m da o erro mencionado acima

e se eu não digitar o ponto colocar dessa forma 055 ele m da um numero inteiro 55 esse esta sendo meu problema ele tem q converter esse ponto em uma virgula ou uma outra forma de o sistema aceitar essas informações...
Responder

Gostei + 0

08/12/2010

Leonardo Xavier

Certo agora intendi como funciona seu script, eu nao sabia que seu terminal funiconava assim. Bom Temos uma questao lógica aqui, temos que tratar os dados coletados do teclado antes de envia-los para sua função, isso será bem siomples, antes de fazermos esta funçao, permita me lhe fazer uma pergunta. Se você colocar em seu código uma ',' o sitema no terminal apresenta a virgula?
Responder

Gostei + 0

08/12/2010

Emerson Nascimento

frmmodulo.st_consumo.ParamByName('qtde').asfloat := StrToFloat('0' + stringreplace( teclado, '.' , ',' , [] ) );

Responder

Gostei + 0

08/12/2010

Emerson Nascimento

frmmodulo.st_consumo.ParamByName('qtde').asfloat := StrToFloat('0' + stringreplace( teclado, '.' , ',' , [] ) );

tome cuidado com o valor que vêm nessa variável. se for uma milhar e vier com vígula separando a milhar, você deve tirar a vírgula antes de fazer a troca do ponto por vírgula.


Responder

Gostei + 0

08/12/2010

Laelson Fagundes

ainda esta dano o mesmo erro...
Responder

Gostei + 0

08/12/2010

Laelson Fagundes

ainda esta dano o mesmo erro...


Não da o erro mais mas porem ainda esta m jogando como campo inteiro...

nao esta jogando fracionario...
Responder

Gostei + 0

08/12/2010

Laelson Fagundes

Blz Pessoal ja resolvi aqui o problema com a função do emerson m passou

mais uma vez muito obrigado....
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar