IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Tester un update sans modifier les données de la base?


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 8
    Points : 12
    Points
    12
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    connexion.BeginTrans  
    connexion.CommitTrans  
    connexion.RollbackTrans

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 95
    Points : 133
    Points
    133
    Par défaut
    La classe ADODB comporte une méthode CancelUpdate...
    https://www.w3schools.com/asp/ado_ref_recordset.asp

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 8
    Points : 12
    Points
    12
    Par défaut
    @dysorthographie
    @oxedet

    Merci a vous 2 !

    Je vais m'en sortir avec ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Oracle] Comment utiliser la requête update et modifier les données si les champs sont modifiés
    Par roswina dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 01/06/2015, 10h01
  2. Réponses: 3
    Dernier message: 27/08/2010, 11h49
  3. Réponses: 1
    Dernier message: 11/03/2009, 11h52
  4. Réponses: 3
    Dernier message: 04/10/2007, 12h00
  5. Comment modifier les données d'une base
    Par anassyto dans le forum Access
    Réponses: 8
    Dernier message: 27/07/2006, 13h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo