Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/05/2011, 05h45   #1
Candidat au titre de Membre du Club
 
Homme Julien
Ingénieur qualité méthodes
Inscription : juillet 2009
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : Chine

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

Informations forums :
Inscription : juillet 2009
Messages : 53
Points : 14
Points : 14
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.
btks59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 08h18   #2
Membre du Club
 
Inscription : juillet 2010
Messages : 56
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 56
Points : 52
Points : 52
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 :
If isnull(dlookup........)
.
jcdenton057 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 08h35   #3
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 446
Points : 4 446
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)
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2011, 05h26   #4
Candidat au titre de Membre du Club
 
Homme Julien
Ingénieur qualité méthodes
Inscription : juillet 2009
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Julien
Localisation : Chine

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

Informations forums :
Inscription : juillet 2009
Messages : 53
Points : 14
Points : 14
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.
btks59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2011, 09h29   #5
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

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

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
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--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2011, 09h42   #6
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 446
Points : 4 446
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 :
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.
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 08h48   #7
Membre du Club
 
Homme Mathieu
Étudiant
Inscription : avril 2011
Messages : 133
Détails du profil
Informations personnelles :
Nom : Homme Mathieu
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 133
Points : 50
Points : 50
Envoyer un message via MSN à theuma
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 !
theuma est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h09.


 
 
 
 
Partenaires

Hébergement Web