Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/09/2011, 10h59   #1
Nouveau Membre du Club
 
Inscription : décembre 2009
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 113
Points : 25
Points : 25
Par défaut Modifier un message access (pas d'erreur générée)

Bonjour,

Je voudrais modifier un message access peu compréhensible pour l'utilisateur (mais à priori, pas de génération d'erreur access).

J'ai un formulaire dont les données sont issues d'une requete.

Un champs dans le formulaire peut être modifié.

Si sa valeur ne correspond pas à une des valeurs de la table source, Access fait apparaître le message et n'enregistre pas la modification :
Code :
Le moteur de la BD ne peut pas trouver d'enregistrement dans la table "matable" avec le champs "champs" correspondant à la clé.
Je voudrais ne pas le faire apparaître car pas clair ou au moins le modifier. Mais comme il ne semble pas y avoir de génération d'erreur, je ne vois pas comment faire.
atech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 11h42   #2
Membre régulier
 
Inscription : février 2010
Messages : 100
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 100
Points : 92
Points : 92
Bonjour,

Dans ta gestion d'erreur, place une msgbox qui affiche le numéro de l'erreur. Donc (je crois) :
D'après google, ce serait l'erreur 3101 (à confirmer).

Et ensuite, toujours dans ta gestion d'erreur, tu interceptes ce numéro :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
Exit_Commande1_Click:
    Exit Sub
 
Err_Commande1_Click:
    If Err.Num = 3101 Then 
        MsgBox "Le message que tu souhaites"
    Else
        MsgBox Err.Description
    End if
    Resume Exit_Commande1_Click
 
End Sub
Cordialement,
Beub' est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 12h32   #3
Nouveau Membre du Club
 
Inscription : décembre 2009
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 113
Points : 25
Points : 25
Merci pour l'aide.

Le souci, c'est que ça ne génère pas d'erreur à priori.

Dans la sub Form_Error, j'avais placé mais cette sub n'est pas activée.
atech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 12h39   #4
Membre régulier
 
Inscription : février 2010
Messages : 100
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 100
Points : 92
Points : 92
... alors à quel moment est-ce que le message d'erreur de ton premier post apparaît ? D'où vient-il..?
Beub' est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 13h05   #5
Nouveau Membre du Club
 
Inscription : décembre 2009
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 113
Points : 25
Points : 25
Heu si, mon msgbox err.number dans Form.error m'indique bien quelque chose : 0 ?
atech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 13h30   #6
Membre régulier
 
Inscription : février 2010
Messages : 100
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 100
Points : 92
Points : 92
Alors il n'y a pas d'erreur, donc inutile de changer le message d'erreur

Plus sérieusement, je viens de comprendre que tu utilises l'évènement Error du form... que je n'ai jamais utilisé (je place plutôt "On Error" sur chacune de mes procédures susceptibles de planter). Il me semble que Form_error est moins "performant" que "On error" (à confirmer, je dis p-e une bêtise...).
Donc je ne peux pas t'aider, il faudrait que qqu d'autre prenne la relève .

Juste au cas où tu veux tester/t'en inspirer, je gère les erreurs comme ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Commande2_Click()
On Error GoTo Err_Commande2_Click
 
'
'
'ton traitement
'
'
'
 
Exit_Commande2_Click:
    Exit Sub
 
Err_Commande2_Click:
    MsgBox Err.Description
    Resume Exit_Commande2_Click
 
End Sub
Beub' est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 13h43   #7
Nouveau Membre du Club
 
Inscription : décembre 2009
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 113
Points : 25
Points : 25
Merci, je vais tester. Pour l'instant, je tourne en rond...
atech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 13h47   #8
Nouveau Membre du Club
 
Inscription : décembre 2009
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 113
Points : 25
Points : 25
Ta gestion d'erreur, je l'ai mise dans la procédure Form_BeforeUpdate (je veux controler ce qui est écrit dans le champs.

Quand je mets une valeur qui ne corrrespond pas à un enregistrement de la table source, ton code ne détecte pas d'errreur.
Par contre, ça active Form_Error mais avec un err.number=0
atech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 14h03   #9
Membre régulier
 
Inscription : février 2010
Messages : 100
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 100
Points : 92
Points : 92
Tu peux poster ton code ? Au niveau de Form_Error et Before_Update ?
Et la table source qui est impliquée ?

Je vais essayer de voir ça cet après-midi.

Cordialement,
Beub'
Beub' est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 14h33   #10
Nouveau Membre du Club
 
Inscription : décembre 2009
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 113
Points : 25
Points : 25
J'ai créé un formulaire dont les données sources sont issues d'une requête :



Dans le champs "disposition" de mon formulaire, si je mets une valeur non contenue dans la table et que je veux changer d'enregistrement avec le bouton de déplacement de formulaire, le message Access apparaît :


Si je rajoute cette sub
Code :
1
2
3
Private Sub Form_Error(DataErr As Integer, Response As Integer)
MsgBox Err.Number
End Sub
la msgbox me renvoie "0" (puis après, message Access précédent.)

J'ai supprimé la sub Form_BeforeUpdate pour tester.
atech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 15h54   #11
Nouveau Membre du Club
 
Inscription : décembre 2009
Messages : 113
Détails du profil
Informations forums :
Inscription : décembre 2009
Messages : 113
Points : 25
Points : 25
J'ai changé de méthode et ça marche, je teste directement avec beforeupdate du champs :

[code]Private Sub disposition_BeforeUpdate(Cancel As Integer)
Dim nbre As Integer
Dim disp As String
disp = Me.disposition.Text
nbre = DCount("code", "dispositions_SDAGEs", "
Code :
1
2
3
4
5
6
 = '" & disp & "'")
If nbre = 0 Then
 message = MsgBox("blabla erreur", vbExclamation)
 Me.Undo
End If
End Sub
Merci à Beub' pour l'aide.
atech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 16h03   #12
Membre régulier
 
Inscription : février 2010
Messages : 100
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 100
Points : 92
Points : 92
Cool J'aurais pas eu le temps de regarder avant lundi finalement ^^'

Bonne continuation, bon we !
Beub' est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h25.


 
 
 
 
Partenaires

Hébergement Web