GARANTIR DESCONTO

Fórum problemas com conversão de string para Real #348971

14/11/2007

0

bom dia, é o seguinte....eu uso delphi+zeos+postgres, eu tenho um panel onde vai um valor tipo 3,5 então eu passo ele por uma conversão onde ele fica 3,50 mas quando tento converter este caption do panel de 3,50 string para 3.50 real ele fica sempre 0, alguem ja passou por isso e pode me dar uma mão??

anderson


Andersonscinfo

Andersonscinfo

Responder

Posts

14/11/2007

Douglasaltonia

anderson

Tentou:

Panel1.Caption := FormatFloat(´#0.00´,3.5);

ou

Panel1.Caption := FormatFloat(´0.00´,StrtoFloat(Label1.Caption));

vlw


Responder

Gostei + 0

14/11/2007

Acror

Quando usamos o formatfloat ele volta com a virgula.

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);


Responder

Gostei + 0

14/11/2007

Andersonscinfo

amigos...muito obrigado por se prontificarem....eu testei das duas formas e não quiz funcionar....então pequei e tentei direto pra ver qual era o problema....
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


Responder

Gostei + 0

14/11/2007

Andersonscinfo

ja tentei de tudo que foi geito, até ja coloquei dbedit e escrevi dentro do dbedit o valor e mesmo assim não salva no banco....ele salvou uma via sql

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


Responder

Gostei + 0

15/11/2007

Douglasaltonia

vamos entender...

vc quer salvar ´11.00´ e não ´11´, é isso???


Responder

Gostei + 0

19/11/2007

Acror

Bem vamos detalhar

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


Responder

Gostei + 0

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

Aceitar