Fórum Erro de formatação .. inteiro?? #337894
14/02/2007
0
Pesquisei mas não consegui implementar no meu fonte, nao tenho muita experiencia em programacao. Estou fazendo INSERT em uma tabela, no qual estou inserindo valores (R$ de uma TCurrencyEdit). Quando coloco valores do tipo 99,99 .. 87,88 .. etc.. meus valores sao armazenados corretamente com duas casas após a virgula.. mas quando coloco um valor inteiro, por exemplo ´10´ esse valor não é salvo na minha tabela como 10,00 ficando o valor de inteiro de ´10´ na Grid. Como posso gravar esse ,00 do valor inteiro ??? Utilizo Mysql 4.1.21 e meu campo é do tipo Float 10,2
Eis o código:
If LblOP.Caption = ´NOVO´ then
Begin
decimalseparator:=´.´; //DEFINE O SEPARADOR COMO . FICA 33.33 E NAO 33,33
with QueryProdutos do
Begin
SQL.Clear;
Sql.Add(´insert into produtos (DESCRICAO, PREÇO_COMPRA, PREÇO_VENDA, SALDO) values (´+´´´´+EdDescricao.text+´´´´+´,´+QuotedStr(FLOATTOSTR(EdValorCompra.VALUE))+´,´+QuotedStr(FLOATTOSTR(EdValorVenda.VALUE))+´,´+´´´´+EdSaldo.text+´´´)´);
ExecSql;
MessageDLG(´Produto inserido com sucesso!´,mtinformation, [mbok],0);
End;
decimalseparator:=´,´;
Grato pela ajuda.
Abraço
Ce
Curtir tópico
+ 0Posts
15/02/2007
Kenio_c
O q parece e que qdo vc coloca numeros com casas decimais o seu decimal separator funciona assim: 23,45 transforma em 23.45, desta forma o sql consegue interpretar. Mas qdo um valor sem fraçao o seu decimalseparator naum interpreta. Entao tente assim antes de passar por este decimalseparator transforme o seu valor no seguinte: formatFloat(´#,0.00´,SEU_VALOR.AsFloat); isto lhe retorna uma string com no minimo de 2 casa decimais.
Gostei + 0
15/02/2007
Emerson Nascimento
If LblOP.Caption = ´NOVO´ then with QueryProdutos do Begin Close; SQL.Clear; Sql.Add(´insert into produtos (DESCRICAO, PRECO_COMPRA, PRECO_VENDA, SALDO) ´); Sql.Add(´values (:DESCRICAO, :PRECO_COMPRA, :PRECO_VENDA, :SALDO)´); ParamByName(´DESCRICAO´).AsString := EdDescricao.text; ParamByName(´PRECO_COMPRA´).AsFloat := EdValorCompra.VALUE; ParamByName(´PRECO_VENDA´).AsFloat := EdValorVenda.VALUE; ParamByName(´SALDO´).AsFloat := EdSaldo.VALUE; ExecSql; MessageDLG(´Produto inserido com sucesso!´,mtinformation, [mbok],0); End;
Gostei + 0
15/02/2007
Ce
If LblOP.Caption = ´NOVO´ then with QueryProdutos do Begin Close; SQL.Clear; Sql.Add(´insert into produtos (DESCRICAO, PRECO_COMPRA, PRECO_VENDA, SALDO) ´); Sql.Add(´values (:DESCRICAO, :PRECO_COMPRA, :PRECO_VENDA, :SALDO)´); ParamByName(´DESCRICAO´).AsString := EdDescricao.text; ParamByName(´PRECO_COMPRA´).AsFloat := EdValorCompra.VALUE; ParamByName(´PRECO_VENDA´).AsFloat := EdValorVenda.VALUE; ParamByName(´SALDO´).AsFloat := EdSaldo.VALUE; ExecSql; MessageDLG(´Produto inserido com sucesso!´,mtinformation, [mbok],0); End;
Amigo, modifiquei o fonte de acordo com sua sugestão. Não conteve erros mas continua salvando valores ´inteiros´ sem as casas decimais. Ex.: Inserir ´5´ no campo PREÇO_VENDA .. meu valor vai para a tabela com 5 no qual gostaria que fosse com 5,00 . Quando utilizo casas decimais, exemplo 5,55 nao tem problemas ! :oops:
Gostei + 0
15/02/2007
Emerson Nascimento
veja como estão configuradas os resultados do MySQL. no Firebird, mesmo que eu grave 5, se o campo for numeric(10,2) o valor exibido será 5,00
Gostei + 0
15/02/2007
Ce
Pois é, mesmo aqui pelo front.. coloco 5,00 e ele salva apenas ´5´ .. ja mudei o formato para Double, Decimal .. sempre quando inteiro ele nao poe o ,00
Utilizo o MysqlFront 2,5 .. onde q configuro ?? :?:
Gostei + 0
15/02/2007
Ce
Pois é, mesmo aqui pelo front.. coloco 5,00 e ele salva apenas ´5´ .. ja mudei o formato para Double, Decimal .. sempre quando inteiro ele nao poe o ,00
Utilizo o MysqlFront 2,5 .. onde q configuro ?? :?:
Gostei + 0
15/02/2007
Ce
Pois é, mesmo aqui pelo front.. coloco 5,00 e ele salva apenas ´5´ .. ja mudei o formato para Double, Decimal .. sempre quando inteiro ele nao poe o ,00
Utilizo o MysqlFront 2,5 .. onde q configuro ?? :?:
Gostei + 0
15/02/2007
Ce
Pois é, mesmo aqui pelo front.. coloco 5,00 e ele salva apenas ´5´ .. ja mudei o formato para Double, Decimal .. sempre quando inteiro ele nao poe o ,00
Utilizo o MysqlFront 2,5 .. onde q configuro ?? :?:
Gostei + 0
15/02/2007
Ce
Pois é, mesmo aqui pelo front.. coloco 5,00 e ele salva apenas ´5´ .. ja mudei o formato para Double, Decimal .. sempre quando inteiro ele nao poe o ,00
Utilizo o MysqlFront 2,5 .. onde q configuro ?? :?:
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)