Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

.: Vitrine

Carregando artigos...

Views

Mostrando postagens com marcador external. Mostrar todas as postagens
Mostrando postagens com marcador external. Mostrar todas as postagens

VBA Access - Acessando Dados Externos: - Conectando-se a uma tabela externa - Accessing external data: Link to external table

Inline image 1



Automatizar é uma arte. Automatizar aplicações já existentes, às vezes desenvolvidas por terceiros, ou mesmo revisitar aplicações que desenvolvemos no passado permite que melhoremos a visão que tínhamos então.

Sejamos sinceros quanto ao aspecto de tornar as coisas mais simples, rápidas e práticas sejam alguns dos nossos desejos profissionais mais verdadeiros. Especialmente para nós que desenvolvemos soluções neste restrito nicho de soluções VBA para a plataforma MS Office.

Implementada a introdução, reflito na seguinte situação: Nossas aplicações com o passar dos anos tornaram profissionais ao ponto de termos mais de uma base de dados como fonte dos mesmo relatórios.

Alguns ainda não conseguem implementar essa praticidade por simplesmente nunca terem experimentado quão importante é para o seu cliente comparar cenários distintos, ou mesmo efetuar simulações em cenários hipotéticos.

Mas na prática, como implementar essa conexão rápida em diferentes bases de dados, oferecendo tal perspectiva ao meu cliente final?

(EI, EXTIMULEM O AUTOR, DEIXEM SEUS COMENTÁRIOS)

Segue código:


Sub LinkToTbl (dbPath, extTbl, localName As String)
' Looping através da coleção Tables.
Dim tbl As AccessObject, thisDB As Object
Set thisDB = Application.CurrentData

For Each tbl In thisDB.AllTables

      If tbl.Name = localName Then

         If tbl.IsLoaded Then

            DoCmd.Close acTable, localName, acSaveNo
         End If

      DoCmd.DeleteObject acTable, localName
   End If
Next tbl

DoCmd.TransferDatabase acLink, "Microsoft Access", _
dbPath, acTable, extTbl, localName


End Sub


Tags: VBA, Access, Accessing, external, data, table, link

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

diHITT - Notícias