|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 47 ![]() |
Bonjour,
J'aimerais savoir comment faire dans access pour que deux champs soit considérés comme UNIQUE. Pas séparament mais "ensemble". Un peu comme on le ferait en SQL avec la commande suivante : Code :
ADD CONSTRAINT 2champsUnique UNIQUE (champs1, champs2) |
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Inscription : août 2006 Messages : 239 ![]() |
Que si tes champs soient vides ou null l'enregistrement se bloque ?
__________________
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi ! Albert Einstein |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 47 ![]() |
Heu non effectivement je me suis embrouillé moi même.
Je veux l'équivalent Access de la commande SQL que j'ai donné. C'est à dire je veux que mes deux champs soient uniques (et non requis ..) |
|
|
00
|
|
|
#4 | |||
|
Membre actif
![]() Inscription : août 2006 Messages : 239 ![]() |
Citation:
Si tu parles unique, l'un envers l'autre (donc différents) au moment de la saisie. Il faut tester les valeurs de tes deux champs au moment de la saisie dans ton formulaire. genre : Code :
__________________
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi ! Albert Einstein |
|||
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 47 ![]() |
Merci pour ta réponse SeaWolf.
Oui je parle de l'ensemble des enregistrements. Non je ne souhaite pas que ces champs soit ma clé primaire, j'ai déjà un ID pour ça. Il est impossible de rendre deux champs "UNIQUE" comme en Oracle ? |
|
|
00
|
|
|
#6 |
|
Membre actif
![]() Inscription : août 2006 Messages : 239 ![]() |
Sur la table en question dans les paramètres du champ tout en bas il y a : "Indexé" par défaut c'est "non" si ce n'est pas une clé primaire.
Tu le passe en "Oui - Sans doublons". Attention a tester, si ta table comporte déjà des enregistrements, si le champ en question possédé déjà des doublons, il va pas aimer Access.
__________________
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi ! Albert Einstein |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 47 ![]() |
Oui je sais faire ça mais c'est pour éviter les doublons sur un seul champs.
Mais ca ne semble pas fonctionner pour deux champs différents. (Je précise que quand je parle d'UNIQUE je veux dire "sans doublons", c'est une habitude). |
|
|
00
|
|
|
#8 |
|
Membre actif
![]() Inscription : août 2006 Messages : 239 ![]() |
Ha oui, zut, pardon, c'est moi qui ai oublié ton deuxième champ.
Si tu ne veux ou ne peux pas les mettre en clé primaire, j'avoue que la ça va être un peu plus corsé. Personnellement je passerai par une requête qui irai chercher dans la table si ces deux champs existent déjà ensemble. (les deux champs sont dans la même table ? rassure moi. Et qui renverrai alors un message à l'utilisateur s'il trouve ces deux "références" ensemble et déjà présentes.
__________________
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi ! Albert Einstein |
|
|
00
|
|
|
#9 |
|
Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 47 ![]() |
Oui sur la même table quand même
Ah ok donc je doit forcément passer par une méthode "manuelle" pour permettre de rendre deux champs sans doublons ? C'est un peu galère sachant que la plupart des SGBD possèdent cette option en natif ce qui est bien meilleur en terme de sécurité et d'exportabilité que de testé "à la main" si l'utilisateur ne m'as pas collé un doublon. Mais bon si c'est impossible, c'est impossible
|
|
|
00
|
|
|
#10 |
|
Membre éclairé
![]() Michel Développeur informatique Inscription : février 2008 Messages : 261 ![]() |
Tu prends ta table en mode création de Table
Tu commences par enlever les éventuelles clé qu'il peut y avoir Tu sélectionnes en même temps les 2 rubriques que tu veux avoir "uniques" Tu cliques sur la petit clé... si tu vas ensuite dans le menu (toujours en création de table) "Affichage / Index" tu verras que tes 2 clés sont bien liées. Je sais pas si cela répond bien à la question mais en tout cas, il n'y aura aucun doublon sur ces rubriques. Michel |
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 47 ![]() |
Merci mais j'ai déjà précisé que je ne veux pas avoir ces champs ne sont pas la clé primaire.
J'ai un ID qui me sert de clé primaire => propreté + optimisation. |
|
|
00
|
|
|
#12 | ||
|
Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 47 ![]() |
J'ai réussi en exécutant directement la requête :
Code :
Dommage que l'option ne soit pas dispo dans l'interface. |
||
|
|
10
|
|
|
#13 |
|
Membre éclairé
![]() Michel Développeur informatique Inscription : février 2008 Messages : 261 ![]() |
Désolé je n'avais pas vu que tu avais une clé composée primaire et que tu souhahtais la garder
donc : Tu laisses ta clé primaire telle que tu l'as définie, Tu vas en création de table Toujours le menu Affichage/Index et à la main tu rajoutes les lignes suivantes (sous la clé primaire qui apparait là avec ses 2 champs propreté et optimisation PrimaryKey... propreté ........ croissant ................. optimisation..... Croissant Nlle Clef ... Mon champ1 .... Croissant ................. Mon Champ2 ... Croissant Et bien sûr, sur Nlle_Clef tu présices : Primaire : non, Unique : oui. Ca devrait fonctionner Michel |
|
|
10
|
|
|
#14 |
|
Membre du Club
![]() Étudiant Inscription : juillet 2011 Messages : 47 ![]() |
Ah d'accord je retire donc la remarque de mon message précédent !
D'ailleur ma contrainte/index champUnique fait bien parti de la liste des indexes. Thanks |
|
|
00
|
|
|
#15 |
|
Membre éclairé
![]() Michel Développeur informatique Inscription : février 2008 Messages : 261 ![]() |
Content d'avoir pu être utile.
Au passage sous Access 2003 chaque index ainsi constitué peut contenir jusqu'à 10 champs... y a de quoi faire ! @+ Michel |
|
|
00
|
|
|
#16 |
|
Membre actif
![]() Inscription : août 2006 Messages : 239 ![]() |
Ben j'ai bien fait de regarder, car moi non plus je ne connaissais pas, merci Orion.
__________________
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi ! Albert Einstein |
|
|
00
|
|
|
#17 |
|
Membre éclairé
![]() Michel Développeur informatique Inscription : février 2008 Messages : 261 ![]() |
Tu sais, ceux qui savent tout ne sont pas légion !
Et puis ce forum me rend tant de services que je suis finalement satisfait d'avoir pu dépanner quelqu'un à mon tour. Michel |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com