Onde e quando fechar e abrir?

04/03/2010

Estou fazendo uma aplicação para uma hospital da minha cidade, inclusive consegui gerar os relatórios normalmente, mas acontece que vi uma matéria em outro site que dizia que seria bom fechar e abrir o DM em cada formulário, fui fazer essa alteração e agora não gera relatório algum. Onde será que está o erro? Segue abaixo o link para download da aplicação, estou usando Delphi 7 e Firebird.   http://www.guarantadonorte.mt.gov.br/raiox.rar   Grato, Lucas    
Lucas Souza

Lucas Souza

Curtidas 0

Respostas

Wesley Yamazack

Wesley Yamazack

04/03/2010

Olá amigo,
   O que deve estar acontecendo é o seguinte, você tem seus componentes de relatório dentro do DataModulo ? Pois se tiver, toda vez que você destruir o datamodule, terá que criar antes de gerar o relatório, eu particularmente não crio meus datamodules toda hora e destruo não, deixo ele no auto create, e nunca os destruo.
   Qual ferramenta de relatório você esta usando? Os componentes do relatório estão no datamodule ? Qual é o erro que aparece , é access violation ?

Um abraço

Wesley Y
GOSTEI 0
Lucas Souza

Lucas Souza

04/03/2010

ok, a informação de não criar e destruir o DataModule é interessante, vou fazer assim daqui pra frente. Utilizo QuickReport pra gerar os relatórios. Sobre os componentes do relátório não estão dentro do DM, somente chamo o relatório tipo "relatorio.preview" somente as querys para os relatórios estão no DM, então, o que você acha?
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/03/2010

Olá amigo,
  Se suas querys estão no DM, provavelmente  quando você manda gerar o Relatório, ou seu datamodule não esta criado(mas isso daria o erro de access violation), ou sua query não esta aberta, você não usa ClientDataSet não ?

Um abraço

Wesley Y
GOSTEI 0
Lucas Souza

Lucas Souza

04/03/2010

Eu uso ClientDataSet sim, conforme projeto que te enviei no link.  Eu abro o  ClientDataSet ou a Query para o relatório? Coloquei todos os forms em auto create, funcionou mais quando fecho a aplicação dá erro AccessViolation.   O que coloco no AutoCreate?
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/03/2010

Olá amigo,
   Blz por usar o CDS, você tem que abrir o ClientDataSet, o accessViolation, é muito vasto eu lhe falar onde esta o erro, só posso lhe dizer, que você esta tentando acessar um componente, que não esta criado, tipo acessar o CDSCliente, no DM, sendo que seu DM não esta criado, mas como você esta com tudo criado no autocreate, o que pode acontecer, é que na hora de fechar um determinado form você esta disparando um evento em um componente que já foi destruido, sacou ?

Eu lhe recomendo deixar somente o DM, e o FrmPrincipal no AutoCreate, pois assim você consome menos recursos da tua aplicação, quando precisar usar um FrmCliente por exemplo, você cria ele, depois destroi, quando for usar um FRmRElatorioCliente, você cria ele depois destrio, mas sempre com o DM criado, nunca fica destruindo e criando sacou ?

Um abraço

Wesley Y
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/03/2010

Olá amigo, como esta o andamento da sua dúvida ? consegui resolver o problema ?

Um abraço

Wesley Y
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

04/03/2010

Olá amigo , fechamos o chamado por falta de retorno, se existir alguma dúvida reabrimos o mesmo.


Att,

Wesley Y
GOSTEI 0
POSTAR