Microsoft Access para Telecom - Parte 1

quinta-feira, 16 de junho de 2011 18:31:00 Categories: Microsoft Access
Rate this Content 2 Votes

Como não podia deixar de ser, vamos começar uma série de tutoriais também para o Microsoft Access, até porque o mesmo é bastante utilizado no Hunter SDK.

Um fato comum em iniciantes no Acces é que na maioria das vezes existe uma espécie de ‘barreira’, como se o Access fosse um programa extremamente complicado, apenas para os famosos DBA (database administrator). Mesmo quem utiliza o Excel, de forma até avançada, acha difícil começar a trabalhar com o Access, e simplesmente deixa de utilizá-lo.

 

 

Mas vamos começar com um exemplo: Imagine que você dirija todo dia para o seu trabalho por um longo caminho, e acorda cedo todo dia para chegar no horário. E então, suponha que seja aberta uma nova estrada, bem mais curta, e igualmente segura, que permita que você também se dirija para a sua empresa. O que você passa a fazer?

Naturalmente, você opta pelo caminho mais rápido, ou melhor dizendo, pela melhor forma de se fazer a tarefa de ir para o trabalho. É claro que você sempre terá a longa estrada lá, caso queira utilizar. Mas pelo menos sabe que existe um estrada nova!

Mais ou menos essa é a analogia que se aplica quando descobrimos um software que pode nos ajudar a fazer melhor ou mais rápido o nosso trabalho.

Veja porém, voltando ao exemplo do trajeto para o trabalho, que embora seja mais longo, você tem plena confiança, conhece todas as curvas e buracos. No novo caminho, você ainda precisa se familiarizar.

E isso também acontece com o Access. A partir do momento em que você pratica algumas vezes, e se familiariza com o mesmo, acaba conhecendo a sua potencialidade, e aí o limite vai ser a sua necessidade e criatividade.

Nota: naturalmente, o Access não substitui nada. É apenas mais uma ferramenta que você pode utilizar no seu conjunto de ferramentas que já utiliza no dia a dia.

Vamos hoje conhecer algumas delas.

 

O Programa

O Microsoft Acces é um software integrante do Office, da Microsoft. Provavelmente você já utilizou o Word, e também o Excel e PowerPoint.

Para maiores informações, por favor visite a página da Microsoft: Não vamos ficar aqui também começando do básico, explicando tabelas, relacionamentos, etc. Como sempre, vamos direto ao assunto. Isso não é um curso de Access, e sim Dicas de Access.

Como o Hunter SDK é baseado em grande parte no Microsoft Access com VBA, os tutoriais do Hunter contém explicações detalhadas sempre que uma nova ação (criar tabela, criar consulta...) é necessária. Assim, mesmo que você não tenha interesse em utilizar o Hunter SDK, recomendamos a leitura desses tutoriais, que contém grandes dicas de utilização do Access.

 

Vamos ao que interessa?

A série de dicas de Programas para Telecom do telecomHall sempre apresenta situações práticas, através de exemplos. Nesse caso, os arquivos podem ser baixados gratuitamente.

Vamos começar hoje com uma dica que envolve cálculos de distância a partir de uma tabela com as coordenadas de sites.

 

Encontrar Sites mais próximos de cada Site em uma Lista

Para ficar mais fácil de entender, veja a figura a seguir, com 8 sites de A a H. Qual o site (ponto) mais próximo do site A?

 

Certo, é difícil dizer. E se você souber a Latitude/Longitude, ajuda?

Ainda não, correto?

Então você pode dizer: me dê esta tabela no Excel, que eu respondo.

Tudo bem, então vamos fazer. Para facilitar, vamos utilizar a fórmula para cálculo de distância entre coordenadas aproximada.

Nota: O cálculo preciso da distância entre pontos com coordenadas diferentes deve ser feito utilizando diversos fatores, como o raio da terra, entre outros. Entretanto, a aproximação trigonométrica na grande maioria das vezes é mais do que suficiente. Até mesmo porque, a diferença que existe entre o resultado do cálculo completo e do cálculo aproximado é mínima, bem menor por exemplo que a tolerância que temos na precisão dos próprios GPS que foram utilizados para obtenção da coordenada de cada site.

No tutorial Hunter GE Network Sectors, aprendemos como calcular as coordenadas de um ponto a partir de uma determinada distância (que no caso é a distância do setor plotado no Google Earth ou Mapinfo).

Hoje, temos 2 pontos (com coordenadas, e precisamos calcular a distância). Na nossa aproximação, usamos o Raio Médio da Terra = 6371.1 kilômetros.

Por exemplo, para calcular a distância entre o nosso Site A e o nosso Site B, temos:

No Excel, a fórmula para cálculo da distância entre dois pontos de coordenadas diferentes fica como vemos a seguir.

 

Podemos então, utilizar essa fórmula na nossa planilha, lembrando de fixar o Raio Médio da Terra, e as Coordenadas do Site A – só variando as coordenadas do Site Final.

 

 

Tudo bem. E se agora alguém te pergunta: ‘E qual o Site mais próximo do Site F?’.

Podemos continuar fazendo no Excel, daria um pouco mais de trabalho, e bastante replicações desnecessárias. Mas vamos aproveitar, e ver como fazer isso no Access?

Primeiro, inserimos essa tabela no Access. (Existem diversas formas, como visto nos tutoriais Hunter, a mais rápida é selecionando todos os dados na planilha do Excel, e colando num banco de dados vazio do Access. Simples assim).

 

Pronto, já temos a tabela no banco de dados: ‘telecomhall_tips’ – o nome vem do nome da guia da planilha colada. Podemos mudar, mas não há necessidade.

 

Primeiro, vamos criar uma consulta baseada nessa tabela, com o nome de ‘qry_Sites’. Essa consulta nos mostra a relação de Sites, e é com essa consulta que vamos trabalhar – ao invés da tabela.

 

Então, criamos uma outra consulta ‘qry_Sites_Coords_Ini’. Contém as coordenadas de todos os Sites, com o sufixo ‘_ini’.

 

E fazemos o mesmo para ‘fin’ (Novas consultas e campos).

 

Talvez você ainda não esteja entendendo onde queremos chegar, talvez esteja meio perdido. Mas veja que até agora, estamos trabalhando com consultas simples, os nossos recordsets de dados.

Quando trabalhamos com recordset, é como se tivéssemos, para cada consulta disponível, um snapshot dos dados em uma grande tela. E é possível criar consultas baseadas em consultas – inclusive fazendo agrupamentos e cálculos (máximo, mínimo, soma, etc...). Podemos até utilizar funções nos campos calculados – da mesma forma que fazemos uma formula no Excel. E ainda podemos criar nossas próprias funções.

O grande segredo do banco de dados Access é utilizar o SQL. O que o Access faz é tornar mais fácil a criação de consultas SQL – através de sua Interface do Usuário.

Nota: é claro que existem diferenças entre um banco de dados Access e um banco de dados MSSQL ou Oracle. Mas isso não vem ao caso agora, e o Access é suficiente para quem trabalha com Telecom.

Utilizando o SQL, o Access nos permite criar recordsets de referência cruzada, tabelas do tipo UNION, entre outras ainda mais avançadas. Só que esse não é o nosso assunto de hoje, aliás, estamos saindo do foco – vamos voltar para o nosso exemplo.

Então, temos 2 recordsets:

 

Aqui, usamos um truque: Quando criamos uma consulta que envolve mais de uma tabela e/ou consultas, as mesmas deve estar ligadas por algum relacionamento ou junção, caso contrário, os dados serão repetidos – para cada registro de uma tabela/consulta, temos todos outros dados da outra tabela/consulta.

Calma: isso não é fácil de entender. Principalmente se você não estiver familiarizado com o Access. Mas vamos continuar, e talvez com o resultado, fique mais fácil.

Então, criamos uma consulta ‘qry_Sites_Coords_Distance’. E simplesmente adicionamos as nossas duas consultas. Sem fazer nenhum tipo de amarração entre elas.

 

Vamos direto ao assunto: rode a consulta, e veja o resultado.

Veja que para cada linha da primeira consulta (por exemplo na primeira tabela temos um registro com name = A) temos TODAS as outras linhas da outra consulta (A ... H). E na mesma linha de cada um, incluímos o campo calculado ‘Distance’.

 

E então, essa tabela (consulta) já nos ajuda muito não?

Vamos continuar um pouco mais. A partir de nossa consulta atual, vamos criar uma nova consulta ‘qry_Sites_Coords_Distance_Min’. Nessa consulta temos:

name_ini: o nome de cada Site agrupado (apenas um A, apenas um B...);

MinDistance: campo calculado com a menor distância (de cada name_ini – A, B, C...);

E uma condição: Onde name_ini é diferente name_fin (no mesmo registro / linha). Isso porque quando isso ocorre, por exemplo name_ini = A e name_fin = A, temos Distância = 0. Ou seja, isso serve para filtrarmos excluindo os registros do nosso recordset que não nos interessa.

Nota: esse critério de filtro de distância já poderia ter sido aplicado na consulta anterior, e aqui não precisaríamos mais dessa cláusula ‘Onde’.

Executando a consulta, temos mais um recordset disponível para trabalharmos.

 

Para finalizar, vamos criar a nossa consulta final ‘qry_Sites_Coords_Distance_Closest_FINAL’.

Bom, está aí o resultado esperado. Para cada Site (name_ini A, B, C...) temos o site mais próximo (name_fin) e sua respectiva Distância. Por exemplo, o site H é o mais próximo do Site A, a 1807 metros!

 

E se eu tiver muito mais sites?

Aí você pode se perguntar: Mas como é a performance? E se eu tiver muitos registros (sites), vai demorar muito – como demoram as macros no Excel?

A resposta é Não! O Access é muito mais poderoso que o Excel, principalmente em se tratando de processar mais registros de uma só vez.

Faça o teste você mesmo, coloque (muito) mais registros na tabela original, e rode a mesma consulta novamente.

Esperamos que com esse tutorial você consiga ver o Access de outra forma – não como uma ferramenta complexa, e sim como uma poderosa auxiliadora para o seu trabalho diário.

 

Download

Para baixar os arquivos deste tutorial, clique aqui.

Observação: O Hunter SDK é o conjunto de ferramentas criadas e demonstradas no telecomHall – incluindo as Macros e Códigos. O Hunter SDK somente é enviado para Colaboradores Doadores, como forma de agradecimento pela contribuição realizada e reconhecimento do esforço dedicado. Clique aqui se desejar saber mais.

 

Conclusão

Este foi uma breve introdução a utilização do Software Microsoft Access em situações reais de Telecom.

Hoje vimos como através da criação de consultas simples (embora ainda possam parecer complexas para quem está tendo o primeiro contato) podemos encontrar o site mais próximo de cada site em uma listagem.

Obrigado pela companhia, e até nosso próximo encontro!