PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WEBDEV 2024 → Problème d'annulation de transactions
Problème d'annulation de transactions
Iniciado por Fabien CRESSENT, 22,jun. 2020 17:16 - 1 respuesta
Miembro registrado
8 mensajes
Publicado el 22,junio 2020 - 17:16
Bonjour,

Je rencontre un comportement que je n'explique pas concernant la gestion des transactions.
J'ai une méthode gestionClient qui va insérer dans trois tables (client,adresse,log), si l'un des inserts dans client ou adresse se passe mal, je souhaite annuler la transaction, j'utilise alors les fonctions suivantes :
HTransactionDébut(Ecommerce, "CLIENT, ADRESSE") //Où Ecommerce est le nom de ma connexion
//CODE...
SI un controle passe pas ou si un insert échoue, je lance
HTransactionAnnule(Ecommerce)

Ce système fonctionne parfaitement, les transactions sont correctement annulées.

Par contre, une autre méthode gestionCommande, insère dans trois tables (COMMANDE, ARTICLE et log), j'utilise les mêmes fonctions windev pour gérer les transactions, cependant celles-ci ne fonctionnent pas, la méthode HTransactionAnnule retourne bien 1 mais lorsque l'insertion d'articles échoue à cause d'un contrôle, l'insertion de la commande effectuée juste avant n'est pas annulée. Seule la table LOG est capable d'être annulé dans ma méthode.
Etant donné que j'utilise la même manière de faire pour les deux méthodes, je n'explique pas cette différence de comportement, quelqu'un aurait-il un avis svp ?

Au vu du comportement, je soupçonne que la différence pourrait provenir de la définition des tables de données, il y aurait-il
des prérequis à ce niveau svp ?

Merci
Miembro registrado
1.144 mensajes
Popularité : +50 (142 votes)
Publicado el 23,junio 2020 - 09:03
Bonjour,
Selon votre description vous utilisez une boucle pour insérer plusieurs lignes et votre transaction se fait autant de fois dans la boucle. Si c'est le cas, le fonctionnement est normale.
Pour palier ce problème il faut plutôt opter par une requête SQL exécuté en une seule fois (ajout par lot). me semble-t-il.

--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net