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 :

Limiter les doublons sur un champ [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Par défaut Limiter les doublons sur un champ
    Bonjour,

    J'ai crée un formulaire, à¸partir d'une table...j'ai un champ ( pas la clé primaire et indexé avec doublons) , que j'aimerais limiter en terme de doublon, exemple 4 doublon permis, et refuse les prochain doublons. Je ne sais pas si c'est compréhensible, mais je vais donner un petit exemple...

    Champ 1 = clé primaire
    Champ 2 = doublon permis
    Champ 3 = doublon permis ( maximum x quantité )

    Comment pourrais je faire ?

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Ce que tu demandes n'est pas possible, peux-tu donner plus de détails, car si tu es obligé de faire cela, c'est sûrement dut à un problème de conception.

    Philippe

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Par défaut
    Bonjour,

    Je prends pour acquis que cela ne soit pas possible, comme tu me le dis, et accepte ton offre d'élaborer un peu plus...pour ce projet...

    J'ai une liste de membre ayant droit à certaines activités....( nombre de membre limités ), sur l'enregistrement que je souhaite faire, il y a le membre et l'activité choisit....si cette activité a été son nombre maximum d'inscription, alors l'inscription ne pourrait se faire.....

    Est ce plus compréhensible ainsi.....ou bien, il y aurait il un autre moyen, sans pour autant créer une nouvelle table, pour chaque activité ( car il y en a bcp )...
    Merci

  4. #4
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 324
    Par défaut
    Un petit exemple visuel serait parfait. Sinon, l'inscription se fait-elle par le biais d'un formulaire?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Par défaut
    Bonjour,

    Oui, effectivement, la saisie se ferait sur le formulaire.

    J'ai trouvé ce bout de code, avec la fonction DCOUNT....je vais l'essayer...est ce que l'astérique correspond au nom du champ ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    Private Sub Form_BeforeUpdate(Cancel As Integer)
    if dcount("*","tatable")>= 10 then
    msgbox "blabla"
    cancel = true
    end if
    End Sub
    Merci

  6. #6
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 324
    Par défaut
    En fait pour Dcount, le premier argument n'a pas vraiment d'importance dans la mesure où tu vas obtenir le nombre d'enregistrements, qu'il y a dans ta table "tatable". L'idée du Dcount est la bonne, sauf que dans ton cas il faut ajouter une condition liée à l'activité. Avec la syntaxe que tu propose, tu vas comparer si le nombre total d'enregistrements de ta table "tatable" est supérieur ou égal à 10. Il faudrait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dcount("*","tatable","activité= 'sport'")>10

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Par défaut
    Citation Envoyé par Psychopathe Voir le message
    En fait pour Dcount, le premier argument n'a pas vraiment d'importance dans la mesure où tu vas obtenir le nombre d'enregistrements, qu'il y a dans ta table "tatable". L'idée du Dcount est la bonne, sauf que dans ton cas il faut ajouter une condition liée à l'activité. Avec la syntaxe que tu propose, tu vas comparer si le nombre total d'enregistrements de ta table "tatable" est supérieur ou égal à 10. Il faudrait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dcount("*","tatable","activité= 'sport'")>10
    Bonjour,

    Cela ne marche pas....il marque une erreur sur la première ligne....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    If DCount("*", "Inscription", "Activité = '1' ") > 3 Then
    MsgBox "blabla"
    Cancel = True
     
    End If
    Merci

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour

    De quel type est la donnée Activité ?

    Pas de quotes pour des chiffres.

    Philippe

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Par défaut
    Bonjour,

    Je n'ai plus de message d'erreur, par contre, cette procédure fonctionne et ce même si l'activité n'est pas complète....en fait, elle fonctionne en tout temps....c,est comme si elle ne prenait pas le critère activité = 1....

    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)
     
    If DCount("*", "Inscription", "Activité = 1 ") > 3 Then
    MsgBox "Cette activité est complète..."
    DoCmd.Close
    End If
     
     
    End Sub

  10. #10
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 324
    Par défaut
    Test après le If Then pour voir quel résultat est renvoyé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    If DCount("*", "Inscription", "Activité = 1 ") > 3 Then
    MsgBox DCount("*", "Inscription", "Activité = 1 ")

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Par défaut
    Citation Envoyé par Psychopathe Voir le message
    Test après le If Then pour voir quel résultat est renvoyé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    If DCount("*", "Inscription", "Activité = 1 ") > 3 Then
    MsgBox DCount("*", "Inscription", "Activité = 1 ")
    Bonjour,

    Cela me donnait 4, alors, c'est cool....maintenant, pour les autres, c'était normal, car il prenait en compte que le critère activité 1, cela cause une légère problématique, peut on changer ce code :

    le 1 par le nom du champ ( Texte17) ? Si oui, faut il qu'il soit entre guillemet ou entre parenthèse ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    If DCount("*", "Inscription", "Activité = 1 ")
    Par ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    If DCount("*", "Inscription", "Activité = "Texte17" ")
    Pour moi, tout est nickel, il ne reste que ce petit détais à corriger.

    Merci...

  12. #12
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 324
    Par défaut
    Non car le type du champ activité reste numérique:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If DCount("*", "Inscription", "Activité = " & Me.Texte17)

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Par défaut
    Bonjour,

    Je vais tager RÉSOLU....voici le code que j'utilise, et cela semble très bien fonctionner....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If DCount("*", "Inscription", "Activité = [Texte17] ") >= 4 Then
    MsgBox "Cette activité est complète..."
    DoCmd.Close

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Par défaut
    Citation Envoyé par sameros Voir le message
    Bonjour,

    Je vais tager RÉSOLU....voici le code que j'utilise, et cela semble très bien fonctionner....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If DCount("*", "Inscription", "Activité = [Texte17] ") >= 4 Then
    MsgBox "Cette activité est complète..."
    DoCmd.Close
    Mes excuses, j'ai omis de mentionner que le champ activité a été en modifié en champ texte...

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

Discussions similaires

  1. [AC-2007] Eliminer les doublons sur 2 champs
    Par tibofo dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 03/10/2011, 20h05
  2. comment chercher les doublons sur deux champs (ou plus)
    Par alili mostafa dans le forum Bases de données
    Réponses: 4
    Dernier message: 31/05/2010, 20h09
  3. Autoriser les doublons sur un champ
    Par marco_fot_hxc dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 29/04/2008, 10h40
  4. Eviter les doublons sur un champ SQL Serveur 2005
    Par crashyear dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/12/2006, 09h02
  5. [Access] supprimer les doublons sur deux champs
    Par nini94 dans le forum Langage SQL
    Réponses: 15
    Dernier message: 13/10/2006, 12h41

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