none
Contrainte d'intégrité secondaire sur une table RRS feed

  • Question

  • Bonjour,

    est ce que Access intègre la possibilité d'ajouter une contrainte d'intégrité sur des champs secondaires ?

    J'ai besoin de stocker 2 numéros fournis par un organisme. Chaque numéro est unique. Par contre, on n'a pas forcément ce doublet lors de la création d'un nouvel enregistrement.

    De ce fait, ça impose une clé primaire et 2 champs Numériques. Ces 2 champs ont donc la validité suivante :

    null / null : valide
    Valeur 1 / Valeur 2 : valide
    Valeur 1 / Valeur 3 : valide
    null / valeur 2 : invalide
    Valeur 1 / null : invalide
    Valeur 4 / valeur 2 : valide

    Est ce que l'on peut gérer cette contrainte ou il faut se palucher à la main la validation ?

    Merci,

    Vincent

    jeudi 26 février 2015 17:37

Toutes les réponses

  • Bonjour

    Je n'ai pas forcement bien compris la logique de validation :

    - Les 2 champs peuvent être à null

    - Si un des 2 est renseigné, l'autre doit l'être

    En passant par les propriétés de la table, tu peux utiliser la ligne ValideSi (onglet Création>Feuille de propriétés) pour générer un test à la validation de l'enregistrement ou si ce n'est pas suffisant tu peux utiliser les macros de table (trigger)

    samedi 28 février 2015 10:51
  • Bonjour,

    Avez vous essayez en créant un indexe muti-champs cela permettra de s'assurer que le couple (valeur1, valeur2) est unique


    En espérant avoir pu rendre service (MehdiH)
    Retrouvez moi sur Office Users

    dimanche 1 mars 2015 09:38
  • - Est ce que tu peux développer ?

    - Juste comme ça, en bonus, si on veut taper sur la base Access en C#, cette contrainte sera conservée ou il faudra recoder quelque chose ?

    dimanche 1 mars 2015 20:37
  • Heu, c'est quoi les macros de table ?

    Les Triggers (je ne connaissais pas) ça pourrait le faire aussi.

    Est ce que les triggers sont conservés si on tape dans la table ensuite en C# ou il faut recoder la contrainte ?

    dimanche 1 mars 2015 20:39
  • Bonjour Vincent,

    Voici un extrait du site développer.com:

    ---------------------------------------------------------------------

    Comment interdire les doublons sur la combinaison de plusieurs champs ?

    Il faut créer dans la table un index multichamp et définir sa propriété unique à "oui".

     Pour créer l'index :

     1) Afficher la table en mode création ;

     2) Menu Affichage >> Index  ;

     3) Sélectionner dans la colonne "Nom du champ", tous les champs concernés en laissant vides les champs de la colonne "Nom de l'index", sauf le premier champ, celui où commence la liste car il faut y inscrire le nom de l'index multichamp

    ---------------------------------------------------------------------

    Pour en savoir plus sur les indexes : https://support.office.com/fr-be/article/Cr%c3%a9er-et-utiliser-un-index-pour-am%c3%a9liorer-les-performances-0a8e2aa6-735c-4c3a-9dda-38c6c4f1a0ce?ui=fr-FR&rs=fr-BE&ad=BE

    Pour ce qui est de C# et si j'ai bien compris il ne faudra rien ajouter comme code car c'est le SGBDR qui gère cela. Les indexes ne sont d'ailleurs pas le propre (ou l'exclusivité) d'Access


    En espérant avoir pu rendre service (MehdiH)
    Retrouvez moi sur Office Users

    mardi 3 mars 2015 10:18
  • Bonjour,

    Pour le triggers (déclencheurs), je vous invite à lire

    Pour ce qui est de C# je ne serait vous dire !?


    En espérant avoir pu rendre service (MehdiH)
    Retrouvez moi sur Office Users

    mardi 3 mars 2015 10:27