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

IHM Discussion :

Mettre plusieurs champs en UNIQUE


Sujet :

IHM

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 47
    Points : 57
    Points
    57
    Par défaut Mettre plusieurs champs en UNIQUE
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    ADD CONSTRAINT 2champsUnique UNIQUE (champs1, champs2)
    Merci d'avance !

  2. #2
    Membre actif Avatar de SeaWolf601
    Inscrit en
    Août 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 254
    Points : 256
    Points
    256
    Par défaut
    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

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 47
    Points : 57
    Points
    57
    Par défaut
    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 ..)

  4. #4
    Membre actif Avatar de SeaWolf601
    Inscrit en
    Août 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 254
    Points : 256
    Points
    256
    Par défaut
    Citation Envoyé par Nitsuja Voir le message
    C'est à dire je veux que mes deux champs soient uniques (et non requis ..)
    Si tu parles d'unique dans la table, c'est à dire dans tous tes enregistrements, il faut passer par une double clé primaire dans la table appropriée.

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If me.Texte1.value=me.Texte2.value then
    MsgBox ("la valeur de Texte1 doit forcément etre différente de Texte2.")
    Me.Texte1=""
    Me.Texte2=""
    End if

    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

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 47
    Points : 57
    Points
    57
    Par défaut
    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 ?

  6. #6
    Membre actif Avatar de SeaWolf601
    Inscrit en
    Août 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 254
    Points : 256
    Points
    256
    Par défaut
    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

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 47
    Points : 57
    Points
    57
    Par défaut
    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).

  8. #8
    Membre actif Avatar de SeaWolf601
    Inscrit en
    Août 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 254
    Points : 256
    Points
    256
    Par défaut
    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

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 47
    Points : 57
    Points
    57
    Par défaut
    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

  10. #10
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 286
    Points : 383
    Points
    383
    Par défaut Peut être y a t il plus simple ?
    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

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 47
    Points : 57
    Points
    57
    Par défaut
    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.

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 47
    Points : 57
    Points
    57
    Par défaut
    J'ai réussi en exécutant directement la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE T_CountryBudget
    ADD CONSTRAINT champsUnique UNIQUE (Year, Country);
    Dans la forme SQL d'une query crée pour l'occasion.
    Dommage que l'option ne soit pas dispo dans l'interface.

  13. #13
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 286
    Points : 383
    Points
    383
    Par défaut Dans ce cas ...
    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

  14. #14
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 47
    Points : 57
    Points
    57
    Par défaut
    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

  15. #15
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 286
    Points : 383
    Points
    383
    Par défaut c'est l'essentiel
    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

  16. #16
    Membre actif Avatar de SeaWolf601
    Inscrit en
    Août 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 254
    Points : 256
    Points
    256
    Par défaut
    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

  17. #17
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 286
    Points : 383
    Points
    383
    Par défaut pas grave...
    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

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

Discussions similaires

  1. [IP-2010] Mettre plusieurs champs en "lecture seule"
    Par MrMeteo dans le forum InfoPath
    Réponses: 1
    Dernier message: 05/02/2014, 09h02
  2. mettre plusieur champs formulaire sur la même ligne
    Par cuddy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 17/09/2012, 18h21
  3. [HTML] mettre un DIV sur plusieurs champs d'une table
    Par Nixar dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/09/2007, 15h13
  4. Concaténer plusieurs champs avec des valeurs uniques
    Par stefposs dans le forum VBA Access
    Réponses: 10
    Dernier message: 30/05/2007, 17h42
  5. Réponses: 3
    Dernier message: 09/07/2004, 10h23

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