Access vider champs formulaire avant fermetur

Fermé
Maxx - 25 avril 2012 à 12:14
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 - 30 avril 2012 à 09:45
Bonjour,

Voici la situation: j'ai un formulaire d'ajout comprenant +- 80 champs de tous types (txt, combobox, listbox). Les champs font références à plusieurs tables. Certains champs (de ts types) ne peuvent pas être nuls. Je veux que l'utilisateur ai un bouton "fermer formulaire" sans que l'enregistrement soit sauvegardé. Le problème survient lorsque certains champs où le nul est interdit ne sont pas remplis! A chaque fois j'ai le même message « vous ne pouvez pas ajouter ou modifier un enregistrement car l'enregistrement associé est requis dans la table "MaTable"».
J'ai essayé plusieurs méthodes: effacer enregistrement puis fermer formulaire, vider les champs en faisant une boucle sur la collection de controles en donnant la valeur nulle ou "" ou false en fonction du type de controle. En fait access attribue la valeur "0" à tous les champs, et ce n'est évidemment pas compatible avec certains champs.
Bref je n'ai tjs pas reussi à vraiment "vider" les champs.
Je sais pas si j'ai été totalement clair, si vous avez des questions n'hésitez pas.
Savez-vous m'aider?
Merci d'avance

1 réponse

OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
26 avril 2012 à 00:05
Bonjour,
je pourrais surement vous aider mais je vous avoue que je ne comprends pas bien votre problème !
Ce genre de situation ne se présente que si on essaye de sauver un enregistrement et que dans celui-ci, une valeur est définit comme obligatoire. Le cas d'une clé étrangère en est un parfait exemple.
Donc pourquoi voulez-vous vider vos champs ?
Si vous ne voulez pas sauvegarder votre enregistrement, vous appuyez sur Cancel et Access annule les modifications apportées et vous pouvez fermer votre formulaire sans problème ...

Bàv,

0
Excusez moi pour le retard, j'étais en déplacement.
Donc comme vous comprenez bien, je veux que access ne sauvegarde pas ce que l'utilisateur a entré. Quelle est le controle "Cancel" dont vous me parlez? En fait j'ai un bouton "retour a la page précendente" sur lequel l'utilisateur clique et le formulaire se ferme. Actuellement la sauvegarde se fait automatiquement par defaut, ce que je ne veux pas. J'imagine qu'il y a une macro incoporée a affecter au bouton qui empêche cette sauvegarde automatique. j'ai essayé "FermerFenêtre" avec la propriété "Enregistrer" définie sur Non => Access sauvegarde toujours! j'ai essayé "AnnulerEnregistrement", ça ne marche pas non plus.
Savez-vous m'aider?
Merci d'avance
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
27 avril 2012 à 20:26
ce n'est pas le "bouton" Cancel auquel je fais référence mais bien la touche de votre clavier où il est indiqué ESCAPE ou ESC, en général en haut et à gauche du clavier.
Empêcher un utilisateur, complètement, de sauver des données n'est peut-être pas une bonne idée ...
Ceci étant dit, pour se faire, vous pouvez utiliser l'évènement "Avant MAJ" ou "Before Update" :

Private Sub Form_BeforeUpdate(Cancel As Integer)
    
    MsgBox "vous ne pouvez pas modifier les données !" & vbCrLf & _
    "Appuyez sur la touche [ESCcape] de votre clavier pour annuler vos modifications", vbExclamation

    Cancel = True
  
End Sub
0
En appuyant sur la touche ESCAPE, seul le champ sélectionné se vide, et d'ailleurs ça ne marche pas avec les listes déroulantes.
"Empêcher un utilisateur, complètement, de sauver des données n'est peut-être pas une bonne idée ..."
L'utilisateur peut sauvegarder les données en cliquant sur un bouton "enregistrer". Je veux que ce soit la seule manière que la sauvegarde se fasse.
J'apprécie vraiment votre aide mais j'ai l'impression que vous ne comprenez pas mon problème.. Je veux simplement qu'à la fermeture du formulaire, la sauvegarde ne se fasse pas.
Bav
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
30 avril 2012 à 09:45
N'oubliez pas que les personnes qui vous répondent n'ont pas votre base de données devant les yeux ! Et donc je ne peux savoir dans quel "état" se trouve votre formulaire et surtout comment vous l'utilisez ... Car, si je reviens à votre énonçé de départ, si vous désirez que l'utilisateur ne modifie pas vos données, il suffit de modifier les propriétés du formulaire pour que l'utilisateur ne puisse pas le faire (Onglet Data) , c'est une propriété à changer. Mais j'imagine, sinon j'avoue ne pas comprendre l'utilité, que certains peuvent modifier les données et pas d'autres.
Si vous désirez obliger un utilisateur à passer par ce bouton "Sauvegarder" c'est possible mais vous devrez programmer ce que Access est pré-programmé à faire :
1) Il faut enlever l'indicateur de l'enregistrement courant
2) Il faut enlever les boutons de navigation d'Access ! Car eux aussi permettent de sauver automatiquement un enregistrement
3) Il faul enlever le bouton "Enregistrer" du menu d'Access
Pour les points 1 et 2, vous trouverez cela dans les propriétés de votre formulaire. Pour le point 3, vous serez obliger de le coder en VBA en passant par la collection Toolbars ou de faire un macro.
4) Vous devrez ajouter à votre formulaire, un bouton d'ajout, de modification, de suppression, aller à l'enregistrement suivant, précédent, ...

C'est possible, je l'ai déjà fait dans plusieurs bases de données pour des clients qui avaient le même souci, mais c'est plus long à réaliser et surtout il y a beaucoup de choses à vérifier.
0