Fórum problemas com conversão de string para Real #348971
14/11/2007
0
anderson
Andersonscinfo
Curtir tópico
+ 0Posts
14/11/2007
Douglasaltonia
Tentou:
Panel1.Caption := FormatFloat(´#0.00´,3.5);
ou
Panel1.Caption := FormatFloat(´0.00´,StrtoFloat(Label1.Caption));
vlw
Gostei + 0
14/11/2007
Acror
Vc terá que fazer uma função para retornar uma string com ponto
function TForm1.ponto(valor:double):string;
var
s : string;
begin
s := formatfloat(´0.00´,valor);
while Pos(´,´, S) > 0 do
S[Pos(´,´, S)] := ´.´;
result := s;
end;
usar:
panel1.caption := ponto(3,5);
Gostei + 0
14/11/2007
Andersonscinfo
fiz assim
DM_dd_psqlQry_osvalor_servico.Value:=11;
DM_dd_psqlQry_osvalor_servico.Value:=11.00;
de nem umas das formas ele salvou no banco...todos os outros dados foram salvos....menos o campo do valor....que coisa estranha, isso sendo que na mesma procedure eu tenho depois disso um insert no contas a receber que pega o valor do mesmo caption e ele insere blz....menos ai...que estranho...vou fazer outra qry pra ver se funciona
até mais
Gostei + 0
14/11/2007
Andersonscinfo
Qry_geral.Close;
Qry_geral.SQL.Clear;
Qry_geral.SQL.Add(´UPDATE public.´tb_os´ SET valor_servico=´´´+p_serv.capition+´´´, valor_total=´´´+p_total.capition+´´´ WHERE codigo=´´´+Qry_oscodigo.AsString+´´´;´);
Qry_geral.Open;
desta forma ele salvou...mas deu erro na tal virgula e quando eu fiz dai a conversão para ficar com o . no lugar da virgula, ele faz a conversão...mas ai não salva....que loucura....se alguem ai usa os mesmo componentes que eu, eu mando os fontes e tbm o banco de dados pra analizarem....porque o trem ta dificel....
Anderson
Gostei + 0
15/11/2007
Douglasaltonia
vc quer salvar ´11.00´ e não ´11´, é isso???
Gostei + 0
19/11/2007
Acror
Um componente panel vc usa o caption que é string
Se vc usar a função que te passei e que retorna string, tem que funcionar.
Para gravar no campo como 11.00 tem que ser um campo string.
se vc está querendo salvar o que está dentro do panel para o banco com a virgula vc tem que fazer assim
p_serv.caption = ´11,00´;
p_total.caption = ´15,00´;
Qry_geral.Close;
Qry_geral.SQL.Clear;
Qry_geral.SQL.Add(´UPDATE public.´tb_os´ SET valor_servico=´+ponto(strtofloat(p_serv.capition))+´, valor_total=´+ponto(strtofloat(p_total.capition))+´ WHERE codigo=´+Qry_oscodigo.AsString;
Qry_geral.Open;
Assim funciona pq se vc usar virgula no SQL acusa erro e tem que usar o ponto no lugar da virgula.
Eu uso essa função direto pelo mesmo motivo
Neste caso o banco vai receber o seguinte
UPDATE public.´tb_os´ SET valor_servico=11.00 , valor_total=15.00
WHERE codigo=´1´
Eu recomento que vc use o quotedstr() em vez das ´´´. Fica mais limpo.
se seu campo codigo for inteiro não precisa das ´´.
Não sei no postgres mas que eu saiba vc não precisa colocar o ; dentro do SQL. Eu uso o Zeos e não coloco
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)