Salvar valor de dinheiro com centavos, não esta salvando...

15/12/2003

1

Olah,

O problema que acontece é que quando eu faço uma inserção via codigo no banco de dados de um valor de moeda, por exemplo 23,58 ele não estah salvando o ,58 somente 23
Testei fazendo 23.58 e ele salva normal no banco de dados como 23,58 (o campo no banco de dados estah como float(5,2)).
Mas dae entro num problema de usuario, ateh convence-lo de que eh para digitar 23.58, por exemplo, haverah muitos erros e descontentamento por parte dele...


Existe alguma forma de corrigir esse erro? ou contorna-lo ?
Estou usando um codigo mais ou menos desse tipo para a insercao:

procedure TForm1.BtnSalvarClick(Sender: TObject);
begin
with QueryFloat do
  begin
    Close;
    SQL.Clear;
    SQL.Add(´INSERT INTO valores (valor)´);
    SQL.Add(´VALUES (´´´+ EditValor.Text +´´´)´);
    ExecSQL;
  end;
end;


Um abraço,


Responder

Posts

15/12/2003

Nigro

Ao invés de inserir os dados usando o nome do componente, use como parâmetro.


Responder

15/12/2003

Turbo Drive

Complementando o que nosso colega disse:

with QueryFloat do
begin
Close;
SQL.Clear;
SQL.Add(´INSERT INTO valores (valor)´);
SQL.Add(´VALUES (:vlmoeda)´);
ParamByname(´vlmoeda´).AsFloat := strrtofloat(editvalor.text);
ExecSQL;
end;


Responder

15/12/2003

Luizhfj

Amigo,

Porque ao invés de fazer com que o usuário digite ´ . ´ nao converter a virgula em ponto, ou entao a opcao mais abaixo ( prefiro )

assim

procedure TFRM_insere_v.edt_valorKeyPress(Sender: TObject; var Key: Char);
begin
if( Key = ´.´) then
Key := ´,´;
end;


ou entao

coloque a linha abaixo antes do insert e depois volte para ´ , ´
DecimalSeparator:=´.´; //passa para ponto

Também já apanhei muito com o tal do ponto e a tal da data .

Atenciosamente ,

Luiz Henrique


Responder

15/12/2003

Sparch

:D :) :wink:

Obrigado piazada... todas deram certo!!!
Muito obrigado mesmo!!

Um abraço a todos...

Daniel K.


Responder