Detecter un enregistrement s'il existe déjà ou non (recherche approfondie)

Résolu
germany1970 Messages postés 134 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 22 mars 2014 - 23 avril 2011 à 12:14
germany1970 Messages postés 134 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 22 mars 2014 - 26 avril 2011 à 11:52
Bonjour,
pour la recherche dans une table pour un seul élément j'ai pas de probléme, et voilà le code que j'utilise :

cmd.CommandText "SELECT COUNT(*) FROM ADHERENT WHERE CODE '" & Me.TextBox1.Text & "'"
Dim isPresent As Boolean = False
If (Not cmd.ExecuteScalar Is DBNull.Value) Then
isPresent IIf(cmd.ExecuteScalar 0, 0, 1)

If Not isPresent Then
cmd.CommandText = "INSERT INTO ADHERENT (...) VALUES (...)"
'cmd.ExecuteNonQuery()
Me.TextBox1.BackColor = Color.White
Else
Me.TextBox1.BackColor = Color.Red
MessageBox.Show(" POLICE EXISTE DEJA ")
End If
End If

mais le probléme que j'ai en ce moment et le suivant :
dans la meme table ADHERENT il existe plusieurs N° de police et pour chaque police il existe plusieurs adherents et j'ai deux textbox.

la table est constituée comme ça:
N° police : am1562
N° adhesion : w150
N° adherent : berne
Adresse : paris

ce que je veux c'est quand je tape le numéro de police dans le textbox1 et le numéro d'adhesion dans le textbox2 il m'affiche un message d'erreur si le n° adhesion existe déjà dans cette police.

merci pour votre collaboration habituelle

7 réponses

Utilisateur anonyme
26 avril 2011 à 10:51
Bonjour,
Si j'ai bien compris ton probleme, ta solution devrait ressembler à ça:

cmd.CommandText "SELECT COUNT(*) FROM ADHERENT WHERE CODE '" & Me.TextBox1.Text & "' AND CODE_ADHERENT = '" & Me.TextBox2.Text & "'"
Dim isPresent As Boolean = False
If (Not cmd.ExecuteScalar Is DBNull.Value) Then
isPresent IIf(cmd.ExecuteScalar 0, 0, 1)

If Not isPresent Then
cmd.CommandText = "INSERT INTO ADHERENT (...) VALUES (...)"
'cmd.ExecuteNonQuery()
Me.TextBox1.BackColor = Color.White
Else
Me.TextBox1.BackColor = Color.Red
MessageBox.Show(" POLICE EXISTE DEJA POUR CET ADHERENT")
End If
End If 
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
23 avril 2011 à 12:57
Bonjour,

2 solutions :
- Dans la base de données, tu déclare la colonne comme étant sans doublons, dans ce cas, en cas d'ajout, tu aura une erreur.
- Avant de valider, tu fais une requête SELECT pour vois si il y a du monde.

Les 2 solutions peuvent être utilisées en même temps.

Mon site
0
germany1970 Messages postés 134 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 22 mars 2014 3
24 avril 2011 à 02:11
Bonsoir henry,
je prefere la deuxième solution car j'ai un button de validation des informations avant le button enregistrement, mais je veux le code henry svp.ou il y'a une ligne de code à ajouter au code que j'ai posté avec ma question.

merci
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
24 avril 2011 à 18:41
Bonjour,

Tu fais déjà :
cmd.CommandText "SELECT COUNT(*) FROM ADHERENT WHERE CODE '" & Me.TextBox1.Text & "'"

Ensuite, tu peux tester si en faisant un GetDataReader, l'objet retourné est vide (inexistant) ou pas (un enregisterement), et dans ce cas, tu affiche les informations, je ne vois pas comment le dire plus simplement.

Mon site
0

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

Posez votre question
germany1970 Messages postés 134 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 22 mars 2014 3
24 avril 2011 à 21:21
merci henry,
mais comment je vais utiliser getdatareader.le code svp henry.

merci encore
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
24 avril 2011 à 21:31
0
germany1970 Messages postés 134 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 22 mars 2014 3
26 avril 2011 à 11:52
bonjour,
merci bcp alexander je suis entrain de tester.
0
Rejoignez-nous