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

Access Discussion :

Erreur 3167, comment la personnaliser ???


Sujet :

Access

  1. #1
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut Erreur 3167, comment la personnaliser ???
    Bonjour à tous ...

    J'ai un message qui vient lorsque je supprime un enregistrement dans un de mes formulaires.

    Je tiens à préciser que ce message vient seulement lorsque je veux supprimer un enregistrement qui est dans mon formulaire pour autant que j'ai ajouté une valeur dans le sous-formulaire. Si je supprime mon enregistrement et que je n'ai rien dans mon sous-formulaire alors je n'ai pas ce message qui vient à l'écran.

    En voici le print screen :



    En cliquant sur OK, le message disparaît et ma suppression s'exécute.

    En cliquant sur AIDE, voici ce qu'il me vient :


    L'enregistrement est supprimé. (Erreur 3167)
    Vous avez fait référence à un enregistrement que vous avez supprimé ou qu'un autre utilisateur, si l’environnement est multi-utilisateur, a supprimé. Passez à un autre enregistrement et recommencez l'opération.
    J'ai trouvé dans la FAQ ceci :
    http://access.developpez.com/faq/?pa...#ErrorMsgPerso

    que j'ai adapté comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Select Case Err.Number
     
        Case "3167" 
            MsgBox "L'enregistrement n'a pas été sauvegardé"
        Case Else
            MsgBox Err.Number & " " & Err.Description 
     
    End Select
    et pourtant mon erreur apparaît toujours ... Je ne comrpend pas vraiment comment la supprimer ... ... ou alors comment la modifier ... ...

    Si vous avez des idées, elles seront les bienvenues ...

    Merci de votre aide ...

    PS : J'ai déjà tout décocher dans : OUTIL / OPTIONS / MODIFIER-RECHERCHER

    et j'ai mis aussi cette ligne au début de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.SetWarnings False
    et celle ci en fin de mon code :

  2. #2
    Membre chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Tu as bien mis le :
    ?

  3. #3
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Non ...

    Mais j'ai modifié comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    On Error GoTo erreur
     
    erreur:
            Select Case Err.Number
     
               Case "3167"   'x est le numéro de l'erreur que vous voulez intercepter
                   MsgBox "L'enregistrement n'a pas été sauvegardé"
               Case Else
                   MsgBox Err.Number & " " & Err.Description  'pour les cas que vous n'aurez pas mentionnés.
     
            End Select
     
    Resume erreur
    mais cela ne fonctionne pas ...

    je n'ai jamais fait ceci peut être (voir surement) que je m'y prends mal ... ...

  4. #4
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    une petite question ?

    Tu l'a mis où ce code ?

  5. #5
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    slt,

    Err.Number est numérique :
    est donc plus approprié

    Sinon tu n'as pas dis où se passait l'erreur?

    Ton code sert à capturer les erreurs dans le code après le On Error Goto

    Si tu supprimes l'enregistrement via l'interface du formulaire il faut utiliser l'événement Sur Erreur du formulaire

  6. #6
    Membre chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Qu'est-ce qui ne marche pas ? Ton message s'affiche ? Le message d'erreur personnalise aussi ? Tous les messages s'affichent ? Qu'entends-tu par "ca ne marche pas ?".

  7. #7
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Alors en fait je l'ai mis sur Clic du bouton de fermeture du formulaire dans la partie où je fais mes tests lorsque l'utilisateur ne veut pas enregistrer les modifications.

    Je dois le mettre ailleurs ???


    Merci de votre aide ...

  8. #8
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Alors ...

    J'ai mit mon code comme vous pouvez le voir sur l'évènement : Sur erreur du formulaire

    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
    Private Sub Form_Error(DataErr As Integer, Response As Integer)
    On Error GoTo erreur
     
    erreur:
                Select Case Err.Number
     
                   Case 3167  
                       MsgBox "1L'enregistrement n'a pas été sauvegardé"
                   Case Else
                        MsgBox "2L'enregistrement n'a pas été sauvegardé"
                End Select
     
            Exit Sub
     
        Resume erreur
    End Sub
    Puis,

    En réponse à : Arkham46

    J'ai modifié le numéro de l'erreur comme tu me l'as dit ... pas de soucis ...


    En réponse à : Demco

    Qu'est-ce qui ne marche pas ?
    Mon erreur apparaît toujours

    Ton message s'affiche ?
    Non aucun de mes messages s'affiche ... il n'y a que l'erreur qui apparait

    Le message d'erreur personnalise aussi ?
    Et non ...

    Tous les messages s'affichent ?
    Non ...

    Qu'entends-tu par "ca ne marche pas ?".
    J'entends par là que mon message d'erreur apparait toujours ... ...

    Si vous avez des idées ... ... ... je prends volontier ...

    Merci de votre aide ...

  9. #9
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    slt,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form_Error(DataErr As Integer, Response As Integer)
      If DataErr = 3167 Then
            Response = acDataErrContinue 
            MsgBox "L'enregistrement n'a pas été sauvegardé"
      End If
    End Sub
    l'événement Form_Error est déjà une gestion d'erreur, il ne faut pas en rajouter une de plus.
    (cf l'aide de l'événement)

  10. #10
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Merci pour ta réponse ...

    Alors, j'ai coller le code que tu m'as soumis pour tester et ... ... cela ne fonctionne pas ... c'est à dire que j'ai toujours ce message qui vient ...


    Pour tester, j'ai mis un point d'arrêt de mon code sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Private Sub Form_Error(DataErr As Integer, Response As Integer)
    et ... le résultat fut que cet évènement ne s'exécute pas ...

    J'ai pensé à plusieurs chose :

    Lorsque ce message apparaît c'est "l'icone d'avertissement" qui apparaît et pourtant lorsque l'on clique sur AIDE cela signale que c'est une erreur ... est-ce que cela serait malgré tout un avertissement ... ... ???

    Merci de ton aide ...

  11. #11
    Membre averti Avatar de snoopy69
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    737
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 737
    Points : 395
    Points
    395
    Par défaut
    Voici un complément d'information ...

    Mon erreur se produit lorsque je supprime un enregistrement dans une de mes tables ... jusque là, vous le saviez déjà ...


    Maintenant voici ma procédure qui me permet de supprimer mon enregistrement (l'ordre de suppression est correcte d'après les liaisons entre les tables )

    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    Public Function fn_SuppressionEnCascade(var_PkMouvement As Variant)
     
    'Recordset
     
        'BASE DE DONNEES
        Dim base_donnee As DAO.Database
     
        'TB_DESTINATIONS
        Dim rst_MouvementDestination As DAO.Recordset
        Dim str_ReqMouvementDestination As String
     
        'TB_DETAILS
        Dim rst_MouvementDetails As DAO.Recordset
        Dim str_ReqMouvementDetails As String
     
        'TB_MOUVEMENTS
        Dim rst_Mouvement As DAO.Recordset
        Dim str_ReqMouvement As String
     
     
     'Déclaration pour les recordsets DESTINATIONS
            Set base_donnee = Application.CurrentDb
            Set rst_MouvementDestination = base_donnee.OpenRecordset("TB_DESTINATIONS")
            str_ReqMouvementDestination = ("SELECT * FROM TB_DESTINATIONS WHERE pk_fk_mouvement_destination LIKE '" & var_PkMouvement & "';")
            Set rst_MouvementDestination = base_donnee.OpenRecordset(str_ReqMouvementDestination, dbOpenDynaset)
     
     
            'On teste que le nombre d'enregistrement trouvé est plus grand que 0
            If rst_MouvementDestination.RecordCount > 0 Then
                rst_MouvementDestination.MoveLast
                rst_MouvementDestination.MoveFirst
     
                rst_MouvementDestination.Delete
     
                rst_MouvementDestination.MoveNext
            End If
     
        rst_MouvementDestination.Close
        Set rst_MouvementDestination = Nothing
     
     
     
     
        'Déclaration pour les recordsets MOUVEMENTS
        Set base_donnee = Application.CurrentDb
        Set rst_Mouvement = base_donnee.OpenRecordset("TB_MOUVEMENTS")
        str_ReqMouvement = ("SELECT * FROM TB_MOUVEMENTS WHERE pk_mouvement LIKE '" & var_PkMouvement & "';")
        Set rst_Mouvement = base_donnee.OpenRecordset(str_ReqMouvement, dbOpenDynaset)
     
        If rst_Mouvement.RecordCount > 0 Then
            rst_Mouvement.MoveLast
            rst_Mouvement.MoveFirst
     
            rst_Mouvement.Delete
     
            rst_Mouvement.MoveLast
     
        End If
     
        rst_Mouvement.Close
        Set rst_Mouvement = Nothing
     
     
    'Déclaration pour les recordsets DETAILS
        Set base_donnee = Application.CurrentDb
        Set rst_MouvementDetails = base_donnee.OpenRecordset("TB_DETAILS")
        str_ReqMouvementDetails = ("SELECT * FROM TB_DETAILS WHERE fk_mouvement LIKE '" & var_PkMouvement & "';")
        Set rst_MouvementDetails = base_donnee.OpenRecordset(str_ReqMouvementDetails, dbOpenDynaset)
     
        If rst_MouvementDetails.RecordCount > 0 Then
            rst_MouvementDetails.MoveLast
            rst_MouvementDetails.MoveFirst
     
            rst_MouvementDetails.Delete
     
            rst_MouvementDetails.MoveLast
     
        End If
     
        rst_MouvementDetails.Close
        Set rst_MouvementDetails = Nothing
     
    End Function
    J'ai recherché sur le site de Microsoft si cette erreur était référencée et je suis arrivé sur cette page :


    http://support.microsoft.com/kb/208799/fr

    Comme vous pouvez le voir, le mode de résolution c'est d'ajouter :
    dans la déclaration de mes recordsets ...

    C'est ce que j'ai fait mais je n'ai aucun résultat ... mon erreur apparait toujours ...

    PS : L'erreur se produit lorsque je supprime un enregistrement dans ma table TB_DESTINATIONS ...

    Des idées ???

    PS2: Je travail sur Access 2003

    PS3 : Mes tables ne sont pas liées pas couche ODBC mais j'ai 6 fichiers qui contienne les tables sur le réseau et 1 fichier d'application en local sur mon poste ...

Discussions similaires

  1. Erreurs, warnings, comment personnaliser l'affichage?
    Par Sunsawe dans le forum Visual C++
    Réponses: 2
    Dernier message: 01/12/2008, 12h19
  2. Erreur 3167 sur suppression d'un enregistrement
    Par moustika dans le forum Access
    Réponses: 6
    Dernier message: 25/09/2006, 17h41
  3. [Erreur] SQL1040N: comment proceder ?
    Par FzF dans le forum DB2
    Réponses: 3
    Dernier message: 12/04/2006, 09h39
  4. erreur C2084 : comment y remédier ?
    Par LMA dans le forum MFC
    Réponses: 12
    Dernier message: 15/03/2006, 09h42
  5. [TPageControl] Comment le personnaliser ?
    Par Neilos dans le forum Composants VCL
    Réponses: 11
    Dernier message: 20/01/2005, 23h52

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