OVH Cloud OVH Cloud

vérifier un doublon

11 réponses
Avatar
jacques
Bonjour j'ai une table qui se nome produit. J'ai un champ=20
clef primaire qui s'appel nopro dans lequel j'inscris le=20
num=E9ro des produits.

J'ai un formulaire qui sert =E0 cr=E9er des nouveaux=20
produits. Dans ce formulaire lorsque j'inscris un nouveau=20
num=E9ro de produit dans le champ nopro, j'aimerais qu'=E0=20
l'=E9v=E9nement lostfocus que le syst=E8me v=E9rifie dans ma=20
table produit si ce num=E9ro existe d=E9j=E0 et qu'il me dise =AB=20
num=E9ro existant =BB si le num=E9ro existe d=E9j=E0 et qu'il=20
retourne sur le m=EAme champ pour inscrire un num=E9ro=20
diff=E9rent.

Je ne veux pas attendre d'avoir compl=E9t=E9 tout=20
l'enregistrement avant de savoir que le num=E9ro inscrit=20
est un doublon.

Un grand merci pour votre aide.

10 réponses

1 2
Avatar
Raymond [mvp]
Bonjour.

tu peux utiliser DLookUp ou DCount.

Private Sub nopro _BeforeUpdate(Cancel As Integer)
If Not IsNull(DLookup("nopro", "produit", "[nopro] = '" & Me.nopro &
"'")) Then
MsgBox "en double"
Cancel = True
End If
End Sub
si nopro est numérique, enlever les '

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"jacques" a écrit dans le message de
news:19f2a01c41d5c$b998eba0$
Bonjour j'ai une table qui se nome produit. J'ai un champ
clef primaire qui s'appel nopro dans lequel j'inscris le
numéro des produits.

J'ai un formulaire qui sert à créer des nouveaux
produits. Dans ce formulaire lorsque j'inscris un nouveau
numéro de produit dans le champ nopro, j'aimerais qu'à
l'événement lostfocus que le système vérifie dans ma
table produit si ce numéro existe déjà et qu'il me dise «
numéro existant » si le numéro existe déjà et qu'il
retourne sur le même champ pour inscrire un numéro
différent.

Je ne veux pas attendre d'avoir complété tout
l'enregistrement avant de savoir que le numéro inscrit
est un doublon.

Un grand merci pour votre aide.
Avatar
elle me renvoi le message l'objet ou la classe ne gère
pas le jeu d'évenement.



-----Message d'origine-----
Bonjour.

tu peux utiliser DLookUp ou DCount.

Private Sub nopro _BeforeUpdate(Cancel As Integer)
If Not IsNull(DLookup("nopro", "produit", "[nopro]
= '" & Me.nopro &

"'")) Then
MsgBox "en double"
Cancel = True
End If
End Sub
si nopro est numérique, enlever les '

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"jacques" a écrit
dans le message de

news:19f2a01c41d5c$b998eba0$
Bonjour j'ai une table qui se nome produit. J'ai un champ
clef primaire qui s'appel nopro dans lequel j'inscris le
numéro des produits.

J'ai un formulaire qui sert à créer des nouveaux
produits. Dans ce formulaire lorsque j'inscris un nouveau
numéro de produit dans le champ nopro, j'aimerais qu'à
l'événement lostfocus que le système vérifie dans ma
table produit si ce numéro existe déjà et qu'il me dise «
numéro existant » si le numéro existe déjà et qu'il
retourne sur le même champ pour inscrire un numéro
différent.

Je ne veux pas attendre d'avoir complété tout
l'enregistrement avant de savoir que le numéro inscrit
est un doublon.

Un grand merci pour votre aide.


.



Avatar
Raymond [mvp]
access ne gère pas beforeUpdate ?

as-tu ajuster avec tes vrais noms de champ ou table ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


a écrit dans le message de
news:1a47901c41d7c$a5b37bd0$
elle me renvoi le message l'objet ou la classe ne gère
pas le jeu d'évenement.
Avatar
oui les nom sont bon mais sa ne marche toujours pas voici
ce que j'ai comme code.

Private Sub za_LostFocus()
If Not IsNull(DLookup("za", "produit", "[nopro] = " &
Me.za & "")) Then
MsgBox "en double"
Cancel = True
End If
End Sub


-----Message d'origine-----
access ne gère pas beforeUpdate ?

as-tu ajuster avec tes vrais noms de champ ou table ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


a écrit dans le
message de

news:1a47901c41d7c$a5b37bd0$
elle me renvoi le message l'objet ou la classe ne gère
pas le jeu d'évenement.


.



Avatar
3stone
Salut,

a écrit:
oui les nom sont bon mais sa ne marche toujours pas voici
ce que j'ai comme code.

Private Sub za_LostFocus()


????

Raymond t'a dit de mettre le code dans le BeforeUpdate !

pourquoi le mets tu alors dans le LostFocus ?



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------
Avatar
Psq je ne veux pas attendre à la fin de l'enregistrement.
je veux le savoir juste après avoir inscrit le numéro du
produit.

j'ai le même message d'erreur pour BeforeUpdate et
LostFocus()

meric de votre aide

!





-----Message d'origine-----
Salut,

a écrit:
oui les nom sont bon mais sa ne marche toujours pas voici
ce que j'ai comme code.

Private Sub za_LostFocus()


????

Raymond t'a dit de mettre le code dans le BeforeUpdate !

pourquoi le mets tu alors dans le LostFocus ?



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------






.



Avatar
3stone
Psq je ne veux pas attendre à la fin de l'enregistrement.
je veux le savoir juste après avoir inscrit le numéro du
produit.

j'ai le même message d'erreur pour BeforeUpdate et
LostFocus()



Ta raison n'en est pas une !

Le beforeupdate EST avant la fin !!!



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------
Avatar
Raymond [mvp]
il me semble que ta clause where ne correspond pas:
If Not IsNull(DLookup("za", "produit", "[nopro] = " &
Me.za & "")) Then

Si tu indiques que [nopro] doit être égal à ME.za , à mon avis ce n'est pas
[nopro] qu'il faut tester. les 3 données représentent la même chose, le
numéro de produit. le premier "ZA" n'a aucune importante dans le test. c'est
seulement "[nopro] = " & Me.za qui est important.
d'autre part il ne faut pas mettre & "" qui ne peut qu'engendrer une erreur.
par ailleurs, il faut bien le mettre en beforeupdate sinon en cas de doublon
access agira avant toi.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


a écrit dans le message de
news:1743001c41d89$2a104190$
Psq je ne veux pas attendre à la fin de l'enregistrement.
je veux le savoir juste après avoir inscrit le numéro du
produit.

j'ai le même message d'erreur pour BeforeUpdate et
LostFocus()

meric de votre aide
Avatar
J'ai apporter les ajustements suivant:

Private Sub nopro_BeforeUpdate(Cancel As Integer)
If Not IsNull(DLookup("nopro", "produit", "[nopro] = '" &
Me.nopro & "'")) Then
MsgBox "en double"
Cancel = True
End If
End Sub

Mais j'ai toujours le même message. soit L'expression
avant mise à jour entrée comme paramètre de la propriéte
type d'événememt est à l'origine d'une erreur. L'objet ou
la classe ne gère pas l'évenement.



-----Message d'origine-----
il me semble que ta clause where ne correspond pas:
If Not IsNull(DLookup("za", "produit", "[nopro] = " &
Me.za & "")) Then

Si tu indiques que [nopro] doit être égal à ME.za , à
mon avis ce n'est pas

[nopro] qu'il faut tester. les 3 données représentent la
même chose, le

numéro de produit. le premier "ZA" n'a aucune importante
dans le test. c'est

seulement "[nopro] = " & Me.za qui est important.
d'autre part il ne faut pas mettre & "" qui ne peut
qu'engendrer une erreur.

par ailleurs, il faut bien le mettre en beforeupdate
sinon en cas de doublon

access agira avant toi.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


a écrit dans le
message de

news:1743001c41d89$2a104190$
Psq je ne veux pas attendre à la fin de l'enregistrement.
je veux le savoir juste après avoir inscrit le numéro du
produit.

j'ai le même message d'erreur pour BeforeUpdate et
LostFocus()

meric de votre aide



.



Avatar
Anor
Bonjour
tu peux peut-être essayer :

if dcount("*","produit","[nopro = '" & me.nopro & "'")) > 0 then


ps : le champ nopro de la table produits est bien un champ texte, n'est ce pas ?
le controle du formulaire comporte le même nom que le champ source, n'est-ce pas ?

--
à+
Arnaud
--------------------------------------------------
Conseils d'utilisation : http://users.skynet.be/mpfa/
Access Memorandum : http://memoaccess.free.fr
/Réponses souhaitées sur ce forum, merci/
--------------------------------------------------


wrote:
| J'ai apporter les ajustements suivant:
|
| Private Sub nopro_BeforeUpdate(Cancel As Integer)
| If Not IsNull(DLookup("nopro", "produit", "[nopro] = '" &
| Me.nopro & "'")) Then
| MsgBox "en double"
| Cancel = True
| End If
| End Sub
|
1 2