Ir para conteúdo
Fórum Script Brasil
  • 0

Quick Repor está lento


robinhocne

Pergunta

Bom dia pessoal, estou com problema em um cliente meu!

Quando ele imprimi um relatorio, e ai em seguida quando vai pedir o outro relatorio, ele começa a ficar lento...

o computador do meu cliente não é tão lento e nem tão rapido, mas na hora que pede para imprimir ele demora de 3 a 4 minutos só para gerar o relatorio, mas quando testo em caso ele não fica lento, mas isso acotence só de vez em quando.

Esse relatorio é feito em tempo de execução.

Ex.:

<<< Antes de criar o relatorio em faço a sql>>>

  Aplication.CreateForm (TRelatorio, Relatorio);
  Relatorio.Preview;
  FreeandNil(Relatorio);

Por favor fico aguardando resposta!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
<<< Antes de criar o relatorio em faço a sql>>>

  Aplication.CreateForm (TRelatorio, Relatorio);
  Relatorio.Preview;
  FreeandNil(Relatorio);

Verifica se não está faltando índices na SQL. A falta de índices reduz, exponencialmente ao crescimento da tabela, a velocidade de execução do relatório (por causa da query)

Link para o comentário
Compartilhar em outros sites

  • 0
<<< Antes de criar o relatorio em faço a sql>>>

  Aplication.CreateForm (TRelatorio, Relatorio);
  Relatorio.Preview;
  FreeandNil(Relatorio);

Verifica se não está faltando índices na SQL. A falta de índices reduz, exponencialmente ao crescimento da tabela, a velocidade de execução do relatório (por causa da query)

em questão do sql, não é, pois o sql, só busca poucos dados que serão mostrados, e no inicio eu consiguo vizualizar rapido mas depois demora muito!

Link para o comentário
Compartilhar em outros sites

  • 0
<<< Antes de criar o relatorio em faço a sql>>>

  Aplication.CreateForm (TRelatorio, Relatorio);
  Relatorio.Preview;
  FreeandNil(Relatorio);
Verifica se não está faltando índices na SQL. A falta de índices reduz, exponencialmente ao crescimento da tabela, a velocidade de execução do relatório (por causa da query)
em questão do sql, não é, pois o sql, só busca poucos dados que serão mostrados, e no inicio eu consiguo vizualizar rapido mas depois demora muito!
Esse é o codigo em que eu faço o sql, e para mostra no relatorio:
Application.CreateForm(TRHonorario,RHonorario);

  DmDados.TbConfigura.Open;
  RHonorario.QrEmpresa.Caption:=DmDados.TbConfiguraEMPRESA.AsString;
  if FileExists(DmDados.TbConfiguraLOGO.AsString) then
  begin
     RHonorario.QrLogo.Picture.LoadFromFile(DmDados.TbConfiguraLOGO.AsString);
  end;
  DmDados.TbConfigura.Close;


  RHonorario.QrTitulo.Caption :='Relatório de Honorários - '+ComboBox1.Text;
  RHonorario.QrPeriodo.Caption:='Periodo: '+Dt_Inicial.Text
                              +  ' a '+Dt_Final.Text+' - '+ComboBox2.Text;

  RHonorario.QrDespesa.Caption:='Despesa: '+eDespesa.Text
                             +  ' - '+PDespesa.Caption;
  RHonorario.QrCredor.Caption:='Credor: '+ECredor.Text
                             +  ' - '+PCredor.Caption;



  TbRelReceber.Close;

  // sql.. e filtros
  TbRelReceber.SelectSQL.Clear;
  TbRelReceber.SelectSQL.Add('SELECT CODI_REC||'+#39+'/'+#39+ '||PARC_REC AS DOCUMENTO, HIST_REC, EMIS_REC,VALO_REC, DTPG_REC, DESC_REC, (PAGO_REC+AMOR_REC) AS PAGO,');
  TbRelReceber.SelectSQL.Add('JURO_REC,VENC_REC,(VALO_REC+JURO_REC) as TOTAL,');
  TbRelReceber.SelectSQL.Add('CRED_REC, PESSOAS.NOME_PES, DESP_REC, DESC_DES, ');
  TbRelReceber.SelectSQL.Add('(CASE WHEN DTPG_REC IS NULL THEN');
  TbRelReceber.SelectSQL.Add('CASE WHEN CURRENT_DATE>VENC_REC THEN (CURRENT_DATE-VENC_REC)');
  TbRelReceber.SelectSQL.Add('ELSE 0 END ELSE');
  TbRelReceber.SelectSQL.Add('CASE WHEN VENC_REC>DTPG_REC THEN  (VENC_REC-DTPG_REC)');
  TbRelReceber.SelectSQL.Add('ELSE 0 END END) AS "ATRASO"');
  TbRelReceber.SelectSQL.Add('FROM HONORARIO INNER JOIN PESSOAS ON CODI_PES = CRED_REC');
  TbRelReceber.SelectSQL.Add('INNER JOIN DESPESAS ON CODI_DES = DESP_REC');


  // filtro da data
  If ComboBox2.ItemIndex = 0 then
  begin
     TbRelReceber.SelectSQL.Add('where emis_rec BETWEEN :PDATA1 AND :PDATA2');
  end
  else
  begin
     TbRelReceber.SelectSQL.Add('where venc_rec BETWEEN :PDATA1 AND :PDATA2');
  end;
  // tipo de conta
  If ComboBox1.ItemIndex = 0 then
  begin
     TbRelReceber.SelectSQL.Add('and dtpg_rec is null');
  end
  else if ComboBox1.ItemIndex = 1 then
  begin
     TbRelReceber.SelectSQL.Add('and dtpg_rec is not null');
  end;

  // filtro cliente
  if eDespesa.Value>0 then
  begin
     TbRelReceber.SelectSQL.Add('and desp_rec = '+eDespesa.Text);
  end;

  if ECredor.Value>0 then
  begin
     TbRelReceber.SelectSQL.Add('and cred_rec = '+ECredor.Text);
  end;
  TbRelReceber.SelectSQL.Add('ORDER BY CRED_REC,1');

  TbRelReceber.ParamByName('PDATA1').AsDate:=Dt_Inicial.Date;
  TbRelReceber.ParamByName('PDATA2').AsDate:=Dt_Final.Date;

  TbRelReceber.Open;
  RHonorario.Preview;
  FreeAndNil(RHonorario);
  TbRelReceber.Close;
  ActiveControl:=ComboBox1;

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...