Bonjour,
Finalement, j'ai fait du "bricolage"!
1. Je déclare une fonction UPD_NUMROWS dans mysql.
2. Je fait appel à cette fonction en wlangage et je récupères la valeur retournéeCode (Text):
BEGIN
UPDATE `fra_articles` SET `author_lie`=Pauthorlie WHERE `author` LIKE Pauthor;
RETURN ROW_COUNT();
END
ç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.Code (Text):
lareq="SELECT UPD_NUMROWS(Pauthorlie,Pauthor);"
SQLExec(lareq,"REQUP")
SQLAssocie("REQUP",sLaval)
SQLPremier("REQUP")
Info("La requête contient " +sLaval +" enregistrements.")
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.
-
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.
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 :
Je lance ensuite un SELECT ROW_COUNT();Code (Text):
Query OK, 3 row affected (2.91 sec)
Enregistrements correspondants: 5 Modifiés: 3 Warnings: 0
et la réponse est :
Je ne comprends pas la différence des valeurs de retour lorsque j'utilise windev.Code (Text):
+-------------+
| ROW_COUNT() |
+-------------+
| 3 |
+-------------+
3 row in set (0.00 sec)
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é surBonjour 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.