MS Access – Lançando eventos customizados a partir de um sub-formulário

O código VB / VBA, se não tomarmos bastante cuidado, acaba se tornando … “macarrônico“….  Entenda-se “macarrônico” por aquele código bagunçado e cheio de objetivos misturados (código de baixa coesão), como por exemplo, uma função ou procedimento que além de realizar um calculo qualquer ainda altera a formatação de objetos de interface como Text Box, Labels, Command Buttons … etc.

Um dos recursos, ou técnicas, que utilizo para tornar o código menos “macarrônico(mais coeso) e mais fácil de entender em um momento futuro é declarar e lançar eventos customizados de dentro de meu sub-formulário.

Para ilustra isso, elaborei um exemplo que vou explicar passo a passo abaixo e vou deixar o código *.mdb disponível para download também:

1) Instanciamos o sub-formulário dentro do formulário (apenas criamos o sub-form dentro do form principal):

Imagem

2) Declaramos um evento  (Public Event) no código do sub-formulário de modo que se possa lançá-lo para o formulário que o estará recebendo este evento “escutando-o” (veja a instrução RaiseEvent). No caso, o nosso evento se chama AoClicarNoComando:

Imagem

3) Declaramos uma variável do tipo “SubForm”  no código no formulário principal de forma que ele possa “escutar” esses evento lançado pelo sub-formulário. Para tanto foi usada ao declarar a variável a instrução WithEvents do VBA que representa o sub-form em questão.

Para se atribuir a referência para a variável declarada em relação ao sub-form colocado na tela do formulário principal, em seu evento Load(),  passamos a referência do sub-form para a variável através da instrução (set sf = Me.SubForm.Form).

Imagem

4) E assim, temos o resultado ao clicar no botão que se encontra dentro do sub-formulário. Repare (na imagem acima) que a definição da MsgBox é feita no formulário Main ao receber o evento disparado por seu sub-formulário:

Imagem

Gostou ???  Quer fazer o download deste arquivo *.MDB ?  Então clique aqui ….

Quer saber outro exemplo onde esta técnica pode se aplicar muito bem? No caso de se fazer um sub-formulário para autenticação (login e senha) e quando o login está correto ou incorreto ele notifica o formulário principal (formulário container dele)  sobre o o que ocorreu. Desta forma, as funcionalidades ficam bem desacopladas, ou seja, o sub-formulário tratará da lógica de autenticação independente de qual formulário principal o mesmo esteja alocado. Já o formulário master (aquele que o sub-form está alocado)  tratará, por exemplo, de travar ou destravar controles, deixar controles visíveis ou não …. tudo isso dependendo da autenticação correta ou incorreta de acordo com o evento que recebeu do sub-formulário.

Outros posts de VBA e VB6

Outros posts de MS Access

Anúncios
Esta entrada foi publicada em MS Access com as etiquetas , , . ligação permanente.

2 respostas a MS Access – Lançando eventos customizados a partir de um sub-formulário

  1. Pedro, muito boa esta sua ideia, porém eu fiz o teste e não funcionou, teste também seu exemplo, que também não funcionou, tu tens alguma ideia do porque não funcionou. grato pela atenção.

    Gostar

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s