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 :

Récupérer une erreur (doublons) sur ajout dans un form


Sujet :

Access

  1. #1
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 336
    Points : 19 572
    Points
    19 572
    Billets dans le blog
    65
    Par défaut Récupérer une erreur (doublons) sur ajout dans un form
    Rebonjour,

    Voila j'ai un form lié à une table client (par ex) dont le nom du client est une clé primaire.

    Or si j'ajoute un client qui existe déja dans ma table il se produit une erreur 3022 (doublons..) accompagné d'une boite de dialogue avec tout un charabia.

    Or je souhaiterai récupérer cette erreur pour y mettre à la place juste le message "Le nom de votre client existe déja !".

    Autre précision je veux que ce message apparaisse si je ferme, si je passe à un nouvelle enregistrement etc..(au moment de la maj de l'enrg)

    Et surtout je ne veux pas contourner le problème avec un bouton de commande du style:

    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
    Private Sub Command1_Click()
     
    On Error GoTo ErrLogo
     
    Me.Refresh
     
    FinErrLogo:
    Exit Sub
    ErrLogo:
     
        If Err = 3022 Then
        MsgBox ("Le nom de votre client existe déja !")
        End If
     
    End Sub
    Ou encore pas du style:

    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
    Private Sub Boutonclose_Click()
    On Error GoTo Err_Command5_Click
     
     
        Me.Refresh
        DoCmd.Close
     
    Exit_Command5_Click:
        Exit Sub
     
    Err_Command5_Click:
     
        If Err = 3022 Then
        MsgBox ("Le nom de votre client existe déja !")
        End If
     
    End Sub

    Merci d'avance,

    Denis
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Le même code mais sur l'évenement beforeUpdate du formulaire ...

  3. #3
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 336
    Points : 19 572
    Points
    19 572
    Billets dans le blog
    65
    Par défaut
    Désolé Tofalu,

    ça ne marche pas j'ai toujours la fameuse boite de dialogue Erreur 3022 avec le charabia qui s'en suit.

    Je reprécise ma demande:

    Je souhaite en mode ajout (new record), après avoir saisi mon enrg et mon client dont le nom existe déja, si alors je ferme mon formulaire ou si je passe à un nouvelle enregistrement il me signale que le client existe déja ! (au lieu de la boite doublons)

    Je précise que mon formulaire n'a pas de bouton de commande pour fermer ou pour passer à un enrg suivant (j'utilise pour cela les boutons de navigations Access et la petite croix en haut à droite pour fermer).

    Je sais qu'il existe une autre solution consistant à tester sur le Before UpDate du nom du client pour vérifier si le nom existe déja dans la table:
    Du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Not isnull(dlookup("NomCli","TableClient", "NomCli = '" & Me.NomCli & "'") then 
    MsgBox("Le nom du client existe déja !"
    End If

    Mais je ne souhaite pas de cette solution

    Alors merci pour vos contributions
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Normalement ça devrait fonctionner ... montre voir ton code sur l'evenement beforeUpdate

  5. #5
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 336
    Points : 19 572
    Points
    19 572
    Billets dans le blog
    65
    Par défaut
    le voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Form_BeforeUpdate(Cancel As Integer)
    On Error GoTo ErrLogo
     
    Me.Refresh
     
    FinErrLogo:
    Exit Sub
    ErrLogo:
     
        If Err = 3022 Then
        MsgBox ("Le nom de votre client existe déja !")
        End If
     
    End Sub
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  6. #6
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    tu as essayé sans le refresh ? Et c'est err.number=3022 ... pas err tout court

    A moins que la propriété par défaut de err soit number

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 336
    Points : 19 572
    Points
    19 572
    Billets dans le blog
    65
    Par défaut
    Oui en fait:

    Le code suivant sur 1 bouton de commande fonctionne très bien:

    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
    Private Sub Command1_Click() 
     
    On Error GoTo ErrLogo 
     
    Me.Refresh 
     
    FinErrLogo: 
    Exit Sub 
    ErrLogo: 
     
        If Err = 3022 Then 
        MsgBox ("Le nom de votre client existe déja !") 
        End If 
     
    End Sub
    Quang je saisis un doublon il m'indique sur Me.Refresh
    le message "Le nom de votre client existe déja !"

    Il reconnait l'erreur !

    Mais sur BeforeUpdate du form il ne reconnait rien même sans le Me.Refresh et avec le Err.Number:
    en plus le boite doublons avec charabia s'affiche toujours !

    J'ai l'impression qu'on ne peut contourner le problème qu'en passant par des boutons de navigations et de fermeture.

    Ca m'ennuis car je n'ai pas envie de masquer la petite croix en haut à gauche ni les boutons de naviquations Access
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  8. #8
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Et oui, mais nulle part tu annules la mise à jour ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Form_BeforeUpdate(Cancel As Integer)
    On Error GoTo ErrLogo
     
    Me.Refresh
    Exit Sub
    ErrLogo:
        If Err = 3022 Then
        MsgBox ("Le nom de votre client existe déja !")
        Cancel=True
        End If
    End Sub
    J'ai quand même un sérieux doute sur le me.refresh

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 336
    Points : 19 572
    Points
    19 572
    Billets dans le blog
    65
    Par défaut
    C'est bon Tofalu, je crois avoir trouvé !

    Sur l'évènement erreur de mon form je mets:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Form_Error(DataErr As Integer, Response As Integer)
     
        If DataErr = 3022 Then
        MsgBox ("Le nom de votre client existe déja !")
        Response = acDataErrContinue
        End If
     
     
    End Sub
    Ce qui sur doublon affiche le message "Le nom de votre client existe déja !"

    puis grace au acDataErrContinue:

    Ignore l'erreur et continue sans afficher le message d'erreur de microsoft Access (à savoir la boite Access avec son charabia..)


    @+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/05/2014, 12h38
  2. [XL-2003] Récupérer une valeur calculée sur un sheet pour le renvoyer dans une listbox
    Par Thierry2B dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/01/2011, 09h55
  3. [C#] Récupérer une erreur OleDb
    Par iDaaX dans le forum Accès aux données
    Réponses: 2
    Dernier message: 10/11/2005, 16h28
  4. Recupérer une erreur d'un batch dans un vbs
    Par Pitbull7 dans le forum Windows
    Réponses: 1
    Dernier message: 06/10/2005, 21h10
  5. Réponses: 4
    Dernier message: 05/10/2005, 18h19

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