IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Exécution d'un requête SQL et lecture SQLfetch [WD15]


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2019
    Messages : 7
    Par défaut Exécution d'un requête SQL et lecture SQLfetch
    Bonjour

    Je reprends du code d'un vieux programme alors ne m'en voulez pas, ce n'est pas moi qui ai mis de GOTO (j'ai bien l'intention de les remplacer)
    mon soucis décrit étape par étape:
    - je teste ma connexion SQl via ODBC qui fonctionne bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    cnxfast = SQLConnecte("Mabase","","","","ODBC")
    SI cnxFast = 0 ALORS
    	fEcritLigne(numlog,"ERROR: Connexion ODBC Impossible")	
    	GOTO C_fini
    SINON
    	fEcritLigne(numlog," Connexion ODBC  OK")
    FIN
    - J'exécute une simple requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	SQLChangeConnexion(cnxFast)	
    		req1 = "SELECT CODE,EDIENSEIGNE,TARIFPV FROM MAG WHERE ILN = '"+code_cli+"' "
    		SI PAS SQLExec(req1,nomreq1) ALORS
    			fEcritLigne(numlog,"Warning: Impossible d'exécuter la  requête: " + req1)
    			SQLErreur(nomreq1,req1)
    			GOTO C_fait
    		FIN
     
    		SI SQLFetch(nomreq1) <> 0 ALORS
    			GOTO C_fait
    		FIN
    Si j'exécute ma requête SQL sur un éditeur comme DBeaver, il me retourne bien une ligne de résultat.
    Lorsque je lance mon programme, le SQLExec est bon mais le SQLfetch me retourne toujours 1 alors qu'il devrait retourner 0 pour me dire qu'il a bien trouvé la ligne existante.
    Je ne comprends pas ce qui ne va pas.

    Merci par avance pour votre aide

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2017
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2017
    Messages : 343
    Par défaut
    Uu, voilà un truc que j'ai jamais vu. J'ai jamais utilisé les ordres SQL ainsi.
    C'est quoi la base utilisée par l'ODBC, son nom?
    Ta version de Windev?
    Je pourrais tester de mon côté déjà pour voir si j'obtiens un truc cohérent.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2019
    Messages : 7
    Par défaut
    Bonjour.

    Ma base est une base MySql version 8.
    version de Windev: 15

    Merci beaucoup

  4. #4
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 564
    Par défaut
    Question à 2 balles : tu dis que tu as exécuté la requête sur un autre soft, mais tu n'aurais pas un code_cli qui aurait une casse différente/des espaces qui s'inséreraient ?

    Un test à faire est de remplacer ton sqlexec par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MaRequête est uen source de données
    si HExécuteRequêteSQL(MaRequête,cnxFast,hRequêteSansCorrection,SELECT CODE,EDIENSEIGNE,TARIFPV FROM MAG WHERE ILN = '"+code_cli+"') alors
    Hlitpremier(MaRequête)
    info(MaRequete.EDIENSEIGNE)
    HannuleDeclaration(MaRequête)
    FIN
    Attention, c'est du brut de fonderie sans test, ni vérification syntaxique. A vérifier donc !

    Une piste est de passer par un accès natif (je ne sais pas si celui de MySQL existent encore en V15). Par contre, il faudrait revoir tous les accès à la BDD

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2019
    Messages : 7
    Par défaut
    Merci pour la réponse
    Quand j'exécute le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MaRequête est une Source de Données
    		HExécuteRequêteSQL(MaRequête,cnxFastmag,"SELECT CODE,EDIENSEIGNE,TARIFPV FROM MAG WHERE ILN = '"+code_cli+"'")
    		HLitPremier(MaRequête)
    		Info(MaRequête.EDIENSEIGNE)
    		HAnnuleDéclaration(MaRequête)
    J'ai un plantage à l'exécution de la commande HLitPremier

    Erreur à la ligne 402 du traitement Procédure globale LivraisonsFM_new.
    Vous avez appelé la fonction HLitPremier.
    Aucune analyse n'est ouverte et le fichier <MaRequête> n'a pas été décrit.


    J'ai cherché sur l'aide et le web mais je ne vois pas ce qui ne va pas

  6. #6
    Expert confirmé
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 564
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    si HExécuteRequêteSQL(MaRequête,cnxFast,hRequêteDéfaut,SELECT CODE,EDIENSEIGNE,TARIFPV FROM MAG WHERE ILN = '"+code_cli+"') alors ...
    hRequêteDéfaut à la place de hRequêteSansCorrection

    Sans conviction car comme tu n'as pas d'analyse, je ne sais pas comment ça va réagir.

    Ton code_cli vaut quoi ?

  7. #7
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 227
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MaRequête est une Source de Données
    		HExécuteRequêteSQL(MaRequête,cnxFastmag,"SELECT CODE,EDIENSEIGNE,TARIFPV FROM MAG WHERE ILN = '"+code_cli+"'")
    		HLitPremier(MaRequête)
    		Info(MaRequête.EDIENSEIGNE)
    		HAnnuleDéclaration(MaRequête)
    Ce code là peut marcher, pas de problème.
    Mais si tu es en galère, si tu as besoin de comprendre pourquoi ça bugge, ce code est 'inacceptable'.
    La commande hLitPremier plante parce que le hExecuteRequeteSQL qui est juste avant n'a pas fait son job. Demandons à Windev ce qui a empéché hExecuteRequeteSQL de fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    MaRequête est une Source de Données
    brc est un booleen 
    		brc =HExécuteRequêteSQL(MaRequête,cnxFastmag,"SELECT CODE,EDIENSEIGNE,TARIFPV FROM MAG WHERE ILN = '"+code_cli+"'")
                    si pas brc alors 
                         Erreur ( " plantage ", herreurinfo() )
                         Retour
                    fin 
    		HLitPremier(MaRequête)
    		Info(MaRequête.EDIENSEIGNE)
    		HAnnuleDéclaration(MaRequête)
    Il faut tester le code retour de hExecuteRequeteSQL, la fonction hErreurInfo peut te donner plein d'infos très utiles.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. exécution d'une requête SQL dans access
    Par skyarnangel dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/02/2009, 11h18
  2. Exécution d'une requête SQL qui affiche un message
    Par Platon93 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/11/2006, 16h15
  3. Assurer l'exécution d'une requête SQL
    Par condor_01 dans le forum JDBC
    Réponses: 4
    Dernier message: 11/08/2006, 11h23
  4. problème d'exécution d'un requête SQL!
    Par binhjuventus dans le forum C++Builder
    Réponses: 5
    Dernier message: 12/07/2006, 04h21
  5. Erreur d'exécution d'une requête sql
    Par marceline dans le forum Oracle
    Réponses: 2
    Dernier message: 11/07/2006, 13h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo