OBTER RETORNO DO ACCESS
Bom dia amigos
Estou com uma dificuldade na hora de gravar uma tabela temporária no Access, utilizando ADO.
Meu sistema faz uma consulta as tabelas das quais desejo extrair informações e grava numa tabela temporária.
Após isso, o sistema busca essa temporária e passa seu resultado para um gerenciador de relatórios.
O problema está no seguinte:
Não está dando tempo do ADO terminar de gravar a informação na tabela temporária, então o relatório está saindo incompleto.
Há alguma forma de se obter o retorno de quando a tabela temporária terminou de ser gravada ?
Assim meu sistema somente passaria para a parte de imprimir o relatório após terminado a gravação.
Desde já agradeço a ajuda.
FLW!
Estou com uma dificuldade na hora de gravar uma tabela temporária no Access, utilizando ADO.
Meu sistema faz uma consulta as tabelas das quais desejo extrair informações e grava numa tabela temporária.
Após isso, o sistema busca essa temporária e passa seu resultado para um gerenciador de relatórios.
O problema está no seguinte:
Não está dando tempo do ADO terminar de gravar a informação na tabela temporária, então o relatório está saindo incompleto.
Há alguma forma de se obter o retorno de quando a tabela temporária terminou de ser gravada ?
Assim meu sistema somente passaria para a parte de imprimir o relatório após terminado a gravação.
Desde já agradeço a ajuda.
FLW!
Eu não gosto de usar tabelas temporárias, pois isso aumenta o tamanho do banco e faz perder performance com o tempo.
O ideal é você carregar o recordset,pode ser desconectado e usá-lo para montar seu relatório. Eu faço assim e nunca tive esse problema que relatou. além de evitar perda de tempo com montagem (gravação) da tabela, uma segunda leitura para o relatório e posterior exclusão da tabela, gerando espaço vazio no banco, você faz tudo em memória RAM bem mais ágil.
O ideal é você carregar o recordset,pode ser desconectado e usá-lo para montar seu relatório. Eu faço assim e nunca tive esse problema que relatou. além de evitar perda de tempo com montagem (gravação) da tabela, uma segunda leitura para o relatório e posterior exclusão da tabela, gerando espaço vazio no banco, você faz tudo em memória RAM bem mais ágil.
Pode ser que vc não esteja fechando a conexão.
E outra:
Costumo usar tabelas temporárias em Access.
Considero um procedimento muito rápido para gerar relatórios complexos.
Eu prefiro interagir com access através de DAO, pois é muito mais rápido do que ADO.
E outra:
Costumo usar tabelas temporárias em Access.
Considero um procedimento muito rápido para gerar relatórios complexos.
Eu prefiro interagir com access através de DAO, pois é muito mais rápido do que ADO.
Obrigado pelas dicas, pessoal.
Só que há alguns detalhes:
Esse software é muito grande e complexo (é um [Ô]esqueleto[Ô], por assim dizer, de um ERP).
Eu também acho tabelas temporárias ruins, mas o impacto da retirada desta sistemática no contexto geral seria enorme e difÃcil de mensurar. Infelizmente terei de, por enquanto, conviver com esta situação.
Já sobre usar o DAO, o Acceess 2003 não suporta o Jet 3.5, somente o 4, que já prevê o ADO em vez do DAO.
Mais uma vez, obrigado pelas dicas e, caso tenham mais alguma idéia, por favor postem.
Valeu !
Só que há alguns detalhes:
Esse software é muito grande e complexo (é um [Ô]esqueleto[Ô], por assim dizer, de um ERP).
Eu também acho tabelas temporárias ruins, mas o impacto da retirada desta sistemática no contexto geral seria enorme e difÃcil de mensurar. Infelizmente terei de, por enquanto, conviver com esta situação.
Já sobre usar o DAO, o Acceess 2003 não suporta o Jet 3.5, somente o 4, que já prevê o ADO em vez do DAO.
Mais uma vez, obrigado pelas dicas e, caso tenham mais alguma idéia, por favor postem.
Valeu !
Existe uma declaração no VB chamada Sleep, para xausar um retardo na aplicação, o que daria tempo entre a gravação na tabela temporaria e a emisão do relatorio.
[ô]Declaracoes API do windows
Public Declare Sub Sleep Lib [Ô]kernel32.dll[Ô] (ByVal dwMilliseconds As Long)
[ô]--------------------------
uso: Call Sleep(600)
Ex: 1-Gravacao dos dados para o relatorio
2-Termino da Gravação
3-Chama sleep(Tempo em Milisegundos)
4-Chama o gerenciador de relatorios
[ô]Declaracoes API do windows
Public Declare Sub Sleep Lib [Ô]kernel32.dll[Ô] (ByVal dwMilliseconds As Long)
[ô]--------------------------
uso: Call Sleep(600)
Ex: 1-Gravacao dos dados para o relatorio
2-Termino da Gravação
3-Chama sleep(Tempo em Milisegundos)
4-Chama o gerenciador de relatorios
Citação::
Obrigado pelas dicas, pessoal.
Só que há alguns detalhes:
Esse software é muito grande e complexo (é um [Ô]esqueleto[Ô], por assim dizer, de um ERP).
Eu também acho tabelas temporárias ruins, mas o impacto da retirada desta sistemática no contexto geral seria enorme e difÃcil de mensurar. Infelizmente terei de, por enquanto, conviver com esta situação.
Já sobre usar o DAO, o Acceess 2003 não suporta o Jet 3.5, somente o 4, que já prevê o ADO em vez do DAO.
Mais uma vez, obrigado pelas dicas e, caso tenham mais alguma idéia, por favor postem.
Valeu !
Não acho tabelas temporárias ruins... acho que é uma solução a ser considerada.
Existe um ganho de performance muito grande (dependendo da complexidade).
Como vc disse que esse software é muito grande e complexo, imagino que vc deve estar usando um banco de dados com mais recursos do que um Access. Então vc poderia optar por uma combinação de stored procedure e tabelas temporárias (considerando um SqlServer).
Não é ideal utilizar tabelas temporárias já que cai a performance do BD e do sistema, no caso do Access vc poderá ter problemas com MDB corrompido !
Tópico encerrado , respostas não são mais permitidas