1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

AIDE [Résolu] Comment récupérer le nombre de lignes affectées après un UPDATE avec HExécuteRequête?

Discussion dans 'Base de donnés & HFSQL' créé par kabeda, Jan 6, 2019.

  1. kabeda

    kabeda Active Member

    Inscrit:
    Avr 23, 2018
    Messages:
    173
    J'aime reçus:
    63
    Bonjour,
    J'ai une requête dont le code est :
    Code (Text):
    UPDATE les_articles SET   author_num = {auteurnum} WHERE  les_articles.author LIKE %{nameauteur}%
    Je fais appel à cette requête avec
    Code (Text):
    HExécuteRequête(REQ_POURUPDATE,hRequêteDéfaut,TABLE_fra_auteurs.COL_Idauteur,sLenom)
    Mon code fonctionne. Je voudrais seulement avoir le nombre de lignes affectées par mon UPDATE après l'exécution de HExécuteRequête.

    Une idée?
     
    Tags:
  2. Gemini1961

    Gemini1961 Well-Known Member
    MEMBRE WX DUMP TEAM

    Inscrit:
    Jan 2, 2018
    Messages:
    572
    J'aime reçus:
    863

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Juste une petit idée ...

    En incorporant un champ DateHeureDerniereModif dans la structure de ton fichier Article ...

    Bien cordialement
     
    suenodesign apprécie ceci.
  3. redha2010

    redha2010 Active Member

    Inscrit:
    Jan 25, 2018
    Messages:
    230
    J'aime reçus:
    226
    Bonjour
    j'ai jamais utiliser mais ils disent c'est

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
    suenodesign apprécie ceci.
  4. kabeda

    kabeda Active Member

    Inscrit:
    Avr 23, 2018
    Messages:
    173
    J'aime reçus:
    63
    Bonjour,
    J'ai déjà essayé avec

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    et aussi avec les méthodes SQL (connexion, exécution d'une requête puis utilisation de la fonction SQLInfoGene).
    Le résultat est toujours 0 (zéro).
    Je ne sais pas si je dois fouiller encore ou que ça va être une recherche stérile.
     
    suenodesign apprécie ceci.
  5. Kobex

    Kobex Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    373
    J'aime reçus:
    257
    Bonjour,

    ici =>

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Bon dev

    [édit] désolé, les réponses sont apparue apprêt ma réponses…
     
    #5 Kobex, Jan 7, 2019
    Dernière édition: Jan 7, 2019
    suenodesign apprécie ceci.
  6. Ezekiel056

    Ezekiel056 Active Member

    Inscrit:
    Jan 17, 2018
    Messages:
    200
    J'aime reçus:
    154
    Bonjour,

    Petite note indiquée sur le lien de

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Donc vérifie que tu sois bien en HFSQL pour cette fonction

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
    suenodesign apprécie ceci.
  7. redha2010

    redha2010 Active Member

    Inscrit:
    Jan 25, 2018
    Messages:
    230
    J'aime reçus:
    226

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Bonjour,
    J'ai déjà essayé avec

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    et aussi avec les méthodes SQL (connexion, exécution d'une requête puis utilisation de la fonction SQLInfoGene).
    Le résultat est toujours 0 (zéro).
    Je ne sais pas si je dois fouiller encore ou que ça va être une recherche stérile.
    Cliquez pour agrandir...
    si tu utilise SQLInfoGene tu doit utiliser SQL.NbLig
     
  • kabeda

    kabeda Active Member

    Inscrit:
    Avr 23, 2018
    Messages:
    173
    J'aime reçus:
    63
    Bonjour,
    Finalement, j'ai fait du "bricolage"!
    1. Je déclare une fonction UPD_NUMROWS dans mysql.
    Code (Text):

    BEGIN
    UPDATE `fra_articles` SET `author_lie`=Pauthorlie WHERE `author` LIKE Pauthor;
    RETURN ROW_COUNT();
    END
     
    2. Je fait appel à cette fonction en wlangage et je récupères la valeur retournée
    Code (Text):

    lareq="SELECT UPD_NUMROWS(Pauthorlie,Pauthor);"
    SQLExec(lareq,"REQUP")
    SQLAssocie("REQUP",sLaval)
    SQLPremier("REQUP")
    Info("La requête contient " +sLaval +" enregistrements.")
     
    ça fonctionne pour moi quoique le traitement est beaucoup plus lent qu'avec phpmyadmin ou mysql workbench et qu'en plus les deux me donnent le résultat des lignes affectées uniquement alors que ce que j'ai écrit me donne le résultat de tous les lignes qui répondent au prédicat du WHERE.
    Je répète que le but pour moi étant de faire l'UPDATE et de récupérer le nombre de lignes modifiées uniquement.
     
  • kabeda

    kabeda Active Member

    Inscrit:
    Avr 23, 2018
    Messages:
    173
    J'aime reçus:
    63
    Bonjour,
    Sur ma table j'ai un auteur disons 'Bertrand SAUVAGE', j'ai cinq enregistrements qui lui correspondent. Sur les cinq, deux ont la bonne valeur de author_lie, les trois autres sont à zéro.

    Si je lance avec PhpMyAdmin la requête d'UPDATE, j'ai bien la réponse que trois lignes ont été affectées.
    Je fais un test avec la console MySql de la commande UPDATE.
    La réponse est :
    Code (Text):

    Query OK, 3 row affected (2.91 sec)
    Enregistrements correspondants: 5  Modifiés: 3  Warnings: 0
     
    Je lance ensuite un SELECT ROW_COUNT();
    et la réponse est :
    Code (Text):

    +-------------+
    | ROW_COUNT() |
    +-------------+
    |           3 |
    +-------------+
    3 row in set (0.00 sec)
     
    Je ne comprends pas la différence des valeurs de retour lorsque j'utilise windev.
     
  • kabeda

    kabeda Active Member

    Inscrit:
    Avr 23, 2018
    Messages:
    173
    J'aime reçus:
    63
    Bonjour,
    En fouillant encore, j'ai activé les logs sur mon serveur MySql et les requêtes de base sont les mêmes entre windev et la console ou PhpMyAdmin. Je ne comprends pas pourquoi windev retourne la totalité des enregistrements correspondants alors qu'il devrait retourner uniquement ceux modifiés.

    Une idée?

    :) reBonjour,
    Après m'être documenté sur

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    et trouvé l'option client_flag avec sa valeur CLIENT_FOUND_ROWS, j'ai essayé de me connecter sur mon serveur MySql en ODBC et ça règle mon problème.
    L'opération est plus rapide et la réponse ne concerne que le nombre de changements effectués.
    Il semblerait donc que le connecteur natif de windev pour MySql soit le fautif.

    A mettre donc en résolu.
     
    #10 kabeda, Jan 9, 2019
    Dernière édition par un modérateur: Jan 10, 2019
  • Partager cette page

    Chargement...