Salvar valor de dinheiro com centavos, não esta salvando...
15/12/2003
0
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,
Sparch
Posts
15/12/2003
Nigro
15/12/2003
Turbo Drive
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;
15/12/2003
Luizhfj
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
15/12/2003
Sparch
Obrigado piazada... todas deram certo!!!
Muito obrigado mesmo!!
Um abraço a todos...
Daniel K.
Clique aqui para fazer login e interagir na Comunidade :)