Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Message d'erreur si données correspondent au donnée d'une autre ta

26 réponses
Avatar
Carolyn
Bonjour,

J'ai écrit il y a quelques jours concernant mon problème. J'aimerais, si
possible, pouvoir créer un message d'erreur si on entre des données dans une
table qui sont déjà entrées dans une autre.

Pour être plus précise, j'ai créé une base de données qui fait un suivi de
tous les ressources qui postulent pour un poste à l'intérieur de mon
entreprise. Nous voulons donc créer une "Blacklist", c'est-à-dire une liste
de gens qu'on ne voudra jamais engager pour notre entreprise. Ainsi, dans la
table de candidature, au lieu de prendre pour acquis que la personne qui
entrera les données va connaître tous les noms de la Blacklist par coeur, il
serait utile qu'un message d'erreur survienne lorsque un de ces noms est
entré.

On m'a dit de me référer à un programmeur pour ceci. Quelqu'un peut m'aider??

Merci infiniment!
Carolyn

10 réponses

1 2 3
Avatar
Fabien
Ooops, erreur.
Ce n'est pas sur APRES mise à jour mais AVANT. Donc ça devient:

Private Sub Ressource_BeforeUpdate(Cancel As Integer)
If Not IsNull(DLookup("[Nom_blacklist]", "BlackList", _
"[Nom_blacklist] ='" & Me.Ressource & "'")) Then
MsgBox "Attention ce postulant est dans la blacklist !!!"
Cancel = True
End If
End Sub

Bonsoir,


Copies-colles ceci après avoir supprimé totalement ta procédure.

Private Sub Ressource_AfterUpdate()
If Not IsNull(DLookup("[Nom_blacklist]", "BlackList", _
"[Nom_blacklist] ='" & Me.Ressource & "'")) Then
MsgBox "Attention ce postulant est dans la blacklist !!!"
Cancel = True
End If
End Sub




Salut eric,

Il me semble bien que c'est aprés la saisi de la ressource qu'il faut
controler qu'elle n'existe pas dans la table blacklist et donc c'est
dans afterupdate qu'il faut placer les instructions : isn't it ???


Avatar
Eric
Bonjour Fabien,

Je penche pour avant la mise à jour du champ. Si tu fais le contrôle
après Mise à jour, tu vas sortir du champ Ressource pour devoir y
revenir dans la cas où cette ressource est blacklistée. De plus, tu ne
peux pas utiliser le Cancel. A l'inverse avant la mise à jour, si la
ressource est blacklistée tu as le message et tu restes dans le contrôle
(sans en effacer son contenu mais pas demandé).



Salut eric,
Il me semble bien que c'est aprés la saisi de la ressource qu'il faut
controler qu'elle n'existe pas dans la table blacklist et donc c'est
dans afterupdate qu'il faut placer les instructions : isn't it ???


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Carolyn
Dans l'onglet Événement (quand je vais dans les propriétés de la boîte
Ressource), est-ce que c'est Procédure événementielle pour AVANT ou APRÈS
mise à jour??

J'ai essayé les 2 et maintenant quand j'entre n'importe quel nom (même un
nom qui n'est pas sur la blacklist), un message s'affiche qui dit:

Erreur d'exécution '2001':
Opération annulée.

Fin, Débogage, Aide


????????
Avatar
Fabien
Dans l'onglet Événement (quand je vais dans les propriétés de la boîte
Ressource), est-ce que c'est Procédure événementielle pour AVANT ou APRÈS
mise à jour??

J'ai essayé les 2 et maintenant quand j'entre n'importe quel nom (même un
nom qui n'est pas sur la blacklist), un message s'affiche qui dit:

Erreur d'exécution '2001':
Opération annulée.

Fin, Débogage, Aide


????????
Un exemple valant parfois mieux qu'un long .....


http://cjoint.com/?hgpGzd8qTA
Petite base avec 2 table et un formulaire ;-)

Avatar
Carolyn
C'est exactement ça que je veux!!

Quand j'ai copié / collé exactement ton code, ça ne fonctionnait pas parce
que nos champs n'avaient pas le même nom... Alors j'ai adapté pour ma DB:

Private Sub Ressource_AfterUpdate()

End Sub

Private Sub Ressource_BeforeUpdate(Cancel As Integer)
If Nz(DCount("[Ressource]", "Blacklist", "[Ressource] = '" & Me.Ressource &
"'"), 0) > 0 Then
MsgBox "Attention ressource dans blacklist !!!"
Cancel = True
End If
End Sub

Ceci fonctionne, le message d'erreur apparaît, mais il apparaît pour TOUS
les noms qu'on entre maintenant, et non que pour ceux dans la blacklist.

Je m'excuse pour être aussi difficile, mais on y est presque!!!

Merci infiniment,
Carolyn
Avatar
Eric
re,

Non, ca devrait marcher aussi bien avec Not IsNull(DlookUp(...)) qu'avec
Dcount(...), le Nz() n'étant pas nécessaire puisque DCount() retourne 0
s'il n'existe aucun enregistrement dans le domaine répondant au critère.

Postes une bd zippée au format Access2000 avec les 2 tables concernées
(quelques enregistrements fictifs seulement) et le formulaire sur
http://cjoint.com/ et postes ici le lien fourni.

C'est exactement ça que je veux!!

Quand j'ai copié / collé exactement ton code, ça ne fonctionnait pas parce
que nos champs n'avaient pas le même nom... Alors j'ai adapté pour ma DB:

Private Sub Ressource_AfterUpdate()

End Sub

Private Sub Ressource_BeforeUpdate(Cancel As Integer)
If Nz(DCount("[Ressource]", "Blacklist", "[Ressource] = '" & Me.Ressource &
"'"), 0) > 0 Then
MsgBox "Attention ressource dans blacklist !!!"
Cancel = True
End If
End Sub

Ceci fonctionne, le message d'erreur apparaît, mais il apparaît pour TOUS
les noms qu'on entre maintenant, et non que pour ceux dans la blacklist.

Je m'excuse pour être aussi difficile, mais on y est presque!!!

Merci infiniment,
Carolyn


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Fabien
C'est exactement ça que je veux!!

Quand j'ai copié / collé exactement ton code, ça ne fonctionnait pas parce
que nos champs n'avaient pas le même nom... Alors j'ai adapté pour ma DB:

Private Sub Ressource_AfterUpdate()

End Sub

Private Sub Ressource_BeforeUpdate(Cancel As Integer)
If Nz(DCount("[Ressource]", "Blacklist", "[Ressource] = '" & Me.Ressource &
"'"), 0) > 0 Then
MsgBox "Attention ressource dans blacklist !!!"
Cancel = True
End If
End Sub

Ceci fonctionne, le message d'erreur apparaît, mais il apparaît pour TOUS
les noms qu'on entre maintenant, et non que pour ceux dans la blacklist.

Je m'excuse pour être aussi difficile, mais on y est presque!!!

Merci infiniment,
Carolyn
Quelque chose doit m'echapper parceque le petit bout de base que je t'ai

donné en exemple fonctionne sans soucis.
Recapitulons :
Une Table TBLRessource, une table Blacklist.
Un formulaire de saisi ayant comme source de données TblRessource.
Un champ Ressource.
Lorsque l'on saisi un Nom dans ce champ, la procedure beforeUpdate
controle que ce nom n'est pas dan la tables blacklist.
Si le nom y est alors message et on revient sur la saisie.
S'il n'y est pas on continu la saisie
J'ai bon là ?

Qu'est ce que tu as de ton coté ?
Nom des tables ? noms des champs ? nom du formulaire ?
L'idéal serait de me passer cette base ou un extrait que j'y jette un
oeuil Lundi.
Soit tu passe par http://cjoint.com/
Soit tu l'expédie en PJ a mon adresse (enleve
les xxx)
Bon week

Avatar
Carolyn
Bon voilà j'ai créé une DB avec moins de tables et tout, mais voilà l'idée
générale.

http://cjoint.com/?hgrczx5r2g

Carolyn
Avatar
Eric
re Carolyn,

là : http://cjoint.com/?hgrtmhFh1r

Mais pour que ca marche il faut que tu saisisses Richard, luc. Ne pas
oublier l'espace après la virgule car la saisie dans la table Blacklist
a été faite comme cela.

Bon voilà j'ai créé une DB avec moins de tables et tout, mais voilà l'idée
générale.

http://cjoint.com/?hgrczx5r2g

Carolyn


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Carolyn
Encore une fois, le message d'erreur s'affiche avec TOUTE entrée dans
"Ressource". Je vous renvoie une DB avec toutes les relations entre les
tables de ma DB mais seulement une entrée dans Applications. Peut-être que
ça aidera?

http://cjoint.com/?hgrRdFXJAI

Merci encore!!!!!!
Carolyn
1 2 3