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 :

Comparer des dates pour un champ calculé [AC-2010]


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Stagiaire base de données
    Inscrit en
    Mai 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Mai 2018
    Messages : 23
    Points : 11
    Points
    11
    Par défaut Comparer des dates pour un champ calculé
    Bonjour à tous,

    Je me tourne vers vous car je me trouve face à un problème et ne trouve pas de solutions. Voici mon problème :

    J'ai une table dans laquelle sont enregistrés des partenaires ainsi que toutes les informations qui leur sont liées, dont les dates de début et de fin de collaboration. Je voudrais créer un champ "Actif" de type Oui/Non basé sur ces deux champ. Concrètement, actif devra être sur oui si la date de début est inférieure à la date du jour et la date de fin devra être supérieure à la date du jour.

    J'ai déjà fait quelques recherches et ne trouve pas quoi écrire dans le générateur d'expression, est-ce que quelqu'un serait en mesure de m'aider svp ? Merci d'avance !

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2013
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 328
    Points : 477
    Points
    477
    Par défaut
    avec iif ( condition ; si vrai; si faux)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Stagiaire base de données
    Inscrit en
    Mai 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Mai 2018
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Bonjour James,

    Tout d'abord merci de ta réponse.

    J'ai essayé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IIf([DateDebut]<date() & [DateFin]>date(); True ; False)
    Cependant ça ne marche pas. Saurais-tu ce que je dois changer ? Est-ce que le fait que la date soit au format dd/mm/yyyy pourrait poser problem ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2013
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 328
    Points : 477
    Points
    477
    Par défaut
    Comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    iif([DateDébut]<Date() and [DateFin]>Date();Vrai;Faux)
    en resultat tu auras du -1 ou du 0
    ++

  5. #5
    Membre à l'essai
    Homme Profil pro
    Stagiaire base de données
    Inscrit en
    Mai 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Mai 2018
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    J'ai essayé ta solution et j'obtiens le message d'erreur suivant :

    Nom : err.PNG
Affichages : 404
Taille : 38,1 Ko

    Sais-tu à quoi celà peut être dû ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2013
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 328
    Points : 477
    Points
    477
    Par défaut
    Non aucune idée. car je ne sais pas dans quel contexte tu utilises ce code
    voila mon SQL pour une simple requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Table3.DateDébut, Table3.DateFin, IIf([DateDébut]<Date() And [DateFin]>Date(),True,False) AS Expr1 FROM Table3;

  7. #7
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonsoir,
    @james68:
    il s'agit d'un champ calculé dans une table, pas dans une requête.

    @nosnoz:
    c'est une très mauvaise idée (encore une de Microsoft avec les champs multi-valués) d'utiliser les champs calculés, certaines fonctions intégrées ne sont pas disponibles, notammment la date du jour.

    Pourquoi ne pas déduire l'inactivité avec les dates avec la formule que t'as donné james68 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IIf([DateDébut]<Date() And [DateFin]>Date(),True,False)
    Sinon, si tu veux vraiment garder le champ "Actif" il y a les macros de données plus pratique à mettre en place.
    En mode création de la table, dans le ruban, choisir l'icône "Créer des macros de données" puis "Avant modification":

    Nom : _MacroDonnéesAvtMaj.JPG
Affichages : 439
Taille : 37,5 Ko
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  8. #8
    Membre à l'essai
    Homme Profil pro
    Stagiaire base de données
    Inscrit en
    Mai 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Mai 2018
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Bonjour tee_grandbois,

    J'ai finalement pris la decision de garder mon champ "Actif", étant donné que l'on s'en sert autre part. J'ai essayé ta proposition et elle marche parfaitement, merci beaucoup du coup de main et de m'avoir fait découvrir le fonctionnement des macros de données ! ( je suis encore un petit nouveau dans le monde de la base de données )

    J'aurais encore une petite question purement informative si ça ne te derange pas d'y répondre : je ne comprend pas pourquoi il est préférable de déduire l'inactivité d'un collaborateur plutôt que son activité ?


    Merci pour vos réponses à toi et james68 et pour le temps que vous m'avez consacré

  9. #9
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    Citation Envoyé par nosnoz
    je ne comprend pas pourquoi il est préférable de déduire l'inactivité d'un collaborateur plutôt que son activité ?
    ce n'est pas ce que j'ai dit:
    Citation Envoyé par tee_grandbois
    Pourquoi ne pas déduire l'inactivité avec les dates avec la formule que t'as donné james68 ?
    je ne connais pas l'applicatif ni le contexte, mais, à mon sens, si on peut déduire l'inactivité (ou l'activité) d'un collaborateur à partir de 2 champs et une simple formule, pourquoi en créer un 3ème ?
    C'est une question de redondance d'informations, c'est comme mémoriser un montant HT, le montant (ou le taux) de TVA et le montant TTC ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  10. #10
    Membre à l'essai
    Homme Profil pro
    Stagiaire base de données
    Inscrit en
    Mai 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Mai 2018
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Ah pardon, j'avais mal compris ton message ! Du coup non, dans ce cas j'ai besoin de cette colonne, notamment pour faciliter la lecture aux autres utilisateurs de la base.

    Merci quand meme pour ta réponse

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    en mettant la formule dans un champ indépendant pour un formulaire unique ou avec la mise en forme conditionnelle pour les formulaires en continu, ou serait le problème ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IIf(Nz([datedébut];#01/01/1900#)<Date() Et Nz([datefin];#31/12/9999#)>Date(),"Actif","Inactif")
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  12. #12
    Membre à l'essai
    Homme Profil pro
    Stagiaire base de données
    Inscrit en
    Mai 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Mai 2018
    Messages : 23
    Points : 11
    Points
    11
    Par défaut
    Parce qu'avoir le détail des dates de début et de fin de collaboration peut également être utile aux utilisateurs, je ne sais pas exactement dans quelle mesure, mais il est apparemment utile de laisser la totalité des informations dans la même table. Cependant ta remarque est intéressante, je me la garde en reserve des fois que je sois confronté à un cas similaire.

    Merci pour toute ton aide !

  13. #13
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    Parce qu'avoir le détail des dates de début et de fin de collaboration peut également être utile aux utilisateurs, je ne sais pas exactement dans quelle mesure, mais il est apparemment utile de laisser la totalité des informations dans la même table
    décidément tu comprend de travers, je n'ai jamais dit qu'il fallait supprimer les dates mais plutôt le champ Actif qui me semblait inutile puisque facilement déductible de ces 2 dates, ce n'est vraiment pas la même chose ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

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

Discussions similaires

  1. Fonction pour comparer des dates en matlab
    Par mihaispr dans le forum MATLAB
    Réponses: 2
    Dernier message: 19/07/2009, 16h40
  2. Decode avec des dates pour calculer une valeur
    Par decisio dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/01/2009, 12h50
  3. DATE_FORMAT pour comparer des dates
    Par Maryy dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 09/03/2008, 20h50
  4. regex pour comparer des dates, des chiffres, des nombres
    Par lex13 dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 06/07/2007, 11h51
  5. Probleme Pour Comparer Des Dates
    Par Domingo60 dans le forum VBScript
    Réponses: 7
    Dernier message: 25/04/2007, 09h33

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