Ordem dos eventos para objetos de base de dados

Uma única ação, como mover um controlo num objeto para outro controlo pode desencadear vários eventos que ocorrem numa sequência específica. Saber quando os eventos ocorrem e por que ordem é importante, porque pode afetar como e quando as suas macros ou procedimentos de eventos são executados. Por exemplo, se existirem dois procedimentos de eventos que tenham de ser executados numa determinada ordem, deverá certificar-se de que os eventos a que estão associados ocorrem pela mesma ordem.

Neste artigo

Ordem de eventos para controlo em formulários

Os eventos dos controlos em formulários ocorrem quando move o foco para um controlo e quando altera e atualiza os dados num controlo.

Nota: O Microsoft Office Access apresenta os nomes de eventos de forma ligeiramente diferente no Visual Basic Editor do que na folha de propriedades e no Construtor de Macros. Por exemplo, o evento designado Ao Receber Foco na folha de propriedades do formulário e no Construtor de Macros designa-se GotFocus no Visual Basic Editor. Os exemplos neste artigo utilizam o formato de nomes de eventos do Visual Basic for Applications (VBA).

Mover o foco para um controlo

Quando move o foco para um controlo num formulário (por exemplo, ao abrir um formulário que contém um ou mais controlos ativos ou ao mover o foco para outro controlo no mesmo formulário), os eventos Enter e GotFocus ocorrem pela seguinte ordem:

Insira seta GotFocus

Quando abre um formulário, os eventos Enter e GotFocus ocorrem após os eventos associados à abertura do formulário (como Open, Activate e Current), da seguinte forma:

Aberto (formulário) seta Ativar (formulário) seta Corrente (formulário) seta Enter (controlo) seta GotFocus (controlo)

Quando o foco deixa um controlo num formulário (por exemplo, quando fecha um formulário que contém um ou mais controlos ativos ou quando se desloca para outro controlo no mesmo formulário), os eventos Exit e LostFocus ocorrem pela seguinte ordem:

Saída seta LostFocus

Quando fecha um formulário, os eventos Exit e LostFocus ocorrem antes dos eventos associados ao fecho do formulário (como Unload, Deactivate e Close), pela seguinte ordem:

Saída (controlo) seta LostFocus (controlo) seta Descarregar (formulário) seta Desativar (formulário) seta Fechar (formulário)

Alterar e atualizar dados num controlo

Quando introduz ou altera dados existentes num controlo num formulário e, em seguida, muda o foco para outro controlo, ocorrem os eventos BeforeUpdate e AfterUpdate:

Antes de atualizar seta AfterUpdate

Os eventos Exit e LostFocus de um controlo cujo valor é alterado ocorrem após os eventos BeforeUpdate e AfterUpdate:

Antes de atualizar seta afterUpdate seta Exit seta LostFocus

Quando altera o texto numa caixa de texto ou na secção de caixa de texto de uma caixa de combinação, ocorre o evento Change. Este evento ocorre sempre que os conteúdos do controlo são alterados, mas antes de mover o foco para um controlo ou registo diferente (e, por isso, antes de os eventos BeforeUpdate e AfterUpdate ocorrerem). A seguinte sequência de eventos ocorre para cada tecla que prime na caixa de texto ou na secção de caixa de texto numa caixa de combinação:

KeyDown seta KeyPress seta Dirty seta Change seta KeyUp

O evento NotInList ocorre após introduzir um valor numa caixa de combinação que não se encontra na lista da caixa de combinação e, em seguida, tenta mover o foco para outro controlo ou registo. O evento NotInList ocorre após os eventos do teclado e os eventos Change da caixa de combinação, mas ocorre antes dos eventos de qualquer outro controlo ou do formulário. Se a propriedade LimitToList da caixa de combinação estiver definida para Sim, o evento Error do formulário ocorre imediatamente após o evento NotInList:

KeyDown seta KeyPress seta Dirty seta Change seta KeyUp seta Erro de0 notinlist

Início da Página

Ordem de eventos para registos em formulários

Os eventos de registos em formulários ocorrem quando muda o foco para um registo diferente, quando atualiza os dados num registo, quando elimina um ou mais registos existentes ou quando cria um novo registo.

Mover o foco para registos e atualizar dados em registos

Quando move o foco para um registo existente num formulário, introduz ou altera os dados no registo e, em seguida, move o foco para outro registo, ocorre a sequência de eventos seguinte no formulário:

Atual (formulário) seta Antes de Atualizar (formulário) seta AfterUpdate (formulário) seta Current (formulário)

Quando sai de um registo cujos dados foram alterados, mas ainda antes de entrar no registo seguinte, ocorrem os seguintes eventos no controlo que tem o foco: Exit e LostFocus. Estes eventos ocorrem após os eventos BeforeUpdate e AfterUpdate no formulário, da seguinte forma:

Antes de atualizar (formulário) seta AfterUpdate (formulário) seta Exit (controlo) seta LostFocus (controlo) seta Current (formulário)

À medida que move o foco entre controlos num formulário, ocorrem eventos para cada controlo. Por exemplo, as seguintes sequências de eventos ocorrem quando faz o seguinte:

  • Abre um formulário e altera dados num controlo:

    Atual (formulário) seta Enter (controlo) seta GotFocus (controlo) seta Antes de Atualizar (controlo) seta AfterUpdate (controlo)

  • Move o foco para outro controlo:

    Saída (control1) seta LostFocus (control1) seta Enter (control2) seta GotFocus (control2)

  • Move o foco para outro registo:

    Antes de Atualizar (formulário) seta AfterUpdate (formulário) seta Exit (control2) seta LostFocus (control2) seta Current (formulário)

Eliminar registos

Quando elimina um registo, ocorrem os seguintes eventos no formulário e o Microsoft Office Access apresenta uma caixa de diálogo a pedir-lhe para confirmar a eliminação:

Eliminar seta BeforeDelConfirm seta AfterDelConfirm

Se cancelar o evento Delete, os eventos BeforeDelConfirm e AfterDelConfirm não ocorrem e a caixa de diálogo não é apresentada.

Criar um novo registo

Quando move o foco para um novo registo (em branco) num formulário e, em seguida, cria um novo registo ao introduzir dados num controlo, ocorre a seguinte sequência de eventos:

Corrente (formulário) seta Enter (controlo) seta GotFocus (controlo) seta Antes de Inserir (formulário) seta AfterInsert (formulário)

O evento Antes Inserir (formulário) dispara assim que começar a escrever no comando. O evento AfterInsert (formulário) dispara depois de deixar o disco.

Os eventos BeforeUpdate e AfterUpdate dos controlos no formulário e do novo registo ocorrem após o evento BeforeInsert e antes do evento AfterInsert.

Início da Página

Ordem de eventos para formulário e subformulários

Os eventos de formulários ocorrem quando abre ou fecha um formulário, quando se desloca entre formulários ou quando trabalha com dados num formulário ou subformulário

Abrir e fechar um formulário

Quando abre um formulário, ocorre a seguinte sequência de eventos para o formulário:

Open seta load seta Redimensionar seta ativar seta corrente

Se não existirem controlos ativos no formulário, o evento GotFocus ocorre no formulário após o evento Activate, mas antes do evento Current.

Quando fecha um formulário, ocorre a seguinte sequência de eventos para o formulário:

Descarregar seta desativar seta Fechar

Se não existirem controlos ativos no formulário, o evento LostFocus ocorre no formulário após o evento Unload mas antes do evento Deactivate.

Deslocar-se entre formulários

Quando alterna entre dois formulários abertos, o evento Deactivate ocorre no primeiro formulário e o evento Activate ocorre no segundo formulário:

Desativar (formulário1) seta Ativar (formulário2)

O evento Deactivate de um formulário também ocorre quando muda do formulário para outro separador de objeto no Access. No entanto, o evento Deactivate não ocorre quando muda para uma caixa de diálogo, para um formulário cuja propriedade PopUp esteja definida para Sim ou para uma janela noutro programa.

Nota:  O evento Open não ocorre se mudar o foco para um formulário que já se encontre aberto, mesmo que tenha movido o foco para esse formulário ao executar a ação AbrirFormulário.

Trabalhar com dados num formulário

Os eventos de formulário e de controlo ocorrem à medida que se desloca entre os registos do formulário e altera os dados. Por exemplo, quando abre um formulário pela primeira vez, ocorre a seguinte sequência de eventos:

Aberto (formulário) seta Load (formulário) seta Redimension (formulário) seta Ativar (formulário) seta Corrente (formulário) seta Enter (controlo)0 GotFocus (controlo)

De forma semelhante, quando fecha um formulário, ocorre a seguinte sequência de eventos:

Saída (controlo) seta LostFocus (controlo) seta Descarregar (formulário) seta Desativar (formulário) seta Fechar (formulário)

Se tiver alterado dados num controlo, os eventos BeforeUpdate e AfterUpdate para o controlo e para o formulário ocorrem antes do evento Exit do controlo.

Trabalhar com subformulários

Quando abre um formulário que contém um subformulário, o subformulário e os respetivos registos são carregados antes do formulário principal. Por essa razão, os eventos do subformulário e respetivos controlos (como Open, Current, Enter e GotFocus) ocorrem antes dos eventos do formulário. No entanto, o evento Activate não ocorre em subformulários. Por essa razão, quando abre um formulário principal, o evento Activate é ativado apenas para o formulário principal.

Da mesma forma, quando fecha um formulário que contém um subformulário, o subformulário e os respetivos registos são descarregados após o formulário. O evento Deactivate não ocorre para subformulários. Por essa razão, fechar um formulário principal ativa o evento Deactivate apenas para o formulário principal. Os eventos de controlo, formulário e subformulário ocorrem pela seguinte ordem:

  1. Eventos para os controlos do subformulário (comoExit e LostFocus)

  2. Eventos para os controlos do formulário (incluindo o controlo do subformulário)

  3. Eventos para o formulário (como Deactivate e Close)

  4. Eventos para o subformulário

Nota: Uma vez que os eventos de um subformulário ocorrem após o formulário principal ser fechado, alguns eventos, como cancelar o fecho do formulário principal de um evento no subformulário, não irão ocorrer. Poderá ter de mover estes tipos de testes de validação para um evento no formulário principal.

Início da Página

Ordem de eventos para batimentos de teclas e cliques do rato

Os eventos de teclado ocorrem em formulários e controlos quando prime as teclas ou envia batimentos de teclas enquanto o formulário ou controlo tem o foco. Os eventos de rato ocorrem em formulários, secções de formulários e controlos em formulários quando clica nos botões do rato enquanto o ponteiro do rato se encontra num formulário, secção ou controlo. Os eventos de rato também ocorrem quando move o ponteiro do rato sobre um formulário, uma secção ou um controlo.

Eventos de teclado

Quando prime e solta uma tecla enquanto o foco se encontra num controlo num formulário (ou utiliza a ação SendKeys ou declaração para enviar um batimento de teclas), ocorre a seguinte sequência de eventos:

KeyDown seta KeyPress seta KeyUp

Quando prime e solta uma tecla ou envia um batimento de teclas no conjunto de carateres ANSI, ocorrem os eventos KeyDown, KeyPress e KeyUp. Se premir uma tecla ANSI sem a soltar, os eventos KeyDown e KeyPress alternam-se repetidamente (KeyDown, KeyPress, KeyDown, KeyPress e assim por diante) até que solte a tecla; em seguida, ocorre o evento KeyUp.

Se premir e soltar uma tecla não-ANSI, ocorrem os eventos KeyDown e KeyUp. Se premir uma tecla não-ANSI sem a soltar, o evento KeyDown ocorre repetidamente até que liberte a tecla, após o que ocorre o evento KeyUp.

Se premir uma tecla acionar outro evento de um controlo, esse evento ocorre após o evento KeyPress mas antes do evento KeyUp. Por exemplo, se um batimento de teclas alterar o texto numa caixa de texto, que aciona um evento Change, ocorre a seguinte sequência de eventos:

KeyDown seta KeyPress seta Alterar seta KeyUp

Se um batimento de tecla fizer com que o foco mude de um controlo para outro, ocorre o evento KeyDown no primeiro controlo, enquanto os eventos KeyPress e KeyUp ocorrem no segundo controlo. Por exemplo, se alterar os dados num controlo e, em seguida, premir a Tecla de Tabulação para se deslocar para o controlo seguinte, ocorrem as seguintes sequências de eventos:

  • Primeiro controlo:

    KeyDown seta Antes de atualizar seta afterUpdate seta Exit seta LostFocus

  • Segundo controlo:

    Introduza seta GotFocus seta KeyPress seta KeyUp

Eventos de rato

Quando clica e solta um botão do rato enquanto o ponteiro do rato se encontra num controlo num formulário, ocorre a seguinte sequência de eventos no controlo:

MouseDown seta MouseUp seta clique

Se um controlo tiver o foco e clicar noutro controlo para mover o foco para o segundo controlo, ocorrem as seguintes sequências de eventos:

  • Primeiro controlo:

    Saída seta LostFocus

  • Segundo controlo:

    Introduza seta GotFocus seta MouseDown seta MouseUp seta Click

Se mover para outro registo e em seguida clicar num controlo, o evento Current do formulário também ocorre antes do evento Enter do controlo.

Fazer duplo clique num controlo faz com que ambos os eventos Click e DblClick ocorram. Por exemplo, quando faz duplo clique num controlo que não seja um botão de comando, ocorre a seguinte sequência de eventos no controlo:

MouseD própria seta MouseUp seta clique seta dblClick seta mouseUp

Quando faz duplo clique no botão de comando, ocorre a sequência de eventos precedente, seguida de um segundo evento Click.

O evento MouseMove de um formulário, secção ou controlo ocorre quando move o ponteiro do rato sobre o formulário, secção ou controlo. Este evento é independente dos outros eventos de rato.

Início da Página

Ordem de eventos para relatórios e secções de relatórios

Os eventos de relatórios e secções de relatórios ocorrem quando abre um relatório para o imprimir ou pré-visualizar ou quando fecha um relatório.

Eventos de relatórios

Quando abre um relatório para o imprimir ou pré-visualizar e depois fecha o relatório ou muda para outro separador de objeto no Access, ocorre a seguinte sequência de eventos no relatório:

seta aberto Ativar seta fechar seta desativar

Quando alterna entre dois relatórios abertos, o evento Deactivate ocorre no primeiro relatório e o evento Activate ocorre no segundo relatório:

Desativar (relatório1) seta Ativar (relatório2)

O evento Deactivate de um relatório também ocorre quando muda do relatório para outro separador de objeto no Access. No entanto, o evento Deactivate não ocorre quando muda para uma caixa de diálogo, para um formulário cuja propriedade PopUp esteja definida para Sim ou para uma janela noutro programa.

Quando abre um relatório baseado numa consulta, o Access ativa o evento Open do relatório antes de executar a consulta subjacente. Como resultado, pode definir os critérios do relatório através de uma macro ou um procedimento de evento que responda ao evento Open. Por exemplo, a macro ou o procedimento de evento podem abrir uma caixa de diálogo personalizada na qual pode introduzir critérios do relatório.

Eventos para secções de relatórios

Quando imprime ou pré-visualiza um relatório, os eventos Format e Print ocorrem nas secções do relatório após os eventos Open e Activate do relatório e antes dos eventos Close ou Deactivate do relatório:

Aberto (relatório) seta Ativar (relatório) seta Formato (secção de relatório) seta Imprimir (secção de relatório) seta Fechar (relatório) seta Desativar (relatório)

Segurança    Pode utilizar o Ponto de Informação para permitir a filtragem dos relatórios por parte do utilizador. Mas, ao contrário da Pré-visualização de impressão, os eventos de formato e impressão em qualquer secção não ocorrem na Visualização de Relatórios. Isto aplica-se igualmente aos resultados da função VBA e aos procedimentos definidos pelo utilizador que exibem nos controlos (tais como legendas de etiquetas, estado de exibição, formatação condicional, redimensionamento de controlos e assim por diante) dentro desses eventos. Por isso, não utilize código neste caso para formatar, ocultar ou imprimir dados confidenciais, que possam ficar expostos. Recomendamos pré-filtrar os dados ou desativar a pré-visualização do relatório, definindo a propriedade AllowReportView para Nº.

Para além disso, os seguintes eventos podem ocorrer durante ou após a formatação, mas antes do evento Print:

  • O evento Retreat ocorre quando o Access regressa a uma secção anterior durante a formatação do relatório.

  • O evento NoData ocorre se não existirem registos apresentados pelo relatório.

  • O evento Page ocorre após a formatação, mas antes da impressão. Pode utilizar este evento para personalizar o aspeto do relatório impresso.

Início da Página

Nota:  Esta página foi traduzida automaticamente e pode conter erros gramaticais ou imprecisões. O nosso objetivo é que estes conteúdos lhe sejam úteis. Pode indicar-nos se estas informações foram úteis? Eis o artigo em inglês para sua referência.​

Precisa de mais ajuda?

Aumente os seus conhecimentos do Office
Explore as formações
Seja o primeiro a obter novas funcionalidades
Adira ao Office Insider

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×