# Requete SQL

• ### Question

• Bonjour à tous,

Comment savoir si une requête SQL est réussie?

Je m'explique.

Dans mon programme je dois faire des enregistrements, si le membre existe il faut que je
fasse un UPDATE, si non un INSERT.

Voilà mon code actuel.

Ecrire = True

Try

Sql = "SELECT * FROM Tbl_Points WHERE (Point_Membre = '" & Nom & "') AND (Point_Mois = " & Mois & ") AND (Point_Saison = '" & Saison & "')"

Call Executer_Sql()

Sql = "UPDATE Tbl_Points "

Sql &= "SET Point_Mois = " & Mois & ", "

Sql &= "Point_Membre = '" & Nom & "', "

Sql &= "Point_PointsImage1 = " & P1 & ", "

Sql &= "Point_PointsImage2 = " & P2 & ", "

Sql &= "Point_PointsImage3 = " & P3 & ", "

Sql &= "Point_PointsImage4 = " & P4 & ", "

Sql &= "Point_PointsImage5 = " & P5 & ", "

Sql &= "Point_Saison = '" & Saison & "', "

Sql &= "Point_Clef = '" & Clef & "' "

Sql &= "WHERE (Point_Membre = '" & Nom & "') AND (Point_Mois = " & Mois & ") AND (Point_Saison = '" & Saison & "')"

Call Executer_Sql()

Catch ex As Exception

Sql = "INSERT INTO Tbl_Points "

Sql &= "(Point_Mois = " & Mois & ", "

Sql &= "Point_Membre ='" & Nom & "', "

Sql &= "Point_PointsImage1 =" & P1 & ", "

Sql &= "Point_PointsImage2 =" & P2 & ", "

Sql &= "Point_PointsImage3 =" & P3 & ", "

Sql &= "Point_PointsImage4 =" & P4 & ", "

Sql &= "Point_PointsImage5 =" & P5 & ", "

Sql &= "Point_Saison = '" & Saison & "', "

Sql &= "Point_Clef = '" & Clef & "')"

Sql &= "VALUE (" & Mois & ", '" & Nom & "', " & P1 & ", " & P2 & ", " & P3 & ", " & P4 & ", " & P5 & ", '" & Saison & "')"

Call Executer_Sql()

End Try

Ecrire = False

Sub Executer_Sql()

Try

Connection.Close()

Catch ex As Exception

End Try

Command_Sql = Connection.CreateCommand()

Command_Sql.CommandText = Sql

Connection.Open()

If Ecrire = False Then

Else

Data_Writer = Command_Sql.ExecuteScalar()

End If

End Sub

Actuellement, ma requête SELECT est toujours valide, c'est à dire même si elle ne trouve pas
le membre, l'UPDATE se fait.

Comment savoir si elle ne trouve pas le membre?

Merci de votre aide

Cordialement

Salva

• Modifié vendredi 8 novembre 2013 10:02
vendredi 8 novembre 2013 10:01

### Réponses

• Bonjour,

Au sein d'un bloc Try,

1) Ouvrir la connexion et définir la requête d'update

2) Exécuter la requête via ExecuteNonQuery et récupérer la valeur de retour (int : indiquant le nombre de lignes mises à jour)

3) si cette valeur est 0, votre update n'a pas eu lieu et vous devez insérer un nouveau record en préparant la requete d'insert et en l'executant via ExecuteNonQuery (remarquez que si l'update s'est fait, vous n'aurez utilisé qu'une seule requête, le select n'est pas nécessaire)

Au sein d'un bloc catch, gérer une exception éventuelle

Au sein d'un block Finally, fermer votre connexion qui est restée ouverte jusqu'à présent.

• Marqué comme réponse jeudi 14 novembre 2013 07:25
vendredi 8 novembre 2013 10:37

### Toutes les réponses

• Bonjour,

Au sein d'un bloc Try,

1) Ouvrir la connexion et définir la requête d'update

2) Exécuter la requête via ExecuteNonQuery et récupérer la valeur de retour (int : indiquant le nombre de lignes mises à jour)

3) si cette valeur est 0, votre update n'a pas eu lieu et vous devez insérer un nouveau record en préparant la requete d'insert et en l'executant via ExecuteNonQuery (remarquez que si l'update s'est fait, vous n'aurez utilisé qu'une seule requête, le select n'est pas nécessaire)

Au sein d'un bloc catch, gérer une exception éventuelle

Au sein d'un block Finally, fermer votre connexion qui est restée ouverte jusqu'à présent.

• Marqué comme réponse jeudi 14 novembre 2013 07:25
vendredi 8 novembre 2013 10:37
• Bonjour

Un petit retour?

Merci!

Cordialement,

Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

lundi 11 novembre 2013 11:27
• Bonjour,

Merci la reponse, c'est bien ce qu'il me falais !!

Merci encore et a bientot

Cordialement

Salva

jeudi 14 novembre 2013 07:24
• Bonjour,

Un peu vieux comme post, mais bon pour le fun...

Je pense que vous pouvez utiliser la fonction merge pour ça c'est fait pour, en une requête au lieu de deux

vendredi 15 juillet 2016 15:54