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 :

Table sans doublon [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2012
    Messages : 178
    Points : 78
    Points
    78
    Par défaut Table sans doublon
    Bonjour,

    j'ai un formulaire qui me permet de réserver des plages horaires pour un employé (CIP) quelconque. Plusieurs plages semblables sont disponibles pour plusieurs employées mais un employé ne peut réserver plus d'une fois la même plage pour une même date. J'ai joins la table (démo) qui contient les plages ainsi que les champs qui sont sur le formulaire de saisie.

    merci de votre aide!
    Fichiers attachés Fichiers attachés

  2. #2
    Membre régulier
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 156
    Points : 110
    Points
    110
    Par défaut
    Je pense qu'il faudrait faire un left join, mais j'ai du mal à détecter le problème.

    Pourrais-tu être un peu plus spécifique stp?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2012
    Messages : 178
    Points : 78
    Points
    78
    Par défaut
    Merci pour le retour,

    En fait pour faire simple, il me faut un pop-up qui me préviendrait lorsqu'il y aurait saisie en doublon

    EX: Date: 2015-03-17, Début:10:30, Fin:10:45, CIP: AB3738
    Date: 2015-03-17, Début:10:30, Fin:10:45, CIP: AB3738 (Doublon). Un Pop-up doit s'afficher pour empêcher cette 2ièm saisie.

    Désolé je ne peut être plus explicite...

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir Rickhq,

    Pourquoi dans ce cas tu ne définis pas tes 4 champ comme clés primaire multiple?

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2012
    Messages : 178
    Points : 78
    Points
    78
    Par défaut
    Merci madefemere,

    J'ai bien essayé et cherché là dessus, mais je n'y arrive pas, compte tenu de la répétition de certaines données dans les champs (date, Début, Fin, CIP ) la clé primaire ne peut être y être mise dans la table en question.

  6. #6
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Rickhq?

    Ce que te dis Mandresy c'est bien de créer une clé unique composite qui te garantira l'unicité sur tes 4 champs (date, Début, Fin, CIP )

    Nom : Capture.JPG
Affichages : 124
Taille : 41,4 Ko
    Nom : Capture2.JPG
Affichages : 119
Taille : 49,9 Ko

    Si il s'agit cependant de valider le non chevauchement des plages horaires, le contrôle sera effectué par requête (les exemples fournis par Jeannot ou Denis et leurs gestions de Plannings fourmillent d'exemples)

    Tu trouveras ici des exemples :

    http://access.developpez.com/cours/?...m#formplanning

    Jimbolion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2012
    Messages : 178
    Points : 78
    Points
    78
    Par défaut
    Yessss! C'est exactement ce qu'il me fallait! Question: Y a t'il moyen de personnaliser le pop-pup ex: "Cette plage a déjà été sélectionnée pour ce représentant!"

    Merci merci merci!!

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2012
    Messages : 178
    Points : 78
    Points
    78
    Par défaut
    J'obtiens ce message d'erreur quand un doublon est sélectionné...
    Nom : Erreur 3022.png
Affichages : 115
Taille : 44,4 Ko

  9. #9
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Rickhq,

    si ton erreur est géré par du code VBA, mettre en place alors une gestion d'erreur (on error goto) et en catchant l'erreur 3022 afficher le message souhaité.

    Jimbolion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2012
    Messages : 178
    Points : 78
    Points
    78
    Par défaut
    En fait il y 2 messages d'erreur identiques causé par ces deux codes;
    Nom : 2015-03-19 10-06-49.png
Affichages : 105
Taille : 14,2 KoNom : 2015-03-19 10-07-50.png
Affichages : 106
Taille : 9,1 Ko

  11. #11
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Donc il faut créer une gestion d'erreurs dans tes 2 modules :
    Juste après la déclaration du module, mettre ON ERROR GOTO GESTERROR ' Aller à la ligne GESTERROR quand une erreur se produit. Et à partir de là traiter les erreurs possibles. Normalement cette gestion d'erreur va se trouver à la fin de ta procédure avant le End Sub. Du genre :

    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 Réservé_AfterUpDate()
    ON ERROR GOTO GESTERROR
    'Tu as tes codes...
    ...
     
    ...
    GESTERROR : 
    Select Case Err.Number
        Case 3022, 0
            MsgBox " Cette plage est déjà utilisée !"
            Me.Undo
        Case Else
            MsgBox "Erreur N°" & Err.Number & vbCrLf & Err.Description
    End Select
     
    End Sub
    Et la même chose à injecter dans le code pour Private sub réservé_Click()

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2012
    Messages : 178
    Points : 78
    Points
    78
    Par défaut
    Bonjour madefemere , Merci pour le retour.

    Bon on se rapproche mais le pop-pup apparait 2 fois et cela même si il ne s'agit pas de doublon...

    Nom : Pop-up.png
Affichages : 98
Taille : 13,6 Ko

    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
    Private Sub Réservé_AfterUpdate()
    On Error GoTo GESTERROR
     
    CIP = [Texte22]
    Representant = [Texte24]
    Equipe = [Texte27]
    CrééLe = Now
    CreePar = Environ("Nom")
     
    If Me.Réservé.Value = False Then
    CIP = ""
    Representant = ""
    Equipe = ""
    CrééLe = ""
    Memo = ""
    Salle = ""
    CreePar = ""
    Coaching = ""
    MiseNiveau = ""
    AideTechnique = ""
    Diffuseur = ""
    AjoutéàOutLook = False
    End If
     
    DoCmd.RunCommand acCmdRefresh
    GESTERROR:
    Select Case Err.Number
        Case 3022, 0
            MsgBox " Cette plage est déjà utilisée !"
            Me.Undo
        Case Else
            MsgBox "Erreur N°" & Err.Number & vbCrLf & Err.Description
    End Select
     
     
    End Sub
    et

    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
    Private Sub Réservé_Click()
    On Error GoTo GESTERROR
    If IsNull(Me.Texte30) Or Me.Texte30 = "" Or Me.Texte30 = " " Then
            MsgBox "Vous devez sélectionner un CIP", vbInformation
            Réservé = False
            Réservé.Undo
    End If
     
    DoCmd.RunCommand acCmdRefresh
     
    GESTERROR:
    Select Case Err.Number
        Case 3022, 0
            MsgBox " Cette plage est déjà utilisée !"
            Me.Undo
        Case Else
            MsgBox "Erreur N°" & Err.Number & vbCrLf & Err.Description
    End Select
    End Sub
    Mille merci pour ton aide!

  13. #13
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Rickhq

    mettre un exit sub après DoCmd.RunCommand acCmdRefresh

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DoCmd.RunCommand acCmdRefresh
    Exit Sub
    GESTERROR:
    Select Case Err.Number
        Case 3022, 0
            MsgBox " Cette plage est déjà utilisée !"
            Me.Undo
        Case Else
            MsgBox "Erreur N°" & Err.Number & vbCrLf & Err.Description
    End Select
    End Sub
    jimbolion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2012
    Messages : 178
    Points : 78
    Points
    78
    Par défaut
    Gros merci jimbolion ,

    Avec çà j'ai tout ce qu'il me fallait!

    Au plaisir!

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

Discussions similaires

  1. union de deux tables sans doublons
    Par saou85 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 03/09/2010, 16h20
  2. Fusion de table sans doublon
    Par dfrthreads dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 10/08/2010, 11h55
  3. Charger une table sans doublons
    Par moheissenger dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 23/02/2010, 18h16
  4. Ajout dans une table sans doublon
    Par Cbonniot dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/05/2009, 10h31
  5. Table sans doublon
    Par juliojc13 dans le forum IHM
    Réponses: 6
    Dernier message: 18/06/2007, 19h53

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