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 :

Select sur dates dans Access via VB


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2006
    Messages : 129
    Par défaut Select sur dates dans Access via VB
    Bonjour à tous,

    je me pose une petite question sur une requête SQL que j’exécute sur une Bdd Access.

    La connexion fonctionne, les lectures aussi mais certains paramètres posent problème, les données retournées par la requête ne correspondent pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call LectureSurListBox("SELECT * FROM MyTable WHERE format(DATE_SES,""dd/mm/yyyy"") > format(""" & Now & """, ""dd/mm/yyyy"" ) AND format(DATE_SES, ""dd/mm/yyyy"") < format(""" & DateAdd("d", 7, Now) & """, ""dd/mm/yyyy"" )", ListView2)
    J'ai essayé avec BETWEEN sans succès.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call LectureSurListBox("SELECT * FROM MyTable WHERE format(DATE_SES, ""dd/mm/yyyy"") BETWEEN format(""" & Now & """, ""dd/mm/yyyy"" ) AND format(""" & DateAdd("d", 7, Now) & """, ""dd/mm/yyyy"" )", ListView2)
    A savoir que la requête suivante fonctionne sans problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call LectureSurListBox("SELECT * FROM MyTable WHERE format(DATE_SES,""dd/mm/yyyy"") =  format(""" & Now & """, ""dd/mm/yyyy"" );", ListView1)
    Avez vous une idée du pourquoi ?

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Si tu veux comparer des dates, il NE faut PAS les convertir en chaines, et surement pas au format "DD/MM/YYYY".
    Dans ce cas, tu obtiens des absurdités telles que "18/02/2013" < "31/01/2012", qui est bien valide pour des chaines de caractères.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre actif
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2006
    Messages : 129
    Par défaut
    D'habitude, quand je fais du php, je considère un timestamp, ce qui rend les manipulations bien plus simples. Mais là les dates sont rentrées au format "DD/MM/YYYY" dans la base directement.

    J'ai tenté la requete suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call LectureSurListBox("SELECT * FROM MyTable WHERE DATE_SES =  '" & Now & "');", ListView1)
    Mais le problème c'est que la date est considéré avec l'heure.

    EDIT 10:25 >

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Call LectureSurListBox("SELECT * FROM MyTable WHERE DATE_SES =  #" & Format(Now, "dd/MM/yyyy") & "#;", ListView1)
    Call LectureSurListBox("SELECT * FROM MyTable WHERE DATE_SES BETWEEN #" & Format(DateAdd("d", 1, Now), "dd/MM/yyyy") & "# AND #" & Format(DateAdd("d", 7, Now), "dd/MM/yyyy") & "#", ListView2)
    La première fonctionne, la seconde ne sort pas les bons résultats.

    EDIT 10:31 > C'est bon ca fonctionne. J'avais simplement oublié de mettre la base à jour et la table ne contenait pas de données que la requete pouvait ressortir.

    Donc en gros, il faut délimiter les dates avec #.

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

Discussions similaires

  1. Aide sur importation données Excel dans Access Via Visual Basic 6.0
    Par moirs555 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 19/08/2011, 09h02
  2. [SQL-VBA]tri par date dans access
    Par Mickey_Mouse dans le forum VBA Access
    Réponses: 5
    Dernier message: 06/02/2007, 09h49
  3. [ WinDev ] Calcul sur date dans SQL
    Par Tchupacabra dans le forum Langage SQL
    Réponses: 8
    Dernier message: 28/02/2006, 12h12
  4. Calcul sur date dans SQL
    Par Tchupacabra dans le forum WinDev
    Réponses: 4
    Dernier message: 27/02/2006, 19h23
  5. Problème de lien sur date entre Access et MySQL-4.1
    Par michou42 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 04/04/2005, 23h31

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