GARANTIR DESCONTO

Fórum Conversão de valores Firebird variaveis float #335958

10/01/2007

0

fiz a seguinte procedure

procedure SaveData(DB: TIBQuery; Corretora: String; Compras,MCompras,Vendas,MVendas,PLiquida,MLiquida,PCompras,PVendas,MDia: Double;Dia,Hora: TDateTime);
Var
Leitura: String;
Query: String;
D: String;
H: String;
Formato: String;
begin
try
Formato := ´¬f´;
ShortDateFormat := ´mm/dd/yyyy´;
DecimalSeparator := ´.´;
D := DatetoStr(Dia);
H := TimeToStr(Hora);
with DB do
begin
Leitura := ´PETR4´;//FOptions.ComboBox1.Text;
Close;
SQL.Clear;
SQL.Add(´SELECT * FROM DATA WHERE DIA=´ + QuotedStr(D) + ´ AND CORRETORA=´ + QuotedStr(Corretora));
Open;
if (DB.RecordCount = 0) then
begin
Close;
SQL.Clear;
SQL.Add(´INSERT INTO DATA (CORRETORA,COMPRAS,MEDIO_COMPRAS,PERC_COMPRAS,´ +
´VENDAS,MEDIO_VENDAS,PERC_VENDAS,POSICAO_LIQUIDA,MEDIA_LIQUIDA,VOLUME_DIA,DIA,HORA,ATIVO)´ +
´ VALUES (´ +
QuotedStr(Corretora) +
´,´ + FloatToStr(Compras) +
´,´ + Format(Formato,[MCompras]) +
´,´ + Format(Formato,[PCompras]) +
´,´ + Format(Formato,[Vendas]) +
´,´ + Format(Formato,[MVendas]) +
´,´ + Format(Formato,[PVendas]) +
´,´ + Format(Formato,[PLiquida]) +
´,´ + Format(Formato,[MLiquida]) +
´,´ + Format(Formato,[MDia]) +
´,´ + QuotedStr(D) +
´,´ + QuotedStr(H) +
´,´ + QuotedStr(Leitura) +
´)´);
Open;
end
else
begin
Close;
SQL.Clear;
SQL.Add(´UPDATE DATA SET ´ +
´CORRETORA=´ + QuotedStr(Corretora) +
´ ,COMPRAS=´ + FloatToStr(Compras) +
´ ,MEDIO_COMPRAS=´ + Format(Formato,[MCompras]) +
´ ,PERC_COMPRAS=´ + Format(Formato,[PCompras]) +
´ ,VENDAS=´ + Format(Formato,[Vendas]) +
´ ,MEDIO_VENDAS=´ + Format(Formato,[MVendas]) +
´ ,PERC_VENDAS=´ + Format(Formato,[PVendas]) +
´ ,POSICAO_LIQUIDA=´ + Format(Formato,[PLiquida]) +
´ ,MEDIA_LIQUIDA=´ + Format(Formato,[MLiquida]) +
´ ,VOLUME_DIA=´ + Format(Formato,[MDia]) +
´ ,DIA=´ + QuotedStr(D) +
´ ,HORA=´ + QuotedStr(H) +
´ ,ATIVO=´ + QuotedStr(Leitura) +
´ WHERE DIA=´ + QuotedStr(D) + ´ AND ´ +
´CORRETORA=´ + QuotedStr(Corretora));
Open;
end;
end;
ShortDateFormat := ´dd/mm/yyyy´;
DecimalSeparator := ´,´;
Transaction.Commit;
except
Memo1.Lines.Add(DB.SQL.Text);
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
SaveData(IBDados,
Edit10.Text,
StrToFloat((´1.000,00´)),
StrToFloat((Edit2.Text)),
StrToFloat((Edit3.Text)),
StrToFloat((Edit4.Text)),
StrToFloat((Edit5.Text)),
StrToFloat((Edit6.Text)),
StrToFloat((Edit7.Text)),
StrToFloat((Edit8.Text)),
StrToFloat((Edit9.Text)),
Date,
Time);
end;

porem ele não está salvando na base, a mensagem que da eh q 1,000.00
não eh um formato float valido..

qual codificaçao do banco deve ser usada?
estou utilizando ISO8859_2 e dialeto 3

[]´s a tds


Nightshade

Nightshade

Responder

Posts

11/01/2007

Fortaum

- Vc tem q passar a string sem o separador de milhar ex:
1.000,00 = 1000,00

- Nesse caso eu costumo usar o StringReplace...


Responder

Gostei + 0

11/01/2007

Nightshade

retirando o separador decimal??
no caso estou trabalhando com valores monetarios, qual funçao vc me indicaria pra utilizar?

terei de passar um valor no lugar do ponto.. se eu passar espaço, terei de fzr um looping para retirar o espaço, fiz uma funçao similar, mas tenho receio que ela prejudique o desempenho do sistema, pois esta funçao eh executada de 1min em 1 min.


Responder

Gostei + 0

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

Aceitar