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

Modélisation Discussion :

Condition sur 2 champs d'une même table pour éviter des doublons


Sujet :

Modélisation

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2009
    Messages : 59
    Points : 44
    Points
    44
    Par défaut Condition sur 2 champs d'une même table pour éviter des doublons
    Bonjour,

    Je pense que mon problème est assez simple et probablement connu.

    Pour faire simple, nous avons une table "commande" et une table "client". Voici les champs :

    Table commande :
    - Commande ID
    - Numéro de commande
    - Client (liste de choix)
    - Date commande

    Table Client :
    - Client ID
    - Nom Client

    J'ai un formulaire "commande" qui me permet de rentrer toutes les informations. Partons du principe que nous avons 2 clients : A et B.
    Il faut savoir que les numéros de commandes ne sont uniques que par client.
    Je ne peux évidement pas avoir la commande 1000 deux fois pour le client A.
    Par contre je peux avoir la commande 1000 pour le client A et la commande 1000 pour le client B (raison pour laquelle dans la table commande il y a un "ID" généré automatiquement par Access).

    Le problème que je viens de rencontrer est que certaines personnes ne font pas attention et créent 2 fois la même commande pour un client.
    Je me retrouve donc parfois avec 2 commande numéro 1000 pour le client A.

    J'aimerai savoir comment mettre une condition sur cette table ou formulaire pour éviter les doublons de commande pour le même client.

    Si la commande numéro 1000 existe déjà pour le client A, il est impossible d'en créer une deuxième.

    Merci.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 56
    Points : 67
    Points
    67
    Par défaut
    Bonjour,

    Pour moi, il y a plusieurs solutions :
    - si ton n° est au format numérique, tu peux dans ton formulaire de saisie le bloquer à la saisie et directement le proposer. Tu récupères dans ta table la dernière commande et tu ajoutes 1. Ainsi, l'utilisateur n'a plus le choix

    - tu peux aussi vérifier avant de valider la commande si le n° n'existe pas dans la table. Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If isnull(dlookup........)
    .

  3. #3
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 604
    Points : 56 720
    Points
    56 720
    Billets dans le blog
    40
    Par défaut
    bonjour,

    Citation Envoyé par btks59
    ...pour éviter les doublons de commande pour le même client
    Au niveau de la table, on peut déjà rajouter un index avec la priorité "Unique" sur le couple (NumeroCommande,client)

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2009
    Messages : 59
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par jcdenton057 Voir le message
    Bonjour,
    Pour moi, il y a plusieurs solutions :
    - si ton n° est au format numérique, tu peux dans ton formulaire de saisie le bloquer à la saisie et directement le proposer. Tu récupères dans ta table la dernière commande et tu ajoutes 1. Ainsi, l'utilisateur n'a plus le choix
    [/code].
    Je ne comprends pas très bien le "récupérer dans la table la dernière commande et rajouter 1".
    Je pense également que créer une liste de choix pour des numéros de commande ne sera pas du tout pratique (plus de 1000 par années).

    Citation Envoyé par jcdenton057 Voir le message
    - tu peux aussi vérifier avant de valider la commande si le n° n'existe pas dans la table. Ex: [code]If isnull(dlookup........)
    Ne pas oublier que ce numéro de commande n'est pas réellement uniquement, il est unique seulement associé au nom du client. Je peux avoir plusieurs fois la commande numéro 1000 (autant que le nombre de clients).


    Citation Envoyé par f-leb Voir le message
    bonjour,
    Au niveau de la table, on peut déjà rajouter un index avec la priorité "Unique" sur le couple (NumeroCommande,client)
    La création d'index n'est pas réservé pour effectuer des recherches plus rapides ?
    Peux-tu me guider pour créer un index de ce genre stp ? Je n'ai aucune connaissance pour ça.

    Merci pour vos réponses.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Indépendant développeur et formateur
    Inscrit en
    Octobre 2007
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant développeur et formateur
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 036
    Points : 1 598
    Points
    1 598
    Par défaut
    Hello
    Je ne sais pas si je suis dans l'orthodoxie mais dans ce cas j'utilise une clef double sur Numéro_de_Commande et Clients et dans ce cas Commande_ID ne sert qu'à faire des liaisons propres, notamment avec le détail_commande
    -------------------Simplifi----------comme si tout était simple--------

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 604
    Points : 56 720
    Points
    56 720
    Billets dans le blog
    40
    Par défaut
    bonjour,

    pour créer un index multichamps:

    en mode création de la table Commande, tu cliques sur le bouton "Index" puis tu complètes le tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Nom de l'index         Nom du champ       Ordre de tri
    PrimaryKey             CommandeID         Croissant
    CommandeUnique         NumCommande        Croissant
                           ClientID           Croissant
    Quand tu es sur la ligne avec CommandeUnique, tu mets la propriété "Unique" à "Oui"

    Sinon je suppose que jcdenton057 te propose une numérotation automatique (et relative au client) de tes commandes dans un formulaire. Si la dernière commande du client A porte le numéro 1000, dans sa commande suivante elle portera automatiquement le numéro 1000+1=1001.

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 151
    Points : 89
    Points
    89
    Par défaut
    Si j'ai bien compris ce que tu veux, c'est une chose que j'ai faite pour mon application.
    Moi j'ai créer un id_commande en numéro auto, mais un aussi un champ numérique de type entier long et après il suffit de faire un index combiné entre ton champ client (clé secondaire , ta liaison avec ta table client) et ce numéro en évitant les doublons ainsi une commande ne pourra pas être créer sans numéro et il ne pourra pas y avoir de doublon pour un même clients si tu met l'option sans doublon !

    Pour créer cette index combiné il faut cliqué sur index en haut (pour AC-2007)
    une table s'affiche 1ère cellule mettre une nom n'importe quoi ! la 2ème de la 1ère ligne le numéro
    sur la 2ème ligne 2ème cellule le sous traitant et ce devrais fonctionné
    et met doublons unique a oui !

Discussions similaires

  1. Occurence d'une valeur sur deux champs de la même table
    Par arihane dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/02/2015, 20h30
  2. Différence entre 1 même champ sur 2 enregistrements d'une même table
    Par manulemalin dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 11/02/2008, 09h47
  3. Conditions sur les champs d'une même table
    Par Pucho dans le forum Modélisation
    Réponses: 10
    Dernier message: 19/10/2007, 17h52
  4. condition sur un champ d'une table
    Par julio02200 dans le forum Access
    Réponses: 12
    Dernier message: 11/07/2006, 14h19
  5. [Requête] plusieurs champs dans une même table ayants la même source
    Par Christophe93250 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 25/04/2006, 16h18

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