VBA Access - Acessando Dados Externos: Acessando tabelas snapshot em queries de bancos externos - Accessing external data: Import a table snapshot from an external query

Inline image 1



O tempo pode ser o nosso aliado quando o fazemos trabalhar para nós. Mas o contrário leva-nos ao sofrimento certo. 

Imagine-se num cenário pouco incomum onde uma informação altamente relevante depende do processamento de um relatório que demora vários minutos para rodar. Ahhh, quem já passou por isso sabe como é irritante a repetitiva pergunta que sobrevém aos nossos ouvidos ritmadamente: "Está pronto?", "Já tem o relatório", "Já acabou", sim, isso é de enlouquecer.

Talvez agora mesmo esteja passando por isso. Quem sabe um Dashboard, um Scorecard, ou mesmo um Relatório que demore muito para executar porque as queries conectadas a eles são muito pesadas por serem complexas para processar e a conexão com o banco de dados também esteja comprometida por estar na rede e neste momento a rede esteja sobrecarregada com o acesso contínuo de várias pessoas dos inúmeros departamentos da sua empresa. Creiam-me, sei como é isso: E não adianta tentar explicar todas as implicações anteriores à pessoa que espera as informações salivando no seu cangote.

Este transtorno é comum à inúmeras aplicações MS Access projetadas para um propósito inicial simples, que foi sendo ampliado em tantas e inúmeras direções que fica muito difícil pensar em atualizar toda a sua aplicação.

Bem, o código que estou disponibilizando poderá lhe poupar várias horas de espera. Economizará muito tempo do seu usuário. E, se for bem vendido ao seu superior direto, o manterá no seu emprego (Especialmente se conseguir mensurar quanto tempo poupará em um ano). 

Qual é o truque?

Simples

Transformaremos todas as queries em tabelas.

Como? 

Com o uso do código abaixo.

Por quê?

Isso permitirá que os dados sejam processados previamente.

Poderá incluir parâmetros viabilizando a existência de cenários.
Insira índices nos campos mais utilizados pelo relatório

Assim quando você ou o seu usuário rodar o Dashboard, o Scorecard ou o Relatório, que foi processado previamente, terá o resultado RAPIDAMENTE.

Segue o código:

' Importa a tabela como snapshot de uma query externa.
SUB ImportQry (dbPath, extQry, localName As String)
' Faz um Loop através de todas as Tabelas da coleção.
Dim tbl As AccessObject, thisDB As Object
Set thisDB = Application.CurrentData

For Each tbl In thisDB.AllTables
   ' Caso a tabela local já existir...
   If tbl.Name = localName Then
      ' se a tabela estiver aberta...
      If tbl.IsLoaded Then
         '...Fecha a tabela.
         DoCmd.Close acTable, localName, acSaveNo
      End If
   '...deleta a tabela local.
   DoCmd.DeleteObject acTable, localName
   End If
Next tbl

' A tabela Local foi importada.
DoCmd.TransferDatabase acImport, "Microsoft Access", _
dbPath, acTable, extQry, localName
End Sub


Tags: VBA, Access, Accessing, external, data, Import, table, snapshot, query

Nenhum comentário:

Postar um comentário

diHITT - Notícias