Tester un update sans modifier les données de la base?
Bonjour,
Je n'arrive pas a trouver la réponse sur le net ni sur ce forum et j'aurai donc besoin de votre aide SVP
J'ai une macro pour mettre a jour des informations sur des articles dans une base oracle.
N'étant pas pro des macro j'utilise sans doute des méthodes qui feront hurler plus d'un puriste mais bon ça fonctionne.
le problème?: justement .... ça fonctionne!!
Je m'explique: dans un tableau les utilisateurs remplissent une liste d'article avec certaines informations afin de les mettre jour dans notre base oracle. Ce que je voudrai faire c'est pour toute la liste de requêtes de mise a jour tester tout d'abord ces requêtes et si l'update entraîne une violation de nos paramètres annuler l'update.
voici une partie du code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
Sub prix()
Dim oConn As ADODB.Connection
Dim Rst As ADODB.Recordset
'Création de l'objet connexion
Set oConn = New ADODB.Connection
oConn.ConnectionString = gstrConnGMAO
'Ouverture de la connexion
oConn.Open
oConn.CommandTimeout = 0
If Err.Number <> 0 Then MsgBox "Problème de connexion": Exit Sub
[...suite macro]
For i = Ligne To Fin
For j = 16 To 27
Requete = Cells(i, j).Value
If Requete <> "" Then
Set Rst = oConn.Execute(Requete, MAJ)
If MAJ > 1 Then
nb_error = True
Open (chemin & "\" & fichier & extension) For Append As #2
Print #2, "Ligne " & i & " PDR: " & Article & " la Maj concerne " & MAJ & "couple PDR-Fournisseur: ERREUR (une Maj ne peut concerner que 1 couple PDR fournisseur)"
Close #2
Set Rst = oConn.Execute("rollback")
ElseIf MAJ = 0 Then
nb_error = True
Open (chemin & "\" & fichier & extension) For Append As #2
Print #2, "Ligne " & i & " PDR: " & Article & " aucune mise a jour: ERREUR sur le couple PDR-Fournisseur: " & Fournisseur & " ne fournit pas cette PDR"
Close #2
Set Rst = oConn.Execute("rollback")
ElseIf Err.Number <> 0 Then
nb_error = True
Open (chemin & "\" & fichier & extension) For Append As #2
Print #2, "Erreur SQL dans la requete " & Err.Description
Close #2
Set Rst = oConn.Execute("rollback")
Err.Number = 0
End If
End If
Next
Next
[suite macro]
end sub |
En testant ma macro je me suis rendu compte que dès que je faisais un update le commit est induit ce qui ne m'arrange pas.
Y aurait il un moyen en vba de "tester" les updates, et si cela ne convient pas annuler ces requêtes afin d'avertir l'utilisateurs qu'il fait une ou plusieurs erreurs.
J'espère avoir été suffisamment clair :)
Merci par avance