OBTER RETORNO DO ACCESS

VERNIZZE 03/06/2010 09:44:27
#343783
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!
LUIS.HERRERA 03/06/2010 10:31:40
#343787
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.

MARCOSLING 03/06/2010 11:25:42
#343790
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.
VERNIZZE 03/06/2010 12:52:02
#343800
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 !
TEMPESTADE 03/06/2010 13:48:51
#343805
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
MARCOSLING 03/06/2010 14:12:15
#343808
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).
NLSOLUCOES 03/06/2010 14:35:24
#343811
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