|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() François Développeur informatique Inscription : janvier 2010 Messages : 64 ![]() |
Bonjour,
Je suis confronté depuis le début de la journée à une erreur que je ne parviens pas à résoudre. Cette erreur se déclenche lorsque j'essaie de valider ou d'annuler une transaction précédemment initiée. Celà se produit partout dans mon projet, et surtout, ça se produit dans des procédures qui sont validées depuis longtemps et n'on subit aucune modification depuis. Lorsque l'exécution atteint une instruction "CommitTrans" ou "RollBackTrans" une erreur "Aucune transaction n'est activée" (-2147168242) se déclenche. Mon projet (.ADP 2010) est associé à une base de données SQL server 2008 Express. La transaction et les commandes de manipulation des données ADO utilisent un pointeur sur la connexion du projet (voir exemple de code). J'ai travaillé ces derniers temps sur l'élaboration de procédures stockées utilisant elles-mêmes des transactions qui m'ont amené à utiliser l'option "SET XACT_ABORT" sans doute un peu inconsidérément puisque maintenant je ne sais pas quel est l'état actuel de cette option, sa portée ni son éventuelle implication dans le "gros" problème auquel je suis confronté côté client ADO. Est-ce que quelqu'un pourrait me fournir des informations un peu plus claires que celles fournies par l'aide en ligne de SQL server sur cette option, le moyen de connaitre son état courant et son influence sur les transaction ouvertes par un client ADO ? Voici un exemple de code qui provoque l'erreur : Code :
|
||
|
|
00
|
|
|
#2 |
|
Nouveau Membre du Club
![]() François Développeur informatique Inscription : janvier 2010 Messages : 64 ![]() |
Bonjour,
Je suis parti sur une fausse piste hier dans mon ouverture de discussion en orientant mon raisonnement vers un éventuel positionnement de l'option XACT_ABORT. En effet, j'ai utilisé ce matin une version compilée (.ade) de l'application (runtime access 2010) datant d'une quinzainie de jours pour y effectuer le même traitement sur la même base et là tout se passe bien : les transactions sont validées sans erreur. Puis j'ai compilé le projet actuel fauteur de troubles pour générer un .ade que j'ai utilisé dans le même environnement (runtime Access 2010) et sur la même base SQL : les transactions échouent ! J'ai vérifié sur plusieurs phases du programme utilisant des transactions et toutes échouent avec le même message. Entre l'application qui fonctionne et le projet actuel il y a eu relativement peu de travaux: complément du menu backstage, ajout de 2 nouveaux formulaires. Pas de modification particulière de l'environement ni de la connexion. Quelqu'un a-t-il une idée sur une piste à suivre ?
|
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() François Développeur informatique Inscription : janvier 2010 Messages : 64 ![]() |
Toute mes excuses à celui qui aura commencé à agiter ses méninges à la lecture du problème exposé : il s'agit d'une simple négligence de ma part + un mensonge car j'indique sur la réponse précédente que je n'ai pas changé le mode de connexion et c'est faux:
je ne réfère pas directement l'expression CurrentProject.Connection mais une variable de type ADODB.Connexion déclarée = CurrentProject.Connection. Hors cette variable - qui plus précisément est une propriété globale - est réaffectée si elle se trouve être différente de CurrentProject.Connection ( if not MaVariable is CurrentProject.Connection then) et il s'avère qu'elle n'est jamais égale! Donc la variable est renouvellée à chaque invocation et de fait, elle perd ses transactions courantes. J'ai modifié le code pour comparer les propriétés .connectionString plutot que les objets et tout est rentré dans l'ordre. Peut-être cette expérience servira-t-elle à quelqu'un, j'en tire deux conclusions :
![]() PS: je ne vois pas comment indiquer que cette discussion est résolue... |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Depite,
Voici un auto-dépannage effectué de main de maître !... Sinon, pour répondre à ton PS, va dans ton dernier message (bouton "Editer") et appuies sur le bouton "Résolu".
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com