Erro RAVE REPORTS DELPHI 2010

Delphi

30/07/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

Feesc

Curtidas 0

Respostas

Eduardo

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

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
GOSTEI 0
Feesc

Feesc

30/07/2010

Alguém consegue nos ajudar no RAVE REPORTS?
GOSTEI 0
Felipe Caputo

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:
  RvProject1.Open;  .....  RvProject1.ExecuteReport('piscofinsresumido');  RvProject1.Close;

pode ser que resolva para você!
GOSTEI 0
Feesc

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;
GOSTEI 0
POSTAR