Eder Postado Novembro 20, 2007 Denunciar Share Postado Novembro 20, 2007 Ola...tenho um relatorio que é lento a geração...gera em torno de 3 a 5 minutos....eu tenho na tela..apenas um label informando."Aguarde Geração do Relatorio"mas eu queria colocar um contador pro usuario acompanhar o tempo de processamento.. tenho este aqui ...que funciona show...porem ele congela(visualização)...quando o relatorio começa a gerado...var Form1: TForm1; tempoInicial : TDatetime; implementation {$R *.DFM} procedure TForm1.Timer1Timer(Sender: TObject); begin Label1.Caption := FormatDateTime('hh:nn:ss',TempoInicial - Now); end; procedure TForm1.Button1Click(Sender: TObject); begin TempoInicial := now; Timer1.Enabled := true; end;na verdade ele não congela..continua contando mas pro usuario fica parado o label.grato Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Novembro 20, 2007 Denunciar Share Postado Novembro 20, 2007 OpaFaz assimLabel1.Caption := FormatDateTime('hh:nn:ss',TempoInicial - Now);Label1.Refresh;ouLabel1.Caption := FormatDateTime('hh:nn:ss',TempoInicial - Now);Application.ProcessMessages;Application.ProcessMessages é mais recomendável porque faz com que o Form seja atualizado também...abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Postado Novembro 20, 2007 Autor Denunciar Share Postado Novembro 20, 2007 (editado) Label1.Caption := FormatDateTime('hh:nn:ss',TempoInicial - Now);Label1.Refresh;ouLabel1.Caption := FormatDateTime('hh:nn:ss',TempoInicial - Now);Application.ProcessMessages;Application.ProcessMessages é mais recomendável porque faz com que o Form seja atualizado também...Ola..Churc.....beleza?carinha não deu certo...... :( Ele congela e não deixa atualizar o label.....só depois que é gerado o relatorio e mostra o preview do quickreport(video) ai quando fecho o preview ai vejo que o label contou 45 segundos.....mas eu não vi contar..um por um(segundos)..nesta hora ele tava congelado...alias o form e o programa Congela... :( só descongelando após o relatorio gerado.Obs.: a base de dados paradox é de 120 Mb um arquivo grande com mais de 80.000 registrosTens mais alguma dica pra resolver este probleminha?Grato Editado Novembro 20, 2007 por Eder Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Novembro 20, 2007 Denunciar Share Postado Novembro 20, 2007 OpaVocê possue o Código Fonte do QuickReport?Se possuir, talvez de pra implementar algo no código fonte dele... porque acredito que tudo que a gente faça no código vai ser inútil quando der o Previewabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Postado Novembro 20, 2007 Autor Denunciar Share Postado Novembro 20, 2007 Você possue o Código Fonte do QuickReport?Se possuir, talvez de pra implementar algo no código fonte dele... porque acredito que tudo que a gente faça no código vai ser inútil quando der o PreviewR.: Shiiii....ferrou. então deixa como esta mesmo.....achei que era simples, mas já ficou complicado...hehehegrato :D Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Novembro 20, 2007 Denunciar Share Postado Novembro 20, 2007 OpaHeheh blzzVamos esperar um pouco quem sabe outro colega não tem outra dica...abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Novembro 20, 2007 Denunciar Share Postado Novembro 20, 2007 Ele congela e não deixa atualizar o label.....só depois que é gerado o relatorio e mostra o preview do quickreport(video) ai quando fecho o preview ai vejo que o label contou 45 segundos.....mas eu não vi contar..um por um(segundos)..nesta hora ele tava congelado...alias o form e o programa Congela... :( só descongelando após o relatorio gerado.Eder, sem dúvida seria necessário dar margem ao processamento da tarefa de pintura do label, e isto deveria ser possível via chamada a Application.ProcessMessages conforme mencionou o Churc, mas parece que nem o seu timer está tendo chance de ser processado.Sabendo que o QuickReport executa chamadas para eventos nas bandas enquanto está sendo processado, talvez você possa colocar a chamada Application.ProcessMessages em um evento BeforePrint de alguma banda no seu relatório. Talvez isto funcione. ;)Obs.: a base de dados paradox é de 120 Mb um arquivo grande com mais de 80.000 registrosé uma base muito grande para tabelas Paradox. É hora de pensar em algo que seja um SGBD de verdade.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Novembro 20, 2007 Denunciar Share Postado Novembro 20, 2007 Eder, sem dúvida seria necessário dar margem ao processamento da tarefa de pintura do label, e isto deveria ser possível via chamada a Application.ProcessMessages conforme mencionou o Churc, mas parece que nem o seu timer está tendo chance de ser processado.Sabendo que o QuickReport executa chamadas para eventos nas bandas enquanto está sendo processado, talvez você possa colocar a chamada Application.ProcessMessages em um evento BeforePrint de alguma banda no seu relatório. Talvez isto funcione. ;)Verdade Micheus, é uma boa sim nem tinha pensado nisso rsObs.: a base de dados paradox é de 120 Mb um arquivo grande com mais de 80.000 registrosé uma base muito grande para tabelas Paradox. É hora de pensar em algo que seja um SGBD de verdade.AbraçosCom certeza, Paradox é pra coisa pequena no seu caso ai já parece ter passado disso...Firebird é gratuito e uma ótima opção...abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Postado Novembro 20, 2007 Autor Denunciar Share Postado Novembro 20, 2007 Pessoal...testei a sugestão do Micheus....neste caso depende do tipo de relatoriopor exemplo se o filtro for de uma filial que tem pouco movimentação(poucos registros) ele até conta de 4 em 4 segundos...mas se for uma filial com bastante movimentação, ai conta assim:*Tempo de geração: 00:00:01depois só quanto termina:*Tempo de geração: 0:01:49neste caso por ter muitos registros....não atualiza legal, só atualiza no inicio e no final do processamento.quanto ao tamanho da tabela paradox...bom....por enquanto vou me virando.....esta tabela só até fechar 2007, janeiro abro nova tabela 2008(Pra ficar facil a manipulação e pra não dar muito trabalho de manutenção)mas concordo plenamente com vocês...tenho que começar a mexer com um SGBD de verdade como Menciona nosso colega Micheus.Bom pessoal...é isto ai....se tiver mais alguma ideia por favor ...grato Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Eder
Ola...tenho um relatorio que é lento a geração...gera em torno de 3 a 5 minutos....eu tenho na tela..apenas um label informando.
"Aguarde Geração do Relatorio"
mas eu queria colocar um contador pro usuario acompanhar o tempo de processamento..
tenho este aqui ...que funciona show...porem ele congela(visualização)...quando o relatorio começa a gerado...
na verdade ele não congela..continua contando mas pro usuario fica parado o label.
grato
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
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.