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

VBA Access Discussion :

besoin d'aide pour mise en place gestion d'erreur


Sujet :

VBA Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut besoin d'aide pour mise en place gestion d'erreur
    Bonjour,

    Dans ma base, j'ai un pb d'erreur qui me semble aléatoire. (cela me plante access).

    J'ai trouvé sur ce site un code pour la gestion d'erreur :
    http://allenbrowne.com/ser-23a.html

    J'ai crée la table à l'identique. J'ai copié-collé tout son code à l'identique.

    Mais lorsque ma base a plantée, je n'ai rien vu s'inscrire dans la table TLogError.

    Ai-je oublié qq chose à mettre dans ma procédure ?


    Voici le code de la fonction trouvée dans le lien indiqué :
    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
    55
    56
    57
    58
    59
    60
    Function LogError(ByVal lngErrNumber As Long, ByVal strErrDescription As String, _
        strCallingProc As String, Optional vParameters, Optional bShowUser As Boolean = True) As Boolean
    On Error GoTo Err_LogError
        ' Purpose: Generic error handler.
        ' Logs errors to table "tLogError".
        ' Arguments: lngErrNumber - value of Err.Number
        ' strErrDescription - value of Err.Description
        ' strCallingProc - name of sub|function that generated the error.
        ' vParameters - optional string: List of parameters to record.
        ' bShowUser - optional boolean: If False, suppresses display.
        ' Author: Allen Browne, allen@allenbrowne.com
     
        Dim strMsg As String      ' String for display in MsgBox
        Dim rst As DAO.Recordset  ' The tLogError table
     
        Select Case lngErrNumber
        Case 0
            Debug.Print strCallingProc & " called error 0."
        Case 2501                ' Cancelled
            'Do nothing.
        Case 3314, 2101, 2115    ' Can't save.
            If bShowUser Then
                strMsg = "Record cannot be saved at this time." & vbCrLf & _
                    "Complete the entry, or press <Esc> to undo."
                MsgBox strMsg, vbExclamation, strCallingProc
            End If
        Case Else
            If bShowUser Then
                strMsg = "Error " & lngErrNumber & ": " & strErrDescription
                MsgBox strMsg, vbExclamation, strCallingProc
            End If
            Set rst = CurrentDb.OpenRecordset("tLogError", , dbAppendOnly)
            rst.AddNew
                rst![ErrNumber] = lngErrNumber
                rst![ErrDescription] = Left$(strErrDescription, 255)
                rst![ErrDate] = Now()
                rst![CallingProc] = strCallingProc
                rst![UserName] = CurrentUser()
                rst![ShowUser] = bShowUser
                If Not IsMissing(vParameters) Then
                    rst![Parameters] = Left(vParameters, 255)
                End If
            rst.Update
            rst.Close
            LogError = True
        End Select
     
    Exit_LogError:
        Set rst = Nothing
        Exit Function
     
    Err_LogError:
        strMsg = "An unexpected situation arose in your program." & vbCrLf & _
            "Please write down the following details:" & vbCrLf & vbCrLf & _
            "Calling Proc: " & strCallingProc & vbCrLf & _
            "Error Number " & lngErrNumber & vbCrLf & strErrDescription & vbCrLf & vbCrLf & _
            "Unable to record because Error " & Err.Number & vbCrLf & Err.Description
        MsgBox strMsg, vbCritical, "LogError()"
        Resume Exit_LogError
    End Function
    Merci

  2. #2
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Bonjour,
    pour ma part, j'ajoute ce qui est en rouge dans le code ci-dessous
    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
    Sub NomFonction() 
     On error goto erreur
    
    
      '......
      'le code
      '.....
    
    
     Exit Sub
    erreur:
     Stop
     Resume
    End Sub
    Lorsqu'une erreur se produit, la fenêtre Visual Basic Editor s'affiche et marque le Stop.
    Il suffit de taper dans la fenêtre d'execution
    ?error
    pour afficher l'erreur puis d'avancer pas à pas dans le code avec la touche F8
    le Resume ramène le code sur la ligne qui a provoquée l'erreur
    il faut décortiquer le code pour savoir ce qui produit l'erreur

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut
    merci pour ta réponse.

    Mais ce qui m'interesse dans ce code, est que l'on stocke les erreurs. Donc j'aimerais pouvoir l'utiliser.

    Je me demande si j'ai bien compris comment l'appliquer car je ne comprends pas comment elle peut se déclencher dans une procédure ?

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Tout dépend ce que tu veux faire.
    C'est un vaste sujet à la fois complexe et simple.
    Une gestion d'erreur peut (doit) être centralisée pour gérer toutes les erreurs du projet. Elle peut être locale; Elle peut stopper la procédure locale ou le projet selon la façon dont tu rédiges ton code...

    Tu peux lire ces articles :
    http://warin.developpez.com/access/erreur/tutoriel1/
    et
    http://gilmir.developpez.com/tutoriels-vb6/tutoriel16/

    Argy

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/01/2010, 14h25
  2. Réponses: 0
    Dernier message: 09/10/2008, 14h45
  3. Besoin d'aide pour MCD de la gestion des SAV
    Par balolo dans le forum Schéma
    Réponses: 6
    Dernier message: 07/12/2007, 16h06
  4. Réponses: 2
    Dernier message: 20/09/2005, 15h10
  5. [CSS] Besoin d'aide pour mise en forme !
    Par TorF dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 19/03/2005, 19h28

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