Fórum Erro no Rave na hora de chamar o relatorio #369895
21/04/2009
0
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...
(´´ 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
Curtir tópico
+ 0
Responder
Posts
22/04/2009
Emarcolongo
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:
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:
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.
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.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)