[Resolvido] Problema ao executar relatório do RAVE
Olá pessoal,
Estou com o seguinte problema. Na hora de chamar um relatório, ocorre um erro de "access violation". O erro ocorre na linha do Execute, do código abaixo:
if ibqAux.RecordCount > 0 then
begin
try
// LOG
insereLog ('Emitiu o Relatório de Clientes em Débito que Continuam Comprando.');
rpjRelatorio.Execute;
except
MessageDlg('Um erro aconteceu na hora de visualizar o relatório. Por favor tente novamente.',mtError,[mbOK],0);
CriarLogErro(datadosistema, horadosistema, sExceptionAcao, 'Tentou visualizar o Relatório de Clientes em Débito que Continuam Comprando.');
end;
ibqAux.Close;
end else
begin
ShowMessage ('Nenhum Registro Encontrado.');
end;O ibqAux (do tipo TIBQuery) é alimentado via SQL, que segue abaixo:
// ---------------------------------------------------------------------------
// MONTA A SQL PARA AS PROMISSÓRIAS
// Parte Inicial
ibqAux.SQL.Text :=
'SELECT PROMISSORIAS.PROCODIGO, PROMISSORIAS.PESCODIGO, PROMISSORIAS.PRODATEMI, PROMISSORIAS.PRODATVEN, '+
' PROMISSORIAS.PRODATPAG, PROMISSORIAS.PRONPARCE, PROMISSORIAS.PROVALOR, PROMISSORIAS.PROOBSERV, '+
' PROMISSORIAS.PROPROMISSORIAATRASADA, PESSOAS.PESNOME, MODULO.MODNOME, MODULO.MODLOGIN '+
'FROM PROMISSORIAS '+
'LEFT JOIN PESSOAS ON (PROMISSORIAS.PESCODIGO = PESSOAS.PESCODIGO) '+
'LEFT JOIN MODULO ON (PROMISSORIAS.MODCODIGO = MODULO.MODCODIGO) ';
// Monta o WHERE
ibqAux.SQL.Text := ibqAux.SQL.Text +
'WHERE (PROMISSORIAS.PROPROMISSORIAATRASADA = '+QuotedStr('S')+') ';
if (edtDatIni.Text <> ' / / ') then
begin
ibqAux.SQL.Text := ibqAux.SQL.Text +
' AND (PROMISSORIAS.PRODATEMI BETWEEN '+QuotedStr(FormatDateTime('mm/dd/yyyy',StrToDate(edtDatIni.Text)))+' AND '+QuotedStr(FormatDateTime('mm/dd/yyyy',StrToDate(edtDatFin.Text)))+') ';
end;
if (cbxModulo.ItemIndex <> -1) and (cbxModulo.ItemIndex <> 0) then
begin
ibqAux.SQL.Text := ibqAux.SQL.Text +
' AND (MODULO.MODLOGIN = '+QuotedStr(cbxModulo.Items[cbxModulo.ItemIndex])+') ';
end;
if (iCodigo <> 0) then
begin
ibqAux.SQL.Text := ibqAux.SQL.Text +
' AND (PROMISSORIAS.PESCODIGO = '+QuotedStr(IntToStr(iCodigo))+') ';
end;
// Finaliza a SQL
ibqAux.SQL.Text := ibqAux.SQL.Text +
'ORDER BY PROMISSORIAS.PESCODIGO, PROMISSORIAS.PROCODIGO ';
ibqAux.Open;
ibqAux.First;
ibqAux.FetchAll;Já tentei colocar uma DBGrid no form pra ver se a SQL gerava os dados corretamente e está tudo OK. Percebi que o erro acontece depois daquela telinha de preview, ou seja, exatamente na hora de carregar o relatório. Alias, criei o relatório via componente TRvProject, usando o designer dele. Nesse relatório tenho um agrupamento. Também adicionei um Direct DataView, que carregou os campos pré-existentes no TIBQuery do form (os quais criei manualmente). Seguem os campos:
>
TIBQuery
ibqAuxPROCODIGO: TIntegerField
FieldName = 'PROCODIGO'
ibqAuxPESCODIGO: TIntegerField
FieldName = 'PESCODIGO'
ibqAuxPRODATEMI: TDateField
FieldName = 'PRODATEMI'
ibqAuxPRODATVEN: TDateField
FieldName = 'PRODATVEN'
ibqAuxPRODATPAG: TDateField
FieldName = 'PRODATPAG'
ibqAuxPRONPARCE: TIntegerField
FieldName = 'PRONPARCE'
ibqAuxPROOBSERV: TStringField
FieldName = 'PROOBSERV'
Size = 255
ibqAuxPROPROMISSORIAATRASADA: TStringField
FieldName = 'PROPROMISSORIAATRASADA'
Size = 1
ibqAuxPESNOME: TStringField
FieldName = 'PESNOME'
Size = 50
ibqAuxMODNOME: TStringField
FieldName = 'MODNOME'
Size = 60
ibqAuxMODLOGIN: TStringField
FieldName = 'MODLOGIN'
Size = 30
ibqAuxPROVALOR: TIBBCDField
FieldName = 'PROVALOR'
Precision = 8
Size = 2
Eu já virei a Internet atrás de uma resposta, procurei aqui no fórum, em outros fóruns, em manuais do Rave, baixei video-aulas e nada. Simplesmente dá erro na hora de carregar o relatório. E a mensagem de erro não me dá nenhum informação a mais.
Penso que deve ser um erro elementar, pois estou dando os primeiros passos com o Rave Report, apesar de já ter trabalhado com outros geradores de relatórios da mesma categoria (como o ReportBuilder).
Obrigado pela atenção.
Discussão (3)
Carregando comentários...