Question

Est-il possible de contourner l'événement BeforeUpdate?J'ai un peu de code dans mon événement BeforeUpdate qui s'exécute lors d'une tentative de sauvegarder l'enregistrement est fait, cependant sur le même formulaire, j'ai un sous-formulaire qui demande à l'utilisateur de sélectionner un enregistrement dans ce sous-formulaire.Que cela change le focus de l'enregistrement en cours, il déclenche mon BeforeUpdate de code, je ne veux pas que ça à faire.

Est-il un moyen de passer à côté de la forme de l'événement BeforeUpdate lorsque l'utilisateur clique sur un enregistrement dans un formulaire du sous-formulaire?

Était-ce utile?

La solution

"Est-il un moyen de passer à côté de la forme de l'événement BeforeUpdate lorsque l'utilisateur clique sur un enregistrement dans un formulaire du sous-formulaire?"

Lorsque vous mettez l'accent sur un sous-formulaire avec un non enregistrées enregistrement dans le formulaire principal, l'Accès sera automatiquement tenter de sauver le "sale" enregistrement du formulaire principal.

Ce comportement est intégré dans l'Accès et vous ne pouvez pas l'empêcher.

Je pense que vous devriez utiliser une approche différente.Actuellement (sur la base des commentaires de discussion), vous disposez d'un bouton de commande pour sauvegarder l'enregistrement du formulaire principal.Toutefois, si certains contrôles contiennent des valeurs Null, vous annuler la sauvegarde à partir de la forme de l' BeforeUpdate de l'événement.

De mon point de vue, l'utilisateur ne devrait même pas être en mesure de cliquer sur le bouton de commande lorsque l'un quelconque de ces contrôles contiennent la valeur Null.(Pourquoi les laisser sur un bouton, puis de les informer de l'action n'est pas valide?) Donc, je vous suggère d'activer uniquement le bouton de commande lorsque tous ces contrôles contiennent des valeurs non Nulles.

Envisager un bouton de commande nommé cmdSave et 3 zones de texte: txtOne, txtTwo, et txtThree.Créer une procédure, SetButtonAvailability, et appeler cette procédure dans le AfterUpdate les événements de tous les 3 zones de texte.

Private Sub SetButtonAvailability
    If IsNull(Me.txtOne) Or IsNull(Me.txtTwo) Or IsNull(Me.txtThree) Then
        Me.cmdSave.Enabled = False
    Else
        Me.cmdSave.Enabled = True
    End If
End Sub

Aussi dans la forme du Suractivation (OnCurrent) cas, vous ne Me.cmdSave.Enabled = False parce qu'il y a encore pas de changements pour l'enregistrement en cours pour enregistrer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top