Condition si requete SQL s'est bien executee [Résolu]

Moundir76 286 Messages postés dimanche 3 octobre 2010Date d'inscription 16 mai 2014 Dernière intervention - 8 juin 2011 à 09:23 - Dernière réponse : Moundir76 286 Messages postés dimanche 3 octobre 2010Date d'inscription 16 mai 2014 Dernière intervention
- 8 juin 2011 à 13:43
Bonjour,

JE souhaite faire une condition lors d'une requete SQL afin de savoir si elle s'est bien executée :

If cnxCPTA.Execute(cmdSQL) = 1 Then
instructions

            End If


J'ai aussi essayé avec true mais je ne trouve pas comment dire que si la requete a renvoyé un resultat (c'est un update) alors executer instructions.



Merci d'avance
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 8 juin 2011 à 12:40
3
Merci
RecordsAffected

Tu n'as qu'à déclarer une variable Long et l'utiliser dans ta syntaxe .Execute : Au retour, la variable contiendra le nombre d'enregistrements affectés par la commande.

Merci cs_Jack 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de cs_Jack
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 8 juin 2011 à 10:12
0
Merci
Salut
Quelle type de DB as-tu ? Que dois faire ta requête (connextion, recordset,...)?
Commenter la réponse de 4u4me4us
Moundir76 286 Messages postés dimanche 3 octobre 2010Date d'inscription 16 mai 2014 Dernière intervention - 8 juin 2011 à 10:19
0
Merci
Salut,

C'est une connexion ADODB ODBC.
Ma requête est un update. Lorsque je passe par VB dans les requetes par exemple lorsque je fais l'update d'un produit qui n'existe pas dans la BDD, VB me mets "0 lignes affectées par cette requête". Et si l'update est correct "1 ligne affectée par cette requête".

Je te mets mon code si jamais cela peut t'aider :
 Dim cmdSQL As String 

            
            cmdSQL = "Update F_ARTICLE " & _
            " Set AR_PRIXACH = " & lblPrixArticle.Text & " " & _
            " Where AR_REF = '" & lblRefArticle.Text & "'"

            
            cnxCPTA.Execute(cmdSQL)


Merci
Commenter la réponse de Moundir76
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 8 juin 2011 à 10:27
0
Merci
Salut

La méthode .Execute sur une connexion possède des paramètres optionnels qui permettent de récupérer le nombre de lignes modifiées par la requète.
Utilise cet option pour faire ton test.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 8 juin 2011 à 10:31
0
Merci
Si tu utilise VB que je pense 6 ou 5 il n'y a pas besoin de passer par un IF. En effet en cas d'erreur d’exécution VB lève une exception tu peut donc vérifier en utilisant le on errror.

Une autre possibilité tjs en partant de principe que VB lève une exception. Tu peut utiliser la variable systèem err. Avant ta requête tu peut faire err=0 et apprêt faire if err<>0 then ...

Tu peux très facilement vérifier mes dires. Pour cela il suffi de faire une requête bidon, executer ton code en pas à pas.
Commenter la réponse de 4u4me4us
Moundir76 286 Messages postés dimanche 3 octobre 2010Date d'inscription 16 mai 2014 Dernière intervention - 8 juin 2011 à 10:51
0
Merci
Merci pour vos réponses.

@jack : J'ai bien été voir sur le MSDN mais je ne vois pas quelle option utiliser. De plus VB m'indique
.execute(Commandtext as string, [ByRef RecordsAffected as object],[Option as integer = -1] as ADODB.RECORDSET)



@4u4me4us : ce n'est pas une erreur que je cherche c'est comme je dis plus haut, savoir si la ligne a bien été modifiée ou non. C'est pour ça que j'aimerais bien avoir.
JE pensais que la requête renvoyait 1 si elle s’était exécutée correctement c'est pour ça.

Je vais tester ta méthode quand meme


Merci beaucoup !
Commenter la réponse de Moundir76
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 8 juin 2011 à 11:11
0
Merci
Teste la car g bien compris que tu ne cherche pas une erreurs mais quand les ADODB n'arrive pas à faire une tâche il traduit cela comme une erreur.

De plus tu ne nous as pas indiqué si tu utilise une DB access, Mysql ou autre.
Commenter la réponse de 4u4me4us
Moundir76 286 Messages postés dimanche 3 octobre 2010Date d'inscription 16 mai 2014 Dernière intervention - 8 juin 2011 à 11:18
0
Merci
Si j'ai bien compris tu m'as dit d'essayer avec un try catch ?? car je ne comprends pas quand tu dis "variable systeme error".

J'utilise la base propriétaire comme une base de données SQL, donc Mysql

Merci de ton aide
Commenter la réponse de Moundir76
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 8 juin 2011 à 11:44
0
Merci
Tu dis "essayer avec un try catch" donc tu utilise vb.net!? Oui le principe et le même. ADODB lève une erreur quand pour X ou Y raison si il n'arrive pas à faire la taches.

Tu dis "SQL, donc Mysql", cela à une certaine importance car Mysql autorise l'utilisation de IF dans les requêtes exemple
.execute "CREATE DATABASE IF not EXISTS MA_DB" MySql ne va plus générer d’exception mais va gérer lui-même le cas si MA_DB existe ou si MA_DB exite pas. Je n'ai pas réussi a le faire la même requête avec MS SQL.
Commenter la réponse de 4u4me4us
Moundir76 286 Messages postés dimanche 3 octobre 2010Date d'inscription 16 mai 2014 Dernière intervention - 8 juin 2011 à 11:49
0
Merci
Oui j'utilise Visual Basic 8.

J'ai tenté d'afficher dans une messagebox les erreurs dans le try catch, cependant, meme quand la requete d'affecte aucune ligne, je n'ai pas d'erreur.

Merci pour la précision, en effet c'est Microsoft SQL qui est utilisé et non MySQL. Je me sert de VB pour me connecter a ma BDD via les liens ODBC et j’exécute des requêtes SQL sur cette dernière.

Désolé je suis débutant dans la matière.

Merci pour ton aide
Commenter la réponse de Moundir76
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 8 juin 2011 à 12:07
0
Merci
Dis moi ton AR_REF = '" & lblRefArticle.Text & "'", lblRefArticle.Text a une valeur qui existe dans ta DB?
Commenter la réponse de 4u4me4us
4u4me4us 781 Messages postés lundi 22 janvier 2007Date d'inscription 30 octobre 2013 Dernière intervention - 8 juin 2011 à 13:30
0
Merci
jack -> Respect!
Commenter la réponse de 4u4me4us
Moundir76 286 Messages postés dimanche 3 octobre 2010Date d'inscription 16 mai 2014 Dernière intervention - 8 juin 2011 à 13:43
0
Merci
@Jack : Merci beaucoup, solution très efficace et tres simple. Un grand merci à toi

@4u4me4us : Merci pour ton aide
Commenter la réponse de Moundir76

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.