Virgula no lugar de ponto
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...
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
Curtidas 0
Respostas
Leonardo Xavier
07/12/2010
A variavel teclado é o valor fracionado seria isso? Ou seja o valor 2.05
GOSTEI 0
Laelson Fagundes
07/12/2010
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...
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...
GOSTEI 0
Leonardo Xavier
07/12/2010
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?
GOSTEI 0
Emerson Nascimento
07/12/2010
frmmodulo.st_consumo.ParamByName('qtde').asfloat := StrToFloat('0' + stringreplace( teclado, '.' , ',' , [] ) );
GOSTEI 0
Emerson Nascimento
07/12/2010
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.
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.
GOSTEI 0
Laelson Fagundes
07/12/2010
ainda esta dano o mesmo erro...
GOSTEI 0
Laelson Fagundes
07/12/2010
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...
GOSTEI 0
Laelson Fagundes
07/12/2010
Blz Pessoal ja resolvi aqui o problema com a função do emerson m passou
mais uma vez muito obrigado....
mais uma vez muito obrigado....
GOSTEI 0