Transactions sous VB 6.0

Résolu
SenseiKakashi Messages postés 35 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 30 mars 2005 - 22 mars 2005 à 16:09
SenseiKakashi Messages postés 35 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 30 mars 2005 - 22 mars 2005 à 17:40
Salut Salut...

Bon, encore une petite question...

Je n'ai trouvé que des sujets sans réponse pour une question que je me pose...

Voilà, dans ma base, j'effectue un partionnement horizontal, c'est à dire que je transferts des lignes d'une table à une autre identique afin d'allégerla première table qui est fréuemment lue... Mais voilà, pour assurer ces transferts, j'aimerai utiliser les transactions... J'ai trouvé un script mais c'est pour VB.NET alors les objets n'exisent pas sous VB6.0...
Voilà ce que j'ai codé :

With sqlcmd
.ActiveConnection = Conn .CommandText " INSERT INTO HISTORIQUE ( num_action, bilan_action, jour_action, heure_action, jour_rea_action, heure_rea_action, comm_action, num_tache, num_rea ) VALUES ( SELECT num_action, " & bilan & ", jour_action, heure_action, '" & date_actuelle & "', '" & heure_actuelle & "', " & v_comm & ", num_tache, " & v_id & " FROM Action WHERE num_action " & validation.num.Caption & ") "
End With


' Début de la transaction
Conn.BeginTrans
' Selon les cas
' Si l'action est OK
If ok = True Then
' Le bilan est donc OK
bilan = True
If v_comm = "" Then
v_comm = " La tâche a été réalisé avec succés... "
End If
sqlcmd.Execute
If Not Conn.Errors Then
' La transaction peut-être confirmée
Conn.CommitTrans
Conn.Execute ("DELETE FROM Action WHERE num_action = " & validation.num.Caption & ";")
MsgBox " Transaction réalisée avec succès ! "
Else
Conn.RollbackTrans
MsgBox " Les opérations sur la base de données ont dû être abandonnées... ", vbInformation, "Echec"
End If
End If

If ko = True Then
bilan = False
If Len(comm) < 5 Then
' On vérifie que le nombre de caractère entrer dans une textbox est sup à 5
MsgBox " Veuillez écrire un commentaire ( au moins 5 caractères... )", vbInformation, "Texte Insufffisant"
Else
sqlcmd.Execute
If Not Conn.Errors Then
' La transaction peut-être confirmée
Conn.CommitTrans
Conn.Execute ("DELETE FROM Action WHERE num_action = " & validation.num.Caption & ";")
MsgBox " Transaction réalisée avec succès ! "
Else
Conn.RollbackTrans
MsgBox " Les opérations sur la base de données ont dû être abandonnées... ", vbInformation, "Echec"
End If
End If
End If

J'utilise donc Conn.BeginTrans, Conn.CommitTrans & Conn.RollbackTrans... Mais je ne sais pas si c'est la bonne solution...

Mais mon erreur vient de lorsque je test si la requête s'est bien executé... J'ai mis un If Not Conn.Errors mais je sais que ce n'est pas bon...

Un début de réponse serait donc de savoir comment tester l'execution d'une requete...

Ou un bon tuto sur les transactions sous VB 6.0 et BDD ACCESS, ça ferai aussi plaisir car je n'ai pas trouvé...

Voilà, n'hésitez pas à me dire les erreurs...

Merki !

++

C'est en forgeant qu'on devient forgeron...

2 réponses

stabe Messages postés 144 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 17 juin 2006
22 mars 2005 à 16:47
salut,

Si ta requête plante, alors ton programme VB plante.
Donc il te suffit de gérer les erreurs vb.

Dans l'exemple ci-dessous, si l'une quelconque des requetes plante, alors toutes sont annulées.

Sub MaFonction

on error goto gestionErr

conn.begintrans
conn.Execute requete1
conn.Execute requete2
conn.Execute requete3
...
conn.CommitTrans

exit sub

gestionErr :
conn.RollbackTrans
msgbox "Y'a eu un plantage quelque part, toutes les requetes ont été annulées", vbcritical

end sub

-- stabe --
3
SenseiKakashi Messages postés 35 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 30 mars 2005
22 mars 2005 à 17:40
Il suffisait d'y penser... lol

Merci beaucoup !

++

C'est en forgeant qu'on devient forgeron...
0
Rejoignez-nous