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

Access Discussion :

Appliquer des contraintes de valeurs en fonctions d'autre champs [AC-2010]


Sujet :

Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Septembre 2021
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Appliquer des contraintes de valeurs en fonctions d'autre champs
    Bonjour,

    Je suis tout nouveau sur Access et j'ai une question par rapport a un besoin assez simple.
    Sur un champ de ma table je veux interdire la modification de ce champ si la date d'un autre champ est supérieur a une certaine valeur

    Exemple:
    Si dt_effet >= 01/10/2019 alors le champ Taux n'est pas modifiable et sa valeur est obligatoirement de 0
    Si dt_effet < 01/10/2019 alors le champ Taux est modifiable

    J'ai essayé de parcourir différents tutos concernant mon besoin mais je n'ai pas trouvé une réponse qui puisse vraiment m'aider.
    J'ai également essayé de modifier les propriétés de la table car j'ai compris qu'il était impossible d'appliquer ce type de contrainte dans les propriétés du champs.

    Autre question, si j'applique dans le champs "Valide si" une expression répondant a ma question, sera t-il possible par la suite de rajouter d'autres expressions dans les propriétés de la table pour d'autres contraintes ?

    Merci a vous

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    On ne peut pas interdire la saisie dans un champ d'une table directement dans la table.
    Cela peut se faire au niveau d'un formulaire, en utilisant l'événement Sur Activation du formulaire.

    En vba cela ressemble à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if me.dt_effet >= dateserial(2019, 1, 1) then
           me.dt_effet.locked=true
        else
           me.dt_effet.locked=false
    end if
    ou me. désigne le formulaire courant où le code est implanté.

    Note que à part le programmeur personne ne devrait faire de saisie directement dans une table, les utilisateurs devrait toujours passer par un formulaire qui te donne bien plus de contrôle sur ce qui peut être saisi et comment.

    Enfin on peut peut-être trouver un ValideSi qui marche mais il n'empêchera pas la saisie il forcera l'utilisateur à entrer 0.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Septembre 2021
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Merci pour cette réponse très complète.
    J'avais pensé a utiliser un formulaire mais le problème c'est que mon but ultime est de pouvoir vérifier la cohérence de données provenant d'un fichier excel qui suit un format de champs bien définie.

    Est-ce possible pour l'utilisateur de charger un fichier excel directement lors de la saisie du formulaire ?

    Cordialement.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Ha, OK, cela change la donne.

    Ce que je te suggères c'est de charger le fichier tel que dans une table (dite table temporaire ou table de travail) puis ensuite de faire des requêtes qui analyse tes données selon tes règles d'affaires.

    Après selon le résultat des requêtes tu peux décider de
    1. Rejeter le fichier et demander la correction de la source.
      Cela peut être fait dans le fichier Excel et alors tu le réimporte complétement ou alors au niveau de la table temporaire.
    2. Ne prendre que les données valides dans la table temporaire et les intégrer dans ta table définitive.
    3. Corriger automatiquement les valeurs "fausses" pour les intégrer"


    Évidement dans tous les cas fournir une liste des enregistrements rejetés et idéalement indiquer pourquoi ils sont refusés.
    Une alerte est bien aussi si tu fais des corrections automatiquement, ça sécurise l'utilisateur qui sais ce qui se passe et n'est pas surpris du résultat.

    Le faire avec ces étapes te donne bien plus de contrôle et de possibilités pour ceci.
    L'utilisation d'une table temporaire protège tes données de production d'une éventuelle corruption par l'import de données invalides.
    Et les requêtes sont plus faciles à vivre que les règles ValideSi.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Septembre 2021
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Merci pour ta réponse,

    Pour ceux qui est des contraintes j'utilise des requêtes SQL que je couple avec du VBA pour pouvoir importer des données plus facilement

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/07/2017, 14h55
  2. [AC-2010] Puisez des listes de valeur en fonction d'un champ spécifique
    Par solar94 dans le forum Access
    Réponses: 6
    Dernier message: 22/06/2017, 17h01
  3. [XL-2007] Somme valeurs en fonction d'un champ d'une autre colonne
    Par batmat86 dans le forum Excel
    Réponses: 4
    Dernier message: 30/09/2011, 16h06
  4. Réponses: 2
    Dernier message: 27/08/2010, 11h23
  5. [XSLT] Affichage des valeurs en fonction d'autres
    Par devlo2006 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 08/04/2008, 18h28

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