Eviter l ajout des enregistrements existant deja dans la base

Résolu
aichaoussousagadir
Messages postés
26
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
18 mars 2013
- 20 août 2011 à 18:59
aichaoussousagadir
Messages postés
26
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
18 mars 2013
- 20 août 2011 à 22:06
bonjour à tous,
j'ai entrain de developper une application en utilisant vb.net 2008 et access 2007 comme SGBD.
Mon probleme:
j'ai une table "maladies" ayant deux colonnes(id_maladie,libelle_maladie) qunad j'ajoute une maladie par exemple "sucre" je veux pas qu'il s'ajoute une autre fois dans la table maladies avec une autre id_maladie diferent sachant que id_maladie est une cle primaire autoincremente
j'ai essaie cela:
j'ai extrait tous les maladies existant dans la colonne libelle_maladie un par un et j'ai l'a compare avec le contenu du textbox(c a d nouvelle maladie que je veux entrer)et voila le code:
////////////////////////////////////////
dim dr as oledbdatareader
dim combo as integre
dim req="select * from maladies"
cmd=new oledbcommande(req,cnx)
dr=cmd.executereader
while dr.read
combo=dr.getstring(1)
if combo=libelle_maladie.text then
msgbox("cett maladie exite deja dans la table")
endif
End while
mais cela ne fonctionne pas
vous pouvez m'aider s il vous plait?
merci d'avance.

14 réponses

NHenry
Messages postés
14926
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
162
20 août 2011 à 21:29
Bonjour,

Tu fais une requête SELECT comme celle que je t'ai montré, ça te retourne le nombre d'enregistrements répondant au critère du WHERE.
Ensuite, si il y a un résultat non nul, ça indique que ça existe déjà.

Sinon, tu mets ta colonne en "sans doublon".

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
3
NHenry
Messages postés
14926
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
162
20 août 2011 à 19:19
Bonjour,

Et en faisant une requête du genre :
"SELECT (count(*) FROM maladies WHERE MonChamp="+libelle_maladie.text
Ensuite en récupérant le résultat retourné ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
Utilisateur anonyme
20 août 2011 à 19:22
Salut Aicha,
Alors à ce que je vois vite fait dans ton code, il y a une utilisation contradictoire de ta constante combo:

Ici tu la déclares comme interger (donc un chiffre):
dim combo as integre (j'imagine que c'est integer)

Et ici tu attends qu'elle se transforme en texte?
if combo=libelle_maladie.text then



CF2i - Guadeloupe
Ingénierie Informatique
0
aichaoussousagadir
Messages postés
26
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
18 mars 2013

20 août 2011 à 19:37
bonjour acive
j ai change le type du variable combo en string mais le probleme reste le meme
merci beaucoup
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
20 août 2011 à 19:41
Et si tu fais ce qui dit Henry? t'as essayé?
"SELECT (count(*) FROM maladies WHERE MonChamp=" & libelle_maladie.text


CF2i - Guadeloupe
Ingénierie Informatique
0
aichaoussousagadir
Messages postés
26
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
18 mars 2013

20 août 2011 à 19:46
salut NHenry
j ai essaie avec cette requete que vous m'a proposer mais une erreur s'affiche au niveau de la ligne dr=cmd.executereader "aucun valeur donnée pour un ou plusieurs des parametres requis".
et j'ai pas compris ce que vous voulez dir de
"Ensuite en récupérant le résultat retourné "
vous pouvez m'expliquer s'il vous pait
merci
0
NHenry
Messages postés
14926
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
162
20 août 2011 à 20:06
Bonjour,

Il y a pas de ( devant count
MonChamp est à remplacer par le nom du champ.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
aichaoussousagadir
Messages postés
26
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
18 mars 2013

20 août 2011 à 20:29
salut acive
oui j'ai essayé mais le probleme reste le meme
merci
0
NHenry
Messages postés
14926
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
162
20 août 2011 à 20:52
Bonjour,

As-tu regardé la valeur retournée et essayer de comprendre ce qu'elle signifiait ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
aichaoussousagadir
Messages postés
26
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
18 mars 2013

20 août 2011 à 21:05
salut
le probleme c est que j arrive pas à regarder cette valeur là .une fois je saisie une maladie et je click sur le button ajouter le messege d'erreur s'affiche au niveau de la ligne dr=cmd.executereader
vola le message "aucun valeur donnée pour un ou plusieurs des parametres requis".
je sais pa pourquoi

merci
0
NHenry
Messages postés
14926
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
162
20 août 2011 à 21:07
Bonjour,

As-tu essayé de l'exécuter directement dans Access pour comprendre d'où vient l'erreur ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
aichaoussousagadir
Messages postés
26
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
18 mars 2013

20 août 2011 à 21:20
salut
oui mais en access il s'ajoute normalement sans aucun erreur
merci
0
aichaoussousagadir
Messages postés
26
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
18 mars 2013

20 août 2011 à 21:24
slut
mais moi je veut pas q'une maladie s'ajoute plusieur fois dans la table avec des id_maladie differnt c est ca mon probleme
merci
0
aichaoussousagadir
Messages postés
26
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
18 mars 2013

20 août 2011 à 22:06
salut
merci beaucoup Henry j'ai compris ton aidé et au lieu de tester si combo=libelle_maladie.text alors j ai tester si combo=0 ajouter sinon eviter l ajout et ca maintenant fonctionne fonctionne tres bien
merci beaucooooooooooooup
0