Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
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 11/08/2011, 14h33   #1
Membre du Club
 
Homme
Étudiant
Inscription : 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 : 46
Points : 46
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 :
ADD CONSTRAINT 2champsUnique UNIQUE (champs1, champs2)
Merci d'avance !
Nitsuja est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 14h41   #2
Membre actif
 
Avatar de SeaWolf601
 
Inscription : août 2006
Messages : 239
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 239
Points : 192
Points : 192
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
SeaWolf601 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 15h02   #3
Membre du Club
 
Homme
Étudiant
Inscription : 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 : 46
Points : 46
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 ..)
Nitsuja est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 15h12   #4
Membre actif
 
Avatar de SeaWolf601
 
Inscription : août 2006
Messages : 239
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 239
Points : 192
Points : 192
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 :
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
SeaWolf601 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 15h20   #5
Membre du Club
 
Homme
Étudiant
Inscription : 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 : 46
Points : 46
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 ?
Nitsuja est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 15h27   #6
Membre actif
 
Avatar de SeaWolf601
 
Inscription : août 2006
Messages : 239
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 239
Points : 192
Points : 192
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
SeaWolf601 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 15h37   #7
Membre du Club
 
Homme
Étudiant
Inscription : 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 : 46
Points : 46
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).
Nitsuja est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 15h43   #8
Membre actif
 
Avatar de SeaWolf601
 
Inscription : août 2006
Messages : 239
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 239
Points : 192
Points : 192
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
SeaWolf601 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 15h52   #9
Membre du Club
 
Homme
Étudiant
Inscription : 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 : 46
Points : 46
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
Nitsuja est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 16h03   #10
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 261
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2008
Messages : 261
Points : 304
Points : 304
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
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 16h12   #11
Membre du Club
 
Homme
Étudiant
Inscription : 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 : 46
Points : 46
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.
Nitsuja est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 16h23   #12
Membre du Club
 
Homme
Étudiant
Inscription : 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 : 46
Points : 46
J'ai réussi en exécutant directement la requête :

Code :
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.
Nitsuja est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/08/2011, 16h29   #13
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 261
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2008
Messages : 261
Points : 304
Points : 304
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
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/08/2011, 16h34   #14
Membre du Club
 
Homme
Étudiant
Inscription : 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 : 46
Points : 46
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
Nitsuja est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 16h42   #15
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 261
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2008
Messages : 261
Points : 304
Points : 304
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
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 17h07   #16
Membre actif
 
Avatar de SeaWolf601
 
Inscription : août 2006
Messages : 239
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 239
Points : 192
Points : 192
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
SeaWolf601 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 17h12   #17
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 261
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2008
Messages : 261
Points : 304
Points : 304
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
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h59.


 
 
 
 
Partenaires

Hébergement Web