Erro RAVE REPORTS DELPHI 2010
Estamos com problemas na migração de nossos relatórios do Delphi 7(Rave Reports 5.0.8) para Delphi 2010 (Rave reports 7.7.0). Já convertemos todos nossos relatórios e fontes para delphi 2010.
No Rave Reports em alguns relatórios acontece erro de Access Violation ou Invalid typecast quando executado pela segunda vez o mesmo relatório. Na primeira vez ocorre tudo certo. Uma observação é que no delphi 7 o relatório funcionava perfeitamente e está extamente igual no delphi 2010. Podíamos executar várias e várias vezes o relatório e nada de problemas. Também os fontes .pas e .dfm estão muito idênticos, mas, com a conversão para delphi 2010 que é normal.
Alguém pode nos ajudar?
Abraços.
Feesc
Curtidas 0
Respostas
Eduardo
30/07/2010
Como está setado sua library name?
Tem que ser "dbxfb.dll"
Como está setado sua VendorLib?
Tem que ser "fbclient.dll" se for o banco Firebird;
Verifique também a sua tabela de caracteres no banco de dados, aqui uso o firebird 2.03 e está com Win1252 e a tabela de caracteres da fonte está como Ansi_Charset;
Verifique também a acentuação dos dados no banco de dados, " ç, ~, etc"...
Tenta aí
GOSTEI 0
Feesc
30/07/2010
Muito Obrigado pela ajuda já.. Nós usamos o banco de dados oracle e utilizamos a library - library name "dbxora.dll". O vendorlib está setado como "oci.dll".
Os parâmetros do banco oracle são:
PARAMETER VALUE
NLS_CALENDAR GREGORIAN
NLS_CHARACTERSET WE8ISO8859P1
NLS_COMP BINARY
NLS_CURRENCY $
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_DUAL_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_LANGUAGE AMERICAN
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_NCHAR_CONV_EXCP FALSE
NLS_NUMERIC_CHARACTERS .,
NLS_RDBMS_VERSION 10.2.0.3.0
NLS_SORT BINARY
NLS_TERRITORY AMERICA
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_CHARACTERSET WE8ISO8859P1
NLS_COMP BINARY
NLS_CURRENCY $
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_DUAL_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_LANGUAGE AMERICAN
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_NCHAR_CONV_EXCP FALSE
NLS_NUMERIC_CHARACTERS .,
NLS_RDBMS_VERSION 10.2.0.3.0
NLS_SORT BINARY
NLS_TERRITORY AMERICA
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
GOSTEI 0
Feesc
30/07/2010
Alguém consegue nos ajudar no RAVE REPORTS?
GOSTEI 0
Felipe Caputo
30/07/2010
esse erro de access violation está ocorrendo apenas em alguns relatórios? se for o caso, no D2010 em alguns relatórios eu tive que colocar o seguinte codigo:
pode ser que resolva para você!
RvProject1.Open; ..... RvProject1.ExecuteReport('piscofinsresumido'); RvProject1.Close;pode ser que resolva para você!
GOSTEI 0
Feesc
30/07/2010
Esse erro acontece em todos os relatórios na segunda vez que ele é executado. Na primeira vez funciona normal. Lembrando que no delphi 7 funcionava 100%. Fiz o teste conforme mencionado, mas não funcionou ainda..
Exemplo de como funciona a chamada do relatório:
procedure TfmParcelaDA.btSimulacaoClick(Sender: TObject);
begin
inherited;
if Length(frmDivida.GetLancamentos) = 0 then
raise Exception.Create('Nenhuma Dívida foi selecionada.');
ValidaGreater();
if (rgTipo.ItemIndex = 0) or (rgTipo.ItemIndex = 1) then
begin
DM1.SetRvProjCarne(DM1.RvConP02);
DM1.RvConP02.Close;
DM1.RvConP02.Open;
DM1.RvConP02.SelectReport(Self.GetNameReport(True), True);
CarregaIdentificacao;
CarregaExercicios;
DM1.AtualizaDataViewDinamica(CConsultaP02, sdsExercicios);
DM1.AtualizaDataViewDinamica(CConsultaP02, cdsParcelas, True, 'DwParcelas');
DM1.ExecutaRavePreview(CConsultaP02, Self.GetNameReport(True), CVAZIO, Self);
end
else
begin
ValidarValorParcelas;
DM1.SetRvProjCarne(DM1.RvRelP02);
DM1.RvRelP02.Close;
DM1.RvRelP02.Open;
if frmDados.IdTributo = CID_TRIB_ISS_HOMOLOGADO_DA then
DM1.RvRelP02.SelectReport('RelSimulaParcRefis2009ISSHomologado', True)
else
DM1.RvRelP02.SelectReport('RelSimulaParcRefis2009', True);
CarregaCdsTempLanc;
CarregaCabecalhoRefis;
CarregaParametrosRefis;
dm1.AtualizaDataViewDinamica(CRelatoriosP02, cdsParcelas, True, 'DwParcRefis');
DM1.ExecutaRavePreview(CRelatoriosP02, 'RelSimulacaoParcRefis2009', 'Simulação do parcelamento em (' + FormatDateTime('dd/mm/yyyy', TDateUtil.GetDate) + ') REFISBLU-2009', Self);
end;
end;
---------------------
procedure TDM1.ExecutaRavePreview(IndexRvProj: Integer;
Relatorio, Titulo: string; PMasterForm: TfmBasicWindow;
CriaPDF: Boolean = False; PathFile: string = ''; PIndex: Integer = 0);
var
Screen: TScreen;
RvProj: TRvProject;
x: TRPRender;
begin
Screen := TScreen.Create(self);
try
Screen.Cursor := -11; // crHourGlass;
if (CriaPDF) and (Trim(PathFile) <> '') then
begin
RvSystem.RenderObject := GetRvRender(PIndex);
RvSystem.OutputFileName := PathFile;
RvSystem.DoNativeOutput := False;
RvSystem.DefaultDest := rdFile;
RvSystem.SystemFiler.StreamMode := smTempFile;
RvSystem.SystemSetups := RvSystem.SystemSetups - [ssAllowSetup];
end;
FMasterForm := PMasterForm;
GetProjRave(IndexRvProj, RvProj);
if Titulo <> '' then
RvSystem.SystemPrinter.Title := Titulo
else
RvSystem.SystemPrinter.Title := Relatorio;
RvProj.SelectReport(Relatorio, True);
RvProj.SetParam('Titulo', Titulo);
if Relatorio <> 'RelExtNFAvulsa' then
RvProj.SetParam('DataAtualSistema',
TDateUtil.DateToStr(TDateUtil.GetDate))
else
RvProj.SetParam('DataAtualSistema', '');
// RvProj.Open; teste..
RvProj.Execute;
// RvProj.Close; teste...
finally
Screen.Cursor := 0; // crDefault;
Screen.Free;
end;
end;
Exemplo de como funciona a chamada do relatório:
procedure TfmParcelaDA.btSimulacaoClick(Sender: TObject);
begin
inherited;
if Length(frmDivida.GetLancamentos) = 0 then
raise Exception.Create('Nenhuma Dívida foi selecionada.');
ValidaGreater();
if (rgTipo.ItemIndex = 0) or (rgTipo.ItemIndex = 1) then
begin
DM1.SetRvProjCarne(DM1.RvConP02);
DM1.RvConP02.Close;
DM1.RvConP02.Open;
DM1.RvConP02.SelectReport(Self.GetNameReport(True), True);
CarregaIdentificacao;
CarregaExercicios;
DM1.AtualizaDataViewDinamica(CConsultaP02, sdsExercicios);
DM1.AtualizaDataViewDinamica(CConsultaP02, cdsParcelas, True, 'DwParcelas');
DM1.ExecutaRavePreview(CConsultaP02, Self.GetNameReport(True), CVAZIO, Self);
end
else
begin
ValidarValorParcelas;
DM1.SetRvProjCarne(DM1.RvRelP02);
DM1.RvRelP02.Close;
DM1.RvRelP02.Open;
if frmDados.IdTributo = CID_TRIB_ISS_HOMOLOGADO_DA then
DM1.RvRelP02.SelectReport('RelSimulaParcRefis2009ISSHomologado', True)
else
DM1.RvRelP02.SelectReport('RelSimulaParcRefis2009', True);
CarregaCdsTempLanc;
CarregaCabecalhoRefis;
CarregaParametrosRefis;
dm1.AtualizaDataViewDinamica(CRelatoriosP02, cdsParcelas, True, 'DwParcRefis');
DM1.ExecutaRavePreview(CRelatoriosP02, 'RelSimulacaoParcRefis2009', 'Simulação do parcelamento em (' + FormatDateTime('dd/mm/yyyy', TDateUtil.GetDate) + ') REFISBLU-2009', Self);
end;
end;
---------------------
procedure TDM1.ExecutaRavePreview(IndexRvProj: Integer;
Relatorio, Titulo: string; PMasterForm: TfmBasicWindow;
CriaPDF: Boolean = False; PathFile: string = ''; PIndex: Integer = 0);
var
Screen: TScreen;
RvProj: TRvProject;
x: TRPRender;
begin
Screen := TScreen.Create(self);
try
Screen.Cursor := -11; // crHourGlass;
if (CriaPDF) and (Trim(PathFile) <> '') then
begin
RvSystem.RenderObject := GetRvRender(PIndex);
RvSystem.OutputFileName := PathFile;
RvSystem.DoNativeOutput := False;
RvSystem.DefaultDest := rdFile;
RvSystem.SystemFiler.StreamMode := smTempFile;
RvSystem.SystemSetups := RvSystem.SystemSetups - [ssAllowSetup];
end;
FMasterForm := PMasterForm;
GetProjRave(IndexRvProj, RvProj);
if Titulo <> '' then
RvSystem.SystemPrinter.Title := Titulo
else
RvSystem.SystemPrinter.Title := Relatorio;
RvProj.SelectReport(Relatorio, True);
RvProj.SetParam('Titulo', Titulo);
if Relatorio <> 'RelExtNFAvulsa' then
RvProj.SetParam('DataAtualSistema',
TDateUtil.DateToStr(TDateUtil.GetDate))
else
RvProj.SetParam('DataAtualSistema', '');
// RvProj.Open; teste..
RvProj.Execute;
// RvProj.Close; teste...
finally
Screen.Cursor := 0; // crDefault;
Screen.Free;
end;
end;
GOSTEI 0