Bonjour,
Je souhaite modifier une donnée en Base de donnée, puis la relire par une autre application appelée par HttpInvoke. Le problème est de faire un Commit sur la transaction avant l'invoke.
XMLRAD 8
Bonjour,
Je souhaite modifier une donnée en Base de donnée, puis la relire par une autre application appelée par HttpInvoke. Le problème est de faire un Commit sur la transaction avant l'invoke.
XMLRAD 8
Dans la prochaine version d'XMLRAD, on pourra effectuer un Commit au moment de son choix lors du traitement du XMLGram (par description et non par code).
Jusqu'à présent, pour ce faire, on est obligé de prendre la main en code dans le BeforeInstruction de ton Invoke, ou bien dans le AfterInstruction de l'instruction qui le précède (le Invoke).
Voici un exemple en Delphi :
Il faut juste récupérer l'instance de la connexion DB telle que tu l'as nommée dans tes "Datasources", la commiter puis la relancer pour les éventuelles XMLInstructions suivantes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 var CurrDB: TDacDatabase; begin CurrDB := XMLCollection.GetDatabaseComponent('MyDatabase'); CurrDB.Commit; CurrDB.StartTransaction; end;
J'ai essayé le code précédent. Un "Rollback" fonctionne correctement mais le "Commit" reste sans effet.
Hello,
Tu as certainement commencé une autre transaction plus tôt. Vérifie l'empilement de tes transactions. Autrement tu peux faire un ForceCommit, mais attention aux "effets secondaires"
Michael
Je n'ai fait aucune transaction particulière et laisse XMLRAD gérer. Je pense qu'une seule transaction débute à l'exécution du service et se termine par un commit ou rollback si le service se termine correctement ou sur une exception.
D'ailleurs le Rollback provoque l'effet attendu.
Partager