Partilhar via


Evento ComboBox.BeforeUpdate (Access)

O evento BeforeUpdate ocorre antes de os dados alterados em um controle ou registro serem atualizados.

Sintaxe

expressão. BeforeUpdate (Cancelar)

expressão Uma variável que representa um objeto ComboBox .

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
Cancel Obrigatório Integer A configuração determina se o evento BeforeUpdate ocorre. Definir o argumento Cancelar como Verdadeiro (1) cancela o evento BeforeUpdate .

Comentários

Alterar dados em um controle usando o Visual Basic ou uma macro que contém a ação DefinirValor não dispara esses eventos para o controle. No entanto, se você move para outro registro ou salva o registro, o evento BeforeUpdate do formulário ocorrer.

Para executar um procedimento de macro ou evento quando este evento ocorre, defina a propriedade BeforeUpdate para o nome da macro ou para [Procedimento de Evento].

Esse evento não se aplica a botões de opção, caixas de seleção ou botões de alternância em um grupo de opções. Ele se aplica somente ao grupo de opções propriamente dito.

O evento BeforeUpdate é acionado quando um controle ou registro é atualizado. Num registo, os dados alterados em cada controlo são atualizados quando o controlo perde o foco ou quando o utilizador prime Enter ou Tab. Quando o foco sai do registo ou se o utilizador clicar em Guardar Registo no menu Registos , todo o registo é atualizado e os dados são guardados na base de dados.

Quando introduz dados novos ou alterados num controlo num formulário e, em seguida, se move para outro registo ou guarda o registo ao clicar em Guardar Registo no menu Registos , o evento AfterUpdate do formulário ocorre imediatamente após o evento AfterUpdate do controlo.

Quando muda para um registo diferente, ocorrem os eventos Exit e LostFocus do controlo, seguidos do evento Atual do registo para o qual se moveu e dos eventos Enter e GotFocus para o primeiro controlo neste registo. Para executar a macro ApósAtualizar ou procedimento de evento sem executar as macros Exit e LostFocus ou procedimentos de evento, salve o registro usando o comando Salvar registro no menu registros.

BeforeUpdate macros e procedimentos de evento executar somente se você alterar os dados em um controle. Esse evento não ocorre quando um valor é alterado em um controle calculado. BeforeUpdate macros e procedimentos de evento para um formulário executar somente se você alterar os dados em um ou mais controles no registro.

Para formulários, você pode usar o evento BeforeUpdate para cancelar a atualização de um registro antes de mover para outro registro.

Se o usuário insere um novo valor no controle, a configuração da propriedade OldValue não será alterada até que os dados são salvos (o registro é atualizado). Se você cancelar uma atualização, o valor da propriedade OldValue substituirá o valor existente no controle.

Geralmente você utilizar o evento BeforeUpdate para validar dados, especialmente quando são efetuadas validações complexas, como as que:

  • Envolvem condições para mais de um valor em um formulário.
  • Exibem mensagens de erro distintas à medida que dados diferentes são inseridos.
  • Podem ser substituídas pelo usuário.
  • Contêm referências a controles de outros formulários ou contêm funções definidas pelo usuário.

Observação

[!OBSERVAçãO] Para executar validações simples ou validações mais complexas, como solicitar um valor em um campo ou validar mais de um controle em um formulário, você pode usar a propriedade ValidationRule para controles e as propriedades ValidationRule e necessárias para campos e registros em tabelas.

Ocorre um erro de tempo de execução se tentar modificar os dados contidos no controlo que acionou o evento BeforeUpdate no procedimento do evento.

Exemplo

O exemplo a seguir mostra como você pode usar um procedimento de evento BeforeUpdate para verificar se um nome de produto já foi inserido no banco de dados. Depois que o usuário digitar um nome de produto na caixa ProductName, o valor será comparado ao campo ProductName na tabela Products. Se houver um valor correspondente na tabela Products, uma mensagem será exibida para informar ao usuário que o produto já foi inserido.

Para testar o exemplo, adicione o seguinte procedimento de evento a um formulário denominado Products que contém uma caixa de texto denominada ProductName.

Private Sub ProductName_BeforeUpdate(Cancel As Integer) 
    If(Not IsNull(DLookup("[ProductName]", _ 
        "Products", "[ProductName] ='" _ 
        & Me!ProductName & "'"))) Then 
        MsgBox "Product has already been entered in the database." 
        Cancel = True 
        Me!ProductName.Undo 
    End If 
End Sub

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.