GARANTIR DESCONTO

Fórum Erro de formatação .. inteiro?? #337894

14/02/2007

0

Colegas,

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

Ce

Responder

Posts

15/02/2007

Kenio_c

Amigo ce,
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.


Responder

Gostei + 0

15/02/2007

Emerson Nascimento

para evitar problemas de conversão, utilize parâmetros:

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;



Responder

Gostei + 0

15/02/2007

Ce

para evitar problemas de conversão, utilize parâmetros:
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:


Responder

Gostei + 0

15/02/2007

Emerson Nascimento

altere a exibição dos dados no seu front-end.

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


Responder

Gostei + 0

15/02/2007

Ce

altere a exibição dos dados no seu front-end. 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


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 ?? :?:


Responder

Gostei + 0

15/02/2007

Ce

altere a exibição dos dados no seu front-end. 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


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 ?? :?:


Responder

Gostei + 0

15/02/2007

Ce

altere a exibição dos dados no seu front-end. 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


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 ?? :?:


Responder

Gostei + 0

15/02/2007

Ce

altere a exibição dos dados no seu front-end. 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


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 ?? :?:


Responder

Gostei + 0

15/02/2007

Ce

altere a exibição dos dados no seu front-end. 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


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 ?? :?:


Responder

Gostei + 0

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

Aceitar