Problème de Transaction Sql Server

arnaudlamy72 Messages postés 3 Date d'inscription jeudi 1 avril 2004 Statut Membre Dernière intervention 1 avril 2004 - 1 avril 2004 à 15:49
cs_starfighter Messages postés 90 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 28 février 2005 - 1 avril 2004 à 16:52
Bonjour,

Je suis actuellement en train de développer un programme de gestion d'achats.
Lorsque je lance une récap de fin de mois, en faisant un select sur une table, parfois ce message apparait:

La transaction (processus ID = #17) a été bloquée par un autre processus et a été choisie comme victime. Relancez la transaction..

J'aimerais savoir, comment récuperer l'erreur et relancer la transaction sans planter l'application.

Merci d'avance.
Cordialement.

5 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
1 avril 2004 à 15:55
Private Sub Toto()

...
On Error Goto ErrHdlr
' Lancement de la requete
On error goto 0
...
Exit Sub

ErrHdlr :
  ' Code pour relancer la requete
End Sub


Christophe R.
0
arnaudlamy72 Messages postés 3 Date d'inscription jeudi 1 avril 2004 Statut Membre Dernière intervention 1 avril 2004
1 avril 2004 à 15:59
Bonne idée, mais malgré tout 2 problèmes:

le 1er problème est qu'il faut que je continue le processus de récap, c'est a dire continuer le deroulement du programme.

le second est que cela peux arriver sur des requetes differentes.

Merci pour ton aide.

Cordialement
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
1 avril 2004 à 16:18
Tu risques d'avoir du mal a continuer ta récap si tu n'obtiens pas tes chiffres de ta requete non ? ou alors je comprend pas bien ce que tu veux obtenir ?
Pour traiter X requetes, utiliser X fois la meme technique ! Ou mieux : Faire une sub qui ne fait que lancer une requete dont tu transmet le code SQL en paramètre de ta sub !
Comme cela, tu n'as qu'un seul Error Handler à faire, dans cette sus-nommée sub

Christophe R.
0
arnaudlamy72 Messages postés 3 Date d'inscription jeudi 1 avril 2004 Statut Membre Dernière intervention 1 avril 2004
1 avril 2004 à 16:25
En fait, il faut simplement relancer la requete pour obtenir les chiffres (le temps que les autres utilisateurs n'utilise plus l'enregistrement)
Et c'est cela que je ne vois pas comment faire...

Cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_starfighter Messages postés 90 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 28 février 2005
1 avril 2004 à 16:52
salut,

Do while ExecRequete()=Faux

loop

Avec la gestion d'erreur dans la fonction Execrequete

Mais c'est vraiment du code pas très beau.

Ta requete est lancer par tes soins?
ou est ce automatique, un utilisateur bloque la base lorsqu'il travail dessus?
0
Rejoignez-nous