Eviter l ajout des enregistrements existant deja dans la base [Résolu]

Signaler
Messages postés
26
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
18 mars 2013
-
Messages postés
26
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
18 mars 2013
-
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

Messages postés
14733
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020
145
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
Messages postés
14733
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020
145
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

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
Messages postés
26
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
18 mars 2013

bonjour acive
j ai change le type du variable combo en string mais le probleme reste le meme
merci beaucoup

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
Messages postés
26
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
18 mars 2013

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
Messages postés
14733
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020
145
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
Messages postés
26
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
18 mars 2013

salut acive
oui j'ai essayé mais le probleme reste le meme
merci
Messages postés
14733
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020
145
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
Messages postés
26
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
18 mars 2013

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
Messages postés
14733
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 octobre 2020
145
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
Messages postés
26
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
18 mars 2013

salut
oui mais en access il s'ajoute normalement sans aucun erreur
merci
Messages postés
26
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
18 mars 2013

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
Messages postés
26
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
18 mars 2013

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