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

Requêtes et SQL. Discussion :

pb avec comparaison de dates [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut pb avec comparaison de dates
    Bonsoir,

    Je n'arrive pas à comprendre pourquoi Access 2007 ne réagit pas comme je le voudrais dans une requête.

    Comme ce n'est pas simple d'expliquer tout sur la table d'origine et sur la requête, je vous joint une copie "allégée" de ma base et son équivalent en Access 2003.

    Cette ligne (rouge) ne fonctionne pas :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT dbo_ARTICLES.COD_ART, dbo_ARTICLES.PRX_VEN_HT_1 AS PV1, dbo_ARTICLES.PRX_VEN_HT_2 AS PV2, ([DEB_TRF_1]) AS T1, (Right([T1],2) & "/" & Mid([T1],5,2) & "/" & Left([T1],4)) AS DATET1, ([DEB_TRF_2]) AS T2, (Right([T2],2) & "/" & Mid([T2],5,2) & "/" & Left([T2],4)) AS DATET2, 
    IIf(([DATET2]>[DATET1]>0),"D2 sup","D1 sup") AS DATEENCOURS, 
    
    Switch(
    Format(Now(),"dd/mm/yyyy")>=[DATET1] And [T2]="0","Now sup à Date1 et Date2vide cas3",
    Format(Now(),"dd/mm/yyyy")>[DATET1] And Format(Now(),"dd/mm/yyyy")<[DATET2],"sup à D1 et D2:ok Cas 1",
    Format(Now(),"dd/mm/yyyy")>=[DATET1] And Format(Now(),"dd/mm/yyyy")<[DATET2],"Sup à D1 et inf à D2 Cas 2"
    ) AS E4, 
    
    (Format((Now()),"dd/mm/yyyy")) AS JOUR
    FROM dbo_ARTICLES;



    Sur les 2 dernières lignes, je devrais voir "Sup à D1 et inf à D2 cas 2"

    (et j'ai 6 autres conditions à mettre en place dans le même type)

    Je ne sais pas ce qui cause ce soucis :
    est-ce mes dates (qui sont à l'origine du texte de date inversée)
    est-ce le AND ?
    est-ce le switch ?

    Je nage complétement. Pouvez-vous maider ?
    Merci pour votre regard
    Thibault
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonsoir,

    ça ne fonctionne pas parce que tu compares du texte avec du texte.

    Par exemple :
    "0" est plus petit que "2" donc "01/10/2005" < "21/01/2000"

    C'est pour cette raison que les dates, lorsqu'elles sont stockées dans un champ texte, le sont sous le format YYYYMMDD (AAAAMMJJ).
    Ça permet de trier et de faire des comparaisons comme avec de vraies dates.
    "01/10/2005" < "21/01/2000"
    mais
    "20051001" > "20000121"

    Soit tu restes avec cette logique de date au format YYYYMMDD et tu ne fais des comparaisons que dans ce format.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT dbo_ARTICLES.COD_ART, dbo_ARTICLES.PRX_VEN_HT_1 AS PV1, dbo_ARTICLES.PRX_VEN_HT_2 AS PV2, 
    ([DEB_TRF_1]) AS T1, (Right([T1],2) & "/" & Mid([T1],5,2) & "/" & Left([T1],4)) AS DATET1, 
    ([DEB_TRF_2]) AS T2, (Right([T2],2) & "/" & Mid([T2],5,2) & "/" & Left([T2],4)) AS DATET2, 
    IIf(([DEB_TRF_2]>[DEB_TRF_1]),"D2 sup","D1 sup") AS DATEENCOURS, 
    Switch(Format(Now(),"yyyymmdd")>=[DEB_TRF_1] And [DEB_TRF_2]="0","Now sup à Date1 et Date2vide cas3",
    Format(Now(),"yyyymmdd")>[DEB_TRF_1] And Format(Now(),"yyyymmdd")>[DEB_TRF_2],"sup à D1 et D2:ok Cas 1",
    Format(Now(),"yyyymmdd")>=[DEB_TRF_1] And Format(Now(),"yyyymmdd")<[DEB_TRF_2],"Sup à D1 et inf à D2 Cas 2") AS E4, 
    (Format((Now()),"yyyymmdd")) AS JOUR
    FROM dbo_ARTICLES;

    Soit tu converti au type Date/Time avec DateSerial
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT dbo_ARTICLES.COD_ART, dbo_ARTICLES.PRX_VEN_HT_1 AS PV1, dbo_ARTICLES.PRX_VEN_HT_2 AS PV2, 
    ([DEB_TRF_1]) AS T1, IIF(Len([T1])=8, DateSerial(Left([T1],4), Mid([T1],5,2), Right([T1],2)), Null) AS DATET1, 
    ([DEB_TRF_2]) AS T2, IIF(Len([T2])=8, DateSerial(Left([T2],4), Mid([T2],5,2), Right([T2],2)), Null) AS DATET2, 
    IIf(([DATET2]>[DATET1]),"D2 sup","D1 sup") AS DATEENCOURS, 
    Switch(Date()>=[DATET1] And IsNull([DATET2]),"Now sup à Date1 et Date2vide cas3",
     Date()>[DATET1] And Date()>[DATET2],"sup à D1 et D2:ok Cas 1",
     Date()>=[DATET1] And Date()<[DATET2],"Sup à D1 et inf à D2 Cas 2") AS E4, 
    Date() AS JOUR
    FROM dbo_ARTICLES;
    A+

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut
    Merci beaucoup LedZepII

    J'ai testé et cela marche parfaitement. Me reste plus qu'à saisir tous les cas possibles....

    A+
    Thib

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/09/2011, 19h40
  2. Boucle if avec comparaison de dates
    Par pomdeterfrite dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/11/2010, 16h59
  3. Problème de requete avec comparaison de date
    Par crabe71 dans le forum Linq
    Réponses: 2
    Dernier message: 23/07/2009, 09h39
  4. [XML] Pb avec comparaison de dates dans un XML
    Par gaggy dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 11/10/2007, 15h25
  5. Requètes avec comparaison de date
    Par phoque.r dans le forum Requêtes
    Réponses: 2
    Dernier message: 12/04/2007, 16h01

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