Fórum Lentidão para gerar relatório #289571

26/07/2005

0

Boa tarde pessoal,
estou fazendo um programa aqui mas a chamada do relatório está mto lenta.. eis meu código:

If cktodosonibus.Checked then
begin
DM.GeraRelatorio.close;
DM.GeraRelatorio.SQL.Clear;
DM.GeraRelatorio.SQL.ADD(´SELECT * FROM ONIBUS ORDER BY PLACA,MODELO´);
DM.GeraRelatorio.Open;
end
else If ckonibus.Checked then
begin
DM.GeraRelatorio.close;
DM.GeraRelatorio.SQL.Clear;
DM.GeraRelatorio.SQL.ADD(´SELECT * FROM ONIBUS WHERE CODIGOONIBUS =:COD ORDER BY PLACA,MODELO´);
DM.GeraRelatorio.Params[0].AsInteger:= DM.OnibusCodigoOnibus.Value;
DM.GeraRelatorio.Open;
end
else
Application.MessageBox(´Você deve selecionar algum filtro!´,´Informação´,mb_ok+mb_iconinformation);
If DM.GeraRelatorio.RecordCount > 0 then
begin
[b:3af5c553a2] Application.CreateForm(TFrmRelGeracao,FrmRelGeracao);[/b:3af5c553a2]// FrmRelGeracao.QGeraOnibus.Prepare;
FrmRelGeracao.QGeraOnibus.Preview;
end
else
Application.MessageBox(´Não existem dados para esta consulta!´,´Informação´,mb_ok+mb_iconinformation);

end;


ele demora tipo uns 2 minutos pra abrir o formulário do relatório..
sendo que so tem dois registros..
fiz passo a passo.. ele executa rapidamente a sql.. o que demora mais é a criação do formulário.. que está em negrito..
vcs sabem o que posso fazer para resolver isso..

valeu
Eric


Eric.miranda

Eric.miranda

Responder

Posts

26/07/2005

Rjun

O que tem no seu form? Apenas o relatório do QuickReport? Dei uma organizada no seu código. Parece que o pessoal aqui adora deixar uma query aberta.

DM.GeraRelatorio.SQL.Clear;

if cktodosonibus.Checked then
  DM.GeraRelatorio.SQL.ADD(´SELECT * FROM ONIBUS ORDER BY PLACA,MODELO´);
else if ckonibus.Checked then
begin
  DM.GeraRelatorio.SQL.ADD(´SELECT * FROM ONIBUS WHERE CODIGOONIBUS = :COD ORDER BY PLACA, MODELO´);
  DM.GeraRelatorio.Params[0].AsInteger := DM.OnibusCodigoOnibus.Value;
else
begin
  Application.MessageBox(´Você deve selecionar algum filtro!´,´Informação´, mb_ok + mb_iconinformation);
  Exit;
end;

DM.GeraRelatorio.Open;
try
  if DM.GeraRelatorio.RecordCount > 0 then
  begin
    Application.CreateForm(TFrmRelGeracao,FrmRelGeracao);// FrmRelGeracao.QGeraOnibus.Prepare;
    FrmRelGeracao.QGeraOnibus.Preview;
  end
  else
    Application.MessageBox(´Não existem dados para esta consulta!´,´Informação´,mb_ok+mb_iconinformation);
finally
  DM.GeraRelatorio.Close;
end;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar