FAQ MS-Access
FAQ MS-AccessConsultez toutes les FAQ
Nombre d'auteurs : 140, nombre de questions : 926, dernière mise à jour : 15 juin 2021
- Comment fermer un formulaire sans sauvegarder l'enregistrement en cours ?
- Comment afficher le nombre d'enregistrements du sous-formulaire dans le formulaire principal ?
- Pourquoi une erreur 3021 - Aucun enregistrement en cours ?
- 7.2.1. Position dans le formulaire (10)
- 7.2.2. Modification et ajout de données (8)
- 7.2.3. Source de données (5)
Pour annuler la saisie d'un enregistrement dans un formulaire,
il faut utiliser la méthode Undo de ce dernier.
Lorsque l'utilisateur ferme un formulaire, son événement Avant MAJ (BeforeUpdate) est exécuté pour enregistrer les données.
Pour quitter le formulaire sans enregistrer, il faut donc placer l'appel de Me.Undo sur l'événement BeforeUpdate du formulaire.
Exemple :
Private
Sub
Form_BeforeUpdate
(
Cancel As
Integer
)
If
MsgBox
(
"Voulez-vous enregistrer les modifications ?"
, vbYesNo
, "Confirmation"
) =
VbNo
Then
Me.Undo
End
If
End
Sub
Soit un sous-formulaire nommé SF_CONTACT possédant un champ id_contact.
Dans le pied de formulaire du sous-formulaire, ajouter une zone de texte (Nbcontact pour l'exemple) avec comme source
=
compte
(
[id_contact])
Et fixer la propriété Visible du pied de formulaire à Non.
Sur le formulaire principal, ajouter une zone de texte "Compteur" avec comme source :
=
[SF_contact].
[Formulaire]![Nbcontact]
Une des raisons possibles est l'utilisation de ces deux lignes qu'il faut éviter :
DoCmd.DoMenuItem
acFormBar, acEditMenu, 8
, , acMenuVer70
DoCmd.DoMenuItem
acFormBar, acEditMenu, 6
, , acMenuVer70
En effet, ce code n'est pas du tout portable.
Privilégiez donc une suppression via requête ou sur le Recordset du formulaire.
Lien : Définition et manipulation de données avec DAO
Lien : Comment exécuter une requête action (ajout, suppression ou mise à jour) ?