Erro no Rave na hora de chamar o relatorio

Delphi

21/04/2009

pessoal estou com esse problema no Rave

(´´ is not a valid floating point value) porem eu estou utlizando o proprio editor de eventos do rave e não consigo descobrir o erro os camandos utilizados são esses q eu estou utilizando...

var
  I: integer;
  s_saldo, result: string;
begin
 result  := ´´;
  s_saldo := ´´;
  s_saldo := self.text;
  For I := 1 to Length(s_saldo) do
   if copy(s_saldo,I,1) <> ´.´ then
     result := result + copy(s_saldo,I,1);
   end if; 
  end for; 
  RaveProject.SetParam(´s_saldo_ant´,result);
end OnBeforePrint;
=================================
function Text13_OnBeforePrint(Self: TRaveText);
var 
  saldo_ant, debito, credito: Double;
  valor, valor2: string;
begin
  saldo_ant := StrToFloat(RaveProject.GetParam(´s_saldo_ant´));
  debito := StrToFloat(RaveProject.GetParam(´s_debito´));
  credito := StrToFloat(RaveProject.GetParam(´s_credito´));
  valor2 := FloatToStr(saldo_ant+credito);
  valor := FloatToStr(StrToFloat(valor2)-debito);
  self.text := FormatFloat(´#,,0.00´,StrToFloat(valor));
  RaveProject.SetParam(´s_saldo_ant´,valor); 

  if text14.text <> ´´ then
  self.text := ´´;
  end if;
=====================================
function Text14_OnBeforePrint(Self: TRaveText);
var 
  saldo_ant,debito, credito: Double;
  valor, valor2: string;
begin
  debito := StrToFloat(RaveProject.GetParam(´s_debito´));
  credito := StrToFloat(RaveProject.GetParam(´s_credito´));

  if Trim(RaveProject.GetParam(´s_saldo_ant´)) = ´´ then
   saldo_ant := 0,00;
  end if;

  if (Trim(RaveProject.GetParam(´s_saldo_ant´)) <> ´´) Then
   saldo_ant := StrToFloat(RaveProject.GetParam(´s_saldo_ant´));
  end if;

  if (Trim(Self.Text) <> ´´) and (Trim(Self.Text) <> ´Text14´) then
   saldo_ant := StrToFloat(self.Text);
  end if;

   debito := StrToFloat(RaveProject.GetParam(´s_debito´));
   credito := StrToFloat(RaveProject.GetParam(´s_credito´));
   valor2 := FloatToStr(saldo_ant+debito);
   valor := FloatToStr(StrToFloat(valor2)-credito);
   text13.text := FormatFloat(´#,,0.00´,StrToFloat(valor));

  if (self.text = ´0´) or (text13.text = ´´) then
   self.text := ´´;
  end if;
end OnBeforePrint;
------------------------------------------



Tchucky

Tchucky

Curtidas 0

Respostas

Emarcolongo

Emarcolongo

21/04/2009

Tchucky, eu não uso o Rave mas pelo erro informado o que acontece é que deveria ter um valor numerico retornando e não esta voltando num formato valido, (pode ser que esteja em branco ou retornando uma string mesmo). utilize o break-point para ir validando e ver qual linha ele para mesmo.
Olhando seu codigo vi que pode ter lugares que isto pode ocorrer como
por exemplo:

 function Text13_OnBeforePrint(Self: TRaveText); 
  saldo_ant := StrToFloat(RaveProject.GetParam(´s_saldo_ant´));  //aqui
  debito := StrToFloat(RaveProject.GetParam(´s_debito´));  //aqui
  credito := StrToFloat(RaveProject.GetParam(´s_credito´));  //aqui
===================================== 

function Text14_OnBeforePrint(Self: TRaveText); 
  if Trim(RaveProject.GetParam(´s_saldo_ant´)) = ´´ then 
    saldo_ant := 0,00;  //aqui
  end if; 

  if (Trim(RaveProject.GetParam(´s_saldo_ant´)) <> ´´) Then 
   saldo_ant := StrToFloat(RaveProject.GetParam(´s_saldo_ant´));  //aqui
  end if; 

  if (Trim(Self.Text) <> ´´) and (Trim(Self.Text) <> ´Text14´) then 
   saldo_ant := StrToFloat(self.Text);  //aqui
  end if; 


na linha: saldo_ant := 0,00; tente mudar para saldo_ant := ´0.00´;

outra coisa que sempre faço é usar o StrtoFloatDef, porque se o valor
da string for invalido ele joga um padrão e não acusa o erro.

ficaria assim:
 saldo_ant := strtofloatdef(self.text,0); 

neste caso se o self.text for ´´ (branco) ou tiver o valor não-numerico a
variavel saldo_ant será preenchida com 0.

Espero ter ajudado.


GOSTEI 0
POSTAR