Desenvolvimento - Office

Tutorial de Programação VBA – Access – Parte 3

Esta é a Parte 3 do Tutorial de Programação VBA no Access. O objetivo desta série de tutoriais é mostrar como utilizar a programação VBA para solucionar problemas complexos no Access, problemas que muitas vezes não tem como ser resolvidos sem o uso de programação.

por Júlio Cesar Fabris Battisti



Objetivos:

Esta é a Parte 3 do Tutorial de Programação VBA no Access. O objetivo desta série de tutoriais é mostrar como utilizar a programação VBA para solucionar problemas complexos no Access, problemas que muitas vezes não tem como ser resolvidos sem o uso de programação.

Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso de Access Avançado e VBA. Você pode adquirir os três arquivos, com todo o conteúdo deste curso, em um total de 550 páginas de conteúdo, com exemplos detalhados, passo-a-passo, por apenas R$ 20,00 para envio através de Download. Para saber como adquirir este curso, Clique Aqui.

O Ambiente de Programação

O ambiente de programação é, basicamente, um editor de texto com recursos adicionais, os quais facilitam bastante o trabalho do programador. O Microsoft Access fornece um ambiente de programação bastante poderoso, com uma série de recursos que facilitam a criação, utilização e depuração de código VBA. Nesta parte do tutorial vamos aprender a utilizar os aspectos básicos do Ambiente de Programação do VBA.

Se não tivéssemos disponível um Ambiente de Programação, teríamos que lembrar da sintaxe de todos os comandos, dos métodos e propriedades dos objetos. Convenhamos que isso é praticamente impossível, pois com o VBA temos acesso a milhares de objetos (é isso mesmo: milhares de objetos). Cada objeto pode ter dezenas de propriedades, métodos e coleções.

O ambiente de Desenvolvimento fornece uma série de facilidades enquanto estamos criando nosso código VBA. Por exemplo, ao digitar o nome de um objeto e um ponto será aberta, automaticamente, uma lista com todos os métodos e propriedades deste objeto. Ao invés de lembrar do nome dos métodos/propriedades, basta selecioná-los em uma lista. Se selecionarmos um método, ao digitarmos o parênteses de abertura, será exibida uma lista com os argumentos esperados pelo método, bem como o tipo (texto, número, data, etc) de cada argumento. Se digitarmos um comando incorretamente, o Ambiente de Desenvolvimento emite uma mensagem e coloca em destaque o comando que foi digitado incorretamente. Estas são apenas algumas das facilidades fornecidas pelo Ambiente de Desenvolvimento do VBA.

Para conhecermos melhor o referido ambiente, vamos a um exemplo prático. Vamos abrir o banco de dados Northwind.mdb, o qual é um arquivo de exemplos que é instalado juntamente com o Microsoft Access.

Criaremos um novo formulário chamado Teste, formulário este que não será baseado em nenhuma tabela/consulta, ou seja: um formulário em branco. Vamos adicionar um botão de comando. Quando for aberto o assistente de comando vamos clicar no botão Cancelar. Criaremos, manualmente, código VBA associado ao evento Ao clicar do botão de comando. Ao criar o código veremos os principais Elementos/Vantagens do ambiente de desenvolvimento. Utilizaremos o seguinte código:

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim numreg As Integer

Set db = CurrentDb()
Set rs = db.OpenRecordset("Pedidos")

numreg = rs.RecordCount

MsgBox "NÚMERO DE REGISTROS DA TABELA PEDIDOS:  " & numreg

Importante: Não se preocupe em entender os comandos utilizados no exemplo anterior. Vamos estudar em detalhes, nas próximas partes deste tutorial, uma série de objetos, inclusive os objetos Database e RecordSet, utilizados no exemplo anterior.

Exemplo: Para criar o formulário Teste, siga os passos indicados a seguir:

Importante: Este exemplo é baseado na interface padrão do Access 2000.

1. Abra o Microsoft Access.
2. Abra o banco de dados nwind.mdb que está na pasta Semana2 (o qual faz parte dos arquivos de exemplos do curso de Access Avançado, conforme descrito anteriormente). Se você não tiver acesso ao arquivo Nwind.mdb, poderá abrir qualquer um dos arquivos de exemplos que são instalados, automaticamente, com o Microsoft Access.

3. No painel da esquerda clique em Formulários.

4. Dê um clique no botão Novo.

5. Na janela "Novo Formulário" dê um clique na opção Modo estrutura, certifique-se de qua a lista de Escolha a tabela ou consulta... esteja em branco e dê um clique no botão OK, conforme indicado na figura a seguir:

6. Será aberto um formulário em branco.

7. Localize a "Caixa de Ferramentas" (explicada em detalhes no Curso Básico de Access, o qual é Pré-requisito para acompanhamento desta série de tutoriais) e adicione um controle do tipo Botão de Comando (explicado em detalhes no Curso Básico de Access, o qual é Pré-requisito para acompanhamento desta série de tutoriais).

8. Será aberto o "Assistente de botão de comando".

9. Dê um clique no botão Cancelar, para fechar o assistente.

10. Abra as Propriedades do botão de comando e altere o seu nome para: BotaoEx.

11. Ainda com as propriedades abertas, dê um clique na guia Evento.
Clique no evento "Ao clicar".

12. Dê um clique no botão (...) que aparece ao lado do evento Ao abrir.

13. Na lista de opções que é exibida selecione Construtor de código, conforme indicado na figura a seguir:

14. Dê um clique no botão OK.15. Será aberto o ambiente de desenvolvimento do VBA, conforme indicado na figura a seguir:

Para cada evento é criado um procedimento separado. Um procedimento é um "pedaço de código" que é executado em resposta ao evento. O nome dos procedimentos associados a eventos segue um padrão bem definido. O padrão é o nome do controle (no nosso caso é BotaoEx) seguido de um sinal de sublinhado e o nome interno do evento (para o Access o evento "Ao clicar" é reconhecido como Click). Por isso, associado ao evento Ao clicar, do controle BotaoEx, temos o seguinte procedimento:

Private Sub BotaoEx_Click()
   
End Sub

A palavra Private significa que o procedimento é Privado, ou seja, somente pode ser acessado de dentro do formulário Teste. Por exemplo, não teríamos como chamar este procedimento lá no formulário Pedidos ou Clientes. O nome do procedimento é como se fosse uma função/sub-procedimento, por isso o abre e fecha parênteses após o nome. O procedimento poderia receber um ou mais parâmetros de entrada e retornar um ou mais parâmetros de saída. Aprenderemos a trabalhar com parâmetros mais adiante. O final do procedimento é indicado pelo comando: End Sub.

O nosso código de exemplo deve ser digitado dentro dos limites do procedimento (entre as linhas Private... e End Sub).

IMPORTANTÍSSIMO: ANTES DE COMEÇARMOS A DIGITAR O CÓDIGO PROPOSTO, VAMOS ABRIR UM PEQUENO PARÊNTESES PARA FALAR SOBRE REFERÊNCIAS.

REFERÊNCIAS:

Conforme descrito anteriormente, com o VBA temos acesso a milhares de objetos. Por exemplo, de dentro de um formulário podemos exibir dados gravados em uma planilha do Excel, ou em um arquivo do DBase III. Para acessarmos, de dentro do Access, dados de uma planilha do Excel, precisamos usar os objetos adequados.

Os diversos objetos disponíveis são disponibilizados através de Bibliotecas de Objetos. Por exemplo, todos os objetos para acesso ao Excel, estão agrupados em um biblioteca de objetos, todos os objetos para acesso a dados do próprio Access, estão agrupados em uma outra Biblioteca de objetos e assim por diante. Existem dezenas de bibliotecas, cada uma com centenas de objetos. Para que possamos utilizar, no código VBA, objetos de uma determinada biblioteca, precisamos, antes, fazer uma REFERÊNCIA a biblioteca correspondente. Ao fazer uma REFERÊNCIA a uma biblioteca, passamos a ter acesso a todos os objetos da biblioteca.

Você pode perguntar: Então porque não é feita referência, automaticamente, a todas as bibliotecas disponíveis? Isto não é feito, pois cada referência causa um gasto adicional de memória. Se fizéssemos referência a todas as bibliotecas disponíveis, teríamos sérios problemas de desempenho.

Para o nosso exemplo temos que fazer referência a biblioteca DAO - Data Access Objetct. Essa biblioteca contém uma série de objetos para acesso a dados. Utilizaremos, intensamente, esta biblioteca nas demais partes deste tutorial.

Para fazer referência a um biblioteca utilizamos o comando: Ferramentas -> Referências, do ambiente de desenvolvimento do VBA. Ao utilizar este comando, surge uma janela com todas as bibliotecas disponíveis. Localize a biblioteca "Microsoft DAO x.x Object Library", onde para x.x selecione a versão de maior número que você encontrar na listagem, conforme indicado na figura a seguir:

Nota: Pode ser que a versão da biblioteca DAO instalada no seu computador seja diferente. Selecione a versão disponível.

Dê um clique no botão OK e pronto, você terá feito referência a biblioteca DAO, necessária ao nosso exemplo. Fizemos referência a esta biblioteca, pois os objetos DataBase e RecordSet que utilizaremos, fazem parte desta biblioteca. Aprenderemos a utilizar estes objetos, em maiores detalhes, nas próximas partes deste tutorial. Aqui fechamos o nosso pequeno parênteses sobre REFERÊNCIAS.

16. Vamos começar a digitar o código do nosso exemplo, para que possamos observar mais algumas funcionalidades do Ambiente de Desenvolvimento.
Abaixo da linha Private..., digite o seguinte:

Dim db As DAO.Database
17. Observe que após digitar a palavra As e pressionar a barra de espaços é aberta uma listagem com todas as opções disponíveis. Você digita D e a listagem é posicionada no primeiro elemento que começa com a letra D. Selecione DAO, conforme indicado na figura a seguir:

18. Após selecionar DAO digite um ponto. Observe que, novamente, é aberta uma listagem com todos os objetos disponíveis na biblioteca DAO. Na lista de objetos selecione Database, conforme indicado na próxima figura.

É importante salientar que não pode haver espaço entre o ponto (.) e o nome do objeto. Essa é uma regra geral: Não existe espaço entre dois nomes separados por ponto (.) ou por ponto de exclamação (!).

Esta sem dúvida é uma das maiores vantagens do Ambiente de Desenvolvimento. Ao digitar o nome do objeto e um ponto, automaticamente é exibida uma lista dos métodos/propriedades disponíveis para o objeto em questão. Essa facilidade é importantíssima, pois evita que tenhamos que decorar o nome dos métodos/propriedades que mais utilizamos.

19. Digite o restante do código, indicado a seguir:

Dim rs As DAO.Recordset
Dim numreg As Integer

Set db = CurrentDb()
Set rs = db.OpenRecordset("Pedidos")

numreg = rs.RecordCount
MsgBox "NÚMERO DE REGISTROS DA TABELA PEDIDOS:  " & numreg

Observe que a medida que você vai digitando o nome dos objetos, as listas com o nome das propriedades/métodos vão sendo exibidas.

O Ambiente de Desenvolvimento também oferece uma série de menus e botões de comando. A medida que formos utilizando estes comandos iremos explicando cada um deles.

20. Agora vamos salvar o procedimento BotaoEx_Click(). Dê um clique no botão Salvar (botão com a figura do disquete). Será aberta uma janela pedindo o nome do Formulário: Digite Teste e dê um clique no botão OK, conforme indicado na próxima figura:

21. Clique no botão "x" de cima para fechar o Ambiente de Desenvolvimento.

22. Você estará de volta ao modo estrutura do formulário Teste.

23. Agora vamos testar o código recém criado.

24. Altere a legenda do botão para Exemplo de VBA!

25. Vá para o modo Formulário.

26. Dê um clique no botão Exemplo de VBA.

27. Será exibida a mensagem indicada na figura a seguir:

28. Dê um clique no botão OK para fechar essa mensagem.

29. Feche o formulário Teste.

30 Feche o Microsoft Access.

Conclusão:

Nessa terceira parte do tutorial, abordei os aspectos básicos do Ambiente de Desenvolvimento. Nas demais partes deste tutorial, utilizarei, em diversos momentos, o Ambiente de Desenvolvimento. A medida que formos utilizando este Ambiente, aprenderemos sobre as demais funcionalidades do Ambiente.

Nota: Este tutorial foi retirado da apostila da Semana 2, do Curso de Access Avançado e VBA. Você pode adquirir os três arquivos, com todo o conteúdo deste curso, em um total de 550 páginas de conteúdo, com exemplos detalhados, passo-a-passo, por apenas R$ 20,00 para envio através de Download. Para saber como adquirir este curso, Clique Aqui.

Júlio Cesar Fabris Battisti

Júlio Cesar Fabris Battisti