Programacao
Programação em Access
A forma mais habitual de se começar a programar em Access é usando os Wizards para fazer algumas tarefas básicas.
A programação em Access pode ser feita associada aos eventos dos vários objectos dentro dos formulários e dos relatórios ou podem ser criados módulos com funções e procedimentos que podem depois ser chamados de qualquer lado.
As macros são antes de mais algo que existe em termos de compatibilidade. Como são algo limitadas naquilo que permitem fazer são mais usadas para 2 ou 3 funcionalidades especiais.
Macro AutoExec
A macro AutoExec corre automaticamente quando se abre uma base de dados na qual ela existe. Excepto se carreguar em shift durante a abertura da mesma.
É habitual colocar nesta macro os comandos OPEN FORM com indicação do formulário que se pretende abrir e com o comando Maximize para fazer com a Form ocupe toda a janela.
Wizards associados aos botões dos formulários
O passo seguinte costuma ser a criação nos formulários de botões. Ao colocar-se um botão num formulário activa-se um “Wizard” que vai permitir escolher uma série de acções a serem realizadas.
De acordo com a escolha efectuada assim vão ser programadas diversas actividades associadas ao objecto. Por exemplo em Form Operations, Open Form poderá escolher qual o formulário que pretende abrir. Através da criação de um botão desta forma pode passar de um formulário para outro.
Para ver o código gerado terá que seleccionar o objecto, neste caso o botão, e nas propriedades do mesmo no evento click terá que ver o código associado. Este código é um primeiro exemplo de como é feito um programa em Visual Basic e, através de alguns destes exemplos, poderá começar a habituar-se à forma de programação no Access.
Programação dos eventos
Após ter feito as primeiras experiências com estes geradores de código poderá então passar para a programação de diversos eventos a nível dos vários objectos dos formulários ou do formulário em si. Para ver a caixa das propriedades de um objecto basta fazer um duplo clic sobre o objecto em modo de design.
Nos ficheiros de ajuda encontra descriminada todas as propriedades dos vários objectos.
Nesta fase os eventos mais interessantes para manipular serão a abertura e o fecho do formulário e a alteração de ficha. Por exemplo, de acordo com um determinado valor de um campo pode-se tornar visível ou ocultar outros campos relacionados. A seguir vem a fase de facilitar a introdução de dados. Além das Combo Box, que podem nalguns casos ajudar bastante, um dos eventos que pode utilizar é o duplo-clic. Sempre que o utilizador faz um duplo-clic faz com que o valor de um campo assuma um determinado valor ou que desencadeie diversas acções.
No modo de edição do código pode chamar a função build que lhe permite chamar elementos dum objecto existente na base de dados e as respectivas propriedades. Desta forma não precisa de saber exactamente o nome de todos os campos e propriedades.
Nesta fase vai dar bastante importância a ter usado uma nomenclatura uniforme aos diversos campos e botões que surgem nos seus objectos.
Criação de código e módulos
Para elaborar programas mais complexos em Access terá que recorrer à escrita de código em Visual Basic.
O código pode ser guardado dentro do evento a partir do qual pretende desencadear a execução do código ou em módulos de funções e procedimentos que são depois chamadas a partir dos eventos.
Nesta fase será conveniente conhecer os rudimentos do Visual Basic.
Em Visual Basic poderá ter procedimentos e funções. Os procedimentos começam com:
- Sub <nome do procedimento> e acabam com End Sub.
As funções começam com:
- Function <nome da função> as <tipo de variável retornada pela função e acabam com End Function.
Tanto os procedimentos como as funções podem ter parâmetros a serem-lhes passados.
Dentro do procedimento ou função deverá começar por declarar as variáveis que pretende utilizar através do comando Dim e as constantes através do comando Const:
- Dim <nome da variável> as <tipo da variável>
- Const <nome da variável> = <valor da constante>
A seguir vem a zona de código propriamente dita. Nesta zona a atribução de valores faz-se através do =. Por exemplo, a=3. Por uma questão de clareza deverá escrever uma instrução por linha e deixar várias linhas entre blocos de código. Deverá também ser observada a identação das linhas.
Os comentários podem ser escritos usando o ‘ ou o comando REM.
Para controlar o fluxo do programa poderá usar os comandos IF e SELECT CASE. Ambos os comandos permitem escolher o código a executar em função de uma determinada condição.
Para repetir a execução de partes do seu código deverá utilizar os comandos DO…LOOP, FOR…NEXT e WHILE…WEND.
Para interagir com o utilizador do seu programa pode, por exemplo, manipular os valores dos campos dos Formulários ou pode também usar o comando MSGBOX.
A utilização de funções e procedimentos em módulos permite-lhe de uma forma mais fácil manter e reutilizar o código criado.
Manipulação dos objectos
A fase mais avançada de programação em Access está na manipulação em termos de código dos objectos que constituem o Access. Não é obrigatório manipular objectos para dar resposta a maioria das necessidades dos utilizadores do Access.
Nem todas as propriedades dos objectos são manipuláveis após a sua criação em código mas é possível criar os próprios objectos.
Esta manipulação pode ser feita a partir do Access ou através de outro programa que trabalhe com o Visual Basic como seja o Excel ou o Word. Também pode a partir do Access manipular objectos de Excel, Word, Visio ou Powerpoint usando a mesma funcionalidade.
Novamente remeto para a documentação dos diversos programas para saber quais os métodos e funções aplicáveis aos vários objectos.
Como os formulários e os relatórios já estão mais ou menos definidos e quando manipulados através de programa podem dar origem a “layout” estranhos é mais comum usar a manipulação de objectos para trabalhar com pesquisas (queries) e tabelas.
A nível de queries pode-se facilmente a nível de programação em SQL (Structured Query Language) fazer processamentos muito complexos de dados.
Para uma introdução ao SQL poderão ver o site Interactive-On-line SQL Tutorial .
Um objecto deste tipo poderá permitir pesquisas, inserções e remoção de fichas.
Quando a manipulação de dados é feita através dos objectos existe um maior controlo sobre o que é feito o que pode ser importante no caso de utilizações complexas dos dados ou de haver necessidade de ter uma maior necessidade de processamento dos dados.
Verificação e testes
Após ter criado a sua base de dados deverá testar a mesma. Para o ajudar nessa função têm a nível de código um debugger que lhe permite executar o seu código passo a passo e ver qual o valor que as diversas variáveis vão assumindo.
Não se esqueça de submeter a base de dados aos testes de outra pessoa. Outra pessoa saberá sempre encontrar erros no seu sistema e poderá rapidamente apontar-lhe ainda problemas que possam haver na facilidade de utilização do sistema.
Lembre-se, para quase todas as pessoas, é melhor um sistema fácil de utilizar mas menos poderoso do que um sistema que faça tudo mas que seja muito complicado.
Os testes serão tão mais longos quanto mais curto tiver sido o tempo para a concepção do sistema ou para o seu desenvolvimento.
Os acabamentos
A grande diferença entre uma aplicação profissional e uma aplicação desenvolvida para uso próprio está no nível dos “acabamentos”.
Numa aplicação desenvolvida de forma profissional é normal retirar os menus e barras de ícones existentes e substitui-las por menus e barras desenvolvidas à medida.
Todos os erros (ou pelo menos a grande maioria) são tratados a nível de código evitando-se que surjam mensagens estranhas aos utilizadores. As mensagens normais de confirmação do sistema podem ser desligadas por forma a que o sistema funcione de forma transparente para os utilizadores.
No caso de bases de dados complexas até a própria parametrização da base de dados e de algumas entidades deverá ser feita com base em tabelas próprias e formulários próprios.
Outro aspecto em que é necessário ter atenção é aos conflitos de actualização de dados em simultâneo por mais que um utilizador.
Em relação aos dados e por forma a permitir que o desenvolvimento do interface com o utilizador seja feito de forma independente dos dados é habitual dividir-se a base de dados em duas ficando uma com os dados e outra com todo o interface criado. Com um bom desenho inicial de estrutura de dados isto poderá permitir que se faça um grande número de alterações ao interface sem afectar os utilizadores. Esta situação também evita vários problemas que podem ocorrer devido a corrupção da base de dados.
Igualmente, e dependendo da quantidade de dados em jogo, será necessário criar ferramentas para criar cópias de segurança ou arquivar os dados existentes. Numa situação em que o número de utilizadores seja superior poderá ainda fazer a migração dos dados para SQL Server ou outra plataforma mais robusta.
Por fim, a nível de segurança de utilização poderá ser necessário proceder à autentificação dos utilizadores, definição de perfis de acesso e possibilidade de efectuar Log’s ou rollbacks de transacções efectuadas.
Um aspecto por vezes esquecido é a elaboração da documentação acerca do sistema desenvolvido, a instalação da aplicação no utilizador e o apoio a ser dado ao funcionamento do sistema. De qualquer forma o facto de os formulários e os relatórios estarem isolados do código facilita a sua manutenção.
Segurança em Access
O Access permite definir passwords para aceder a uma base de dados. Permite igualmente encriptar os dados.
É ainda possível definir grupos de utilizadores e indicar quem tem acesso a determinados objectos.
No entanto a verdade é que muitas vezes a segurança implementada a nível de Access é mais uma complicação do que uma ajuda.
Existem diversas ferramentas na Web que de graça ou por um preço bastante em conta detectam as password utilizadas e quebram as seguranças existentes.
Sendo assim eu recomendo que quando a segurança for importante se migrem os dados para SQL server. Para casos menos críticos desde que seja implementada segurança a nível das directorias de rede onde se encontra a aplicação e quem tem acesso à mesma isso será suficiente.
Existem formas de o Access detectar quem está a aceder à base de dados sem ser necessário que essa pessoa faça um login na base de dados. O comando Environ(“username”) permite obter o nome do utilizador em Windows 2000, XP ou NT.
Um problema mais grave na segurança do Access é que tem tendência a ficar com a base de dados corrompida quando começa a ficar grande. Aqui a melhor solução é dividir os dados para uma base de dados e as pesquisas, formulários e relatórios para outra base de dados. Desta forma basta fazer uma cópia de segurança do front-end quando este é alterado e ir fazendo cópias pontuais dos dados.
O desenvolvimento de aplicações em Access
O desenvolvimento de aplicações em Access à medida do utilizador apresenta vantagens a nível de custo e rapidez inicial para o desenvolvimento de aplicações.
Da minha experiência acima de 50 tabelas é uma base de dados muito complexa. Nestes casos é especialmente importante manter uma nomenclatura uniforme dos nomes dos campos e das várias entidades sobre pena de se demorar muito mais tempo a fazer a manutenção das bases de dados ou de repetir trabalho já feito.
Uma indicação no nome dos queries sobre se são queries auxiliares e do seu tipo facilita o uso da base de dados. Existem metodologias próprias para a atribuição de nomes a variáveis e objectos e o seu uso será tão mais importante quanto mais complexo for o programa.
A criação de módulos com rotinas para serem chamadas de vários formulários ou relatórios facilite a manutenção do código.
Por fim, em termos de desenvolvimento direi que para a criação de uma solução em Access deverá contabilizar cerca de 3 horas de trabalho por cada form ou relatório que seja feito. Este tempo têm em consideração o tempo de análise, desenvolvimento, testes e alguma documentação básica.
A implementação de algoritmos elaborados implica regra geral um alargamento deste tempos. Algoritmo elaborados são aqueles que não permitem ser resolvidos com 2 queries consecutivos ou que obrigam a programação.
Segundo o livro Access 97 – Expert Solutions a percentagem de tempo que demoram as diversas fases da criação de uma base de dados à medida em Access para sistemas que levam entre 100 e 400 horas são as seguintes:
Fase do projecto |
Percentagem |
Desenho, especificação e gestão |
28 |
Código de interface |
9 |
Estrutura base de dados |
3 |
Desenvolvimento de forms |
21 |
Desenvolvimento de relatórios |
9 |
Processamento de código |
12 |
Testes, instalação e formação |
18 |
Quando alguém lhe desenha em Access um esboço aproximado de como vão ficar os formulários da base de dados isso pode significar que ainda só cerca de 10% do trabalho está feito.
De notar que o envolvimento de quem pede o trabalho é essencial para que a base de dados corresponda às suas expectativas.
Segundo uma estimativa do mesmo livro a fim de se dimensionar correctamente o tempo necessário para o desenvolvimento de um projecto deverá considerar-se:
Tipo de Objecto |
Horas em média |
Uma tabela |
0.2 |
Um form com botões |
3.0 |
Um form com uma lista de fichas |
3.5 |
Um form de edição de uma ficha |
4.5 |
Um relatório |
1.5 |
É evidente que se pode criar um forrmulário ou um relatório em menos de meia hora mas para considerar todo o tempo necessário ao desenvolvimento da aplicação e para adaptar os formulários e relatórios as especificações pretendidas esse tempo andará próximo dos tempos apontados na tabela acima.
De notar que no caso das especificações não serem bem definidas antes do arranque do projecto poderá haver aumentos de 50 ou 100% no tempo necessário para o desenvolvimento. O conhecimento do cliente sobre as potencialidades das bases de dados condiciona fortemente aquilo que ele é capaz de especificar numa fase inicial. Tente ver qual a experiência em projectos anteriores do cliente antes de se comprometer com o tempo e com o orçamento.
Confronte igualmente quem lhe pede o desenvolvimento da necessidade de investir também tempo para explicar com pormenor o que pretende e para explicitar regras difusas ou recolher valores que serão necessários para a utilização do programa.
Considere também a quantidade de deslocações que terá que efectuar. O esforço em conseguir que actualizações e pequenas correções possam ser efectuadas sem perturbar o trabalho dos utilizadores e por vezes pelo próprio utilizador compensam largamente o esforço investido.
Evite criar cartas tipo, preenchimento de formulários ou impressos específicos sem capacidade de o utilizador os alterar. Senão cada vez que for mudada a impressora arrisca-se a ser contactado.
À medida que os projectos forem evoluindo notará que o intercâmbio com outras pessoas ou com o apoio técnico se tornará importante para uma maior eficácia na utilização das bases de dados criadas em Access. O Access está orientado para criar bases de dados para serem usadas por grupos de até cerca de 50 utilizadores. Acima disto deverá considerar outras ferramentas.
Para bases de dados grandes criadas em Access é possível fazer uma migração de dados para SQL server. O nível acima é o do Oracle e Informix.
Acerca do autore bases de dados
Comecei a trabalhar com computadores em 1986. De 1993 a 1995 estive como formador de micro-informática em diversos locais. Em 1993 dei um curso de DBase III e em 1994 um curso sobre Access 2.0 e escrevi um manual.
Desde 1995 tenho usado os meus conhecimentos de bases de dados e de Access, em particular, nas várias empresas onde tenho trabalhado bem como em trabalhos extra que tenho feito.
Esta última actualização do manual deve-se a estar de momento a leccionar a cadeira de Sistemas de Informação de Gestão no ISEG.
Para ver mais informação veja a página bases de dados e programas elaborados.
Se estiver interessado em ser contactado ou conheça quem esteja envie-me um e-mail para pjssms@gmx.net.
Bibliografiausada
Teaching Microsoft Access. – PC Magazine
Introduction to Microsoft Access. – Microsoft
Manuais do programa. – Microsoft
Ajuda do programa. – Microsoft
Data Analysis : The key to Database Design – Richard Perkinson – QED Information Sciences – 1984
O S.G.B.D.R. ACCESS – Fundetec
Access 97 – Expert Solutions – Que
Modern Database Management – Fred McFadden, Jeffrey Hoffer – Addison Wesley – 1994