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 :

requete date periode


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 28
    Points : 18
    Points
    18
    Par défaut requete date periode
    bonjour
    voilà mon probléme :
    j'essaie de créer une requete sur une base access qui contient deux champs date : 'absent du' et 'au'
    avec une saisie sur un formulaire d'une période (startdate - dateend )
    le resultat de la requête doit compter toutes les fiches incluant la période définie par startdate et dateend
    incluses dans les champs 'Absent du' et' Au'
    voilà ce que j'ai pu faire pour le moment mais qui n'est pas encore ok
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    reqst = 0
    reqhas = 0
    passt = 0
    pashas = 0
     
    startdate = Mid$(Forms!choix_periode.lib_du.Value, 4, 2) & "/" & Mid$(Forms!choix_periode.lib_du.Value, 1, 2) & "/" & Mid$(Forms!choix_periode.lib_du.Value, 7, 4)
    dateend = Mid(Forms!choix_periode.lib_au.Value, 4, 2) & "/" & Mid(Forms!choix_periode.lib_au.Value, 1, 2) & "/" & Mid(Forms!choix_periode.lib_au.Value, 7, 4)
     
    reqst = DCount("*", "Requerant", "localite = 'saint amand les eaux' and (([absent du] >= #" & startdate & "# or [absent du] <= #" & dateend & "#) and ([au] >= #" & startdate & "# and [au] <= #" & dateend & "#))")
    reqhas = DCount("*", "Requerant", "localite = 'hasnon' and (([absent du] >= #" & startdate & "# or [absent du] <= #" & dateend & "#) and ([au] >= #" & startdate & "# and [au] <= #" & dateend & "#))")
    passt = DCount("*", "passage", "localite = 'SAINT AMAND LES EAUX' AND ([date] >= #" & startdate & "# and date <= #" & dateend & "#)")
     
    pashas = DCount("*", "passage", "localite = 'hasnon' AND ([date] >= #" & startdate & "# and date <= #" & dateend & "#)")
     
    pastotal = passt + pashas
    reqtotal = reqst + reqhas
    'moyenne = Round((pastotal / reqtotal), 2)
    Me.etik_periode.Caption = "Période du " & Forms!choix_periode.lib_du.Value & " au " & Forms!choix_periode.lib_au.Value
    en effet toutes les dates inférieures à 'Absent du' et supérieures à 'Au' ne 'sortent pas' !
    et en les incluant le résultat est faux car prenant en compte toutes les dates inférieures ou toutes les dates supérieures !
    bref je cale. il y a peut être une piste avec 'HAVING' mais je n'y parviens pas
    merci de votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 652
    Points : 34 358
    Points
    34 358
    Par défaut
    salut,
    pour la méthode des dates, je te recommande de passer par la clause between au lieu des < et > sur le meme champ =)

    pour ta problématique, il me semble que tes clauses devraient etre de type OR plutôt que AND.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Bon, parés recherches, pb résolu :
    en fait la slution est dans les parenthéses (qui manquaient !) pour la fin du critére :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    reqst = 0
    reqhas = 0
    passt = 0
    pashas = 0
     
    startdate = Mid$(Forms!choix_periode.lib_du.Value, 4, 2) & "/" & Mid$(Forms!choix_periode.lib_du.Value, 1, 2) & "/" & Mid$(Forms!choix_periode.lib_du.Value, 7, 4)
    dateend = Mid(Forms!choix_periode.lib_au.Value, 4, 2) & "/" & Mid(Forms!choix_periode.lib_au.Value, 1, 2) & "/" & Mid(Forms!choix_periode.lib_au.Value, 7, 4)
    ' testé , pas vraiment correct :
    'reqst = DCount("*", "Requerant", "localite = 'saint amand les eaux' and (([absent du] >= #" & startdate & "# or [absent du] <= #" & dateend & "#) and ([au] >= #" & startdate & "# and [au] <= #" & dateend & "#))")
     
    reqst = DCount("*", "Requerant", "localite = 'saint amand les eaux' AND (((#" & startdate & "#  BETWEEN [ABSENT DU] AND [AU]) OR (#" & dateend & "# BETWEEN [ABSENT DU] AND [AU])) OR (#" & startdate & "# < [ABSENT DU]) AND (#" & dateend & "# > [AU]))")
     
    ' testé , pas vraiment correct :
    'reqhas = DCount("*", "Requerant", "localite = 'hasnon' and (([absent du] >= #" & startdate & "# or [absent du] <= #" & dateend & "#) and ([au] >= #" & startdate & "# and [au] <= #" & dateend & "#))")
     
    reqhas = DCount("*", "Requerant", "localite = 'HASNON' AND (((#" & startdate & "#  BETWEEN [ABSENT DU] AND [AU]) OR (#" & dateend & "# BETWEEN [ABSENT DU] AND [AU])) OR (#" & startdate & "# < [ABSENT DU]) AND (#" & dateend & "# > [AU]))")
     
    'passt = DCount("date", "passage", "localite = 'SAINT AMAND LES EAUX' AND ([date] >= #" & startdate & "#) and ([date] <= #" & dateend & "#)")
    'pashas = DCount("date", "passage", "localite = 'HASNON' AND ([date] >= #" & startdate & "#) and ([date] <= #" & dateend & "#)")
     
    passt = DCount("date", "passage", "localite LIKE 'SAINT AMAND LES EAUX' AND ([date] between #" & startdate & "# and  #" & dateend & "#)")
    pashas = DCount("date", "passage", "localite LIKE 'HASNON' AND ([date] between #" & startdate & "# and  #" & dateend & "#)")
     
     
    pastotal = passt + pashas
    reqtotal = reqst + reqhas
    If (pastotal > 0 Or reqtotal > 0) Then
    moyenne = Round((pastotal / reqtotal), 2)
    Else
    moyenne = 0
    End If
    Me.etik_periode.Caption = "Période du " & Forms!choix_periode.lib_du.Value & " au " & Forms!choix_periode.lib_au.Value
    Voilà, merci à tous, et notamment à jpcheck !
    bon je mets en résolu jusqu à la prochaine question

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

Discussions similaires

  1. [Derby] Requete date courante sur un champ Timestamp
    Par spekal dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/09/2006, 10h54
  2. [Requete] Comparaison de date / Periode - tab. croisé. dyn
    Par Gronain dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/05/2006, 16h04
  3. Requete date() sur du texte ?
    Par BOTIGUA dans le forum Access
    Réponses: 4
    Dernier message: 29/04/2006, 12h53
  4. [requete] Date de création d'une base oracle.
    Par Cyborg289 dans le forum Oracle
    Réponses: 2
    Dernier message: 14/02/2006, 11h14
  5. requete date sql
    Par tommath dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/08/2004, 17h20

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