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 :

Requête avec comme critère des dates [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut Requête avec comme critère des dates
    Bonjour,

    Je travail actuellement sur une base de données ACCESS. Mes relations sont censées êtres bonnes car mon prof les a vérifiées et car beaucoup de mes requêtes marche sauf celle PRIMORDIALE à mon travail. Je ne connais pas encore correctement ACCESS. J'espère que certains pourront m'aider à trouver la requête exacte en entrer :

    J'ai une table CLIENT, CHANTIERS, VISITE, CHEF D'ÉQUIPE.

    Mon but : créer une requête afin de sélectionner certaines données. La requête doit me permettre de sélectionner tous les clients Visités au mois de juin.
    Le but étant de faire un publipostage sur WORD avec cette même requête.

    SVP j'ai besoin d'aide ! Smiley

    MERCI à tous par avance de me répondre..

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    OK,
    1. va dans l'éditeur de requête d'Access et crée un nouvelle requête,
    2. ajoute les tables dont tu as besoin (probablement CLIENT et VISITE).
    3. Établit les jointures nécessaires entre tes tables (probablement sur le code du client).
    4. Pour chaque table, sélectionne les champs que tu veux et fait les glisser dans les colonnes en dessous des tables (logiquement tu devrais avoir dans cela la date de ta visiste)
    5. Met un critère de sélection du style betewen dateSerial(2012,06,01) and dateserial(2012,06,30) dans la colonne de la date de visite.
    6. Fait afficher le résultat pour vérifier que tu as tout ce que tu veux.


    Et voilà :-).

    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
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    Peux-tu préciser quelle version d'Access tu utilise ?

    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.

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    ça ne marche pas ! j'ai ACCESS 2003 ! je ne comprends pas ! j'ai tout essayer ! je me demande si mes jointures sont mauvaises mais lorsque je fais d'autres requêtes ça marche !

    j'ai essayer cette solution, j'ai essayer between #date# and #date# : ca marche pas ; j'ai essayer >#date# and <#date# : idem ! qu'est ce que je fais qui cloche????

    Une fois de plus merci à ceux qui m'ont répondu et ce qui me vont me répondre !

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    between dateSerial(2012,06,01) and dateserial(2012,06,30)

    Ensuite qu'est-ce qui ne marche pas ?
    La requête ne donne pas de résultat ?
    Les résultats ne sont pas ceux attendus ?
    Tu as une erreur ?

    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.

  6. #6
    Futur Membre du Club
    Inscrit en
    Août 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Aucuns résultats....

  7. #7
    Futur Membre du Club
    Inscrit en
    Août 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    est ce que cela viens de mes relations?


  8. #8
    Futur Membre du Club
    Inscrit en
    Août 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    j'ai essayé de mettre une image dans mon précédent message mais je n'y suis pas arrivé...

  9. #9
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    Les relations n'ont aucune influence sur le résultat des requêtes. Ce sont des outils très très utiles mais pour aider à la cohésion des données. Par contre tu as probablement un problème de jointure.

    Pourrais-tu poster le SQL de la requête ?

    Dans l'éditeur de requête en haut à gauche tu as un bouton affichage.
    Clique dessus et choisi SQL.
    Copie le texte affiché et poste le sur le forum.

    Ça va aider grandement.

    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.

  10. #10
    Futur Membre du Club
    Inscrit en
    Août 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT 
    FROM [CHEFS D'ÉQUIPES] INNER JOIN ((CLIENTS INNER JOIN CHANTIERS2012 ON CLIENTS.RèfClient = CHANTIERS2012.RèfClient) INNER JOIN VISITES ON CHANTIERS2012.RèfChantier = VISITES.RèfChantier) ON [CHEFS D'ÉQUIPES].[RèfChefd'équipe] = VISITES.[RèfChefd'équipe];
    UN GRAND MERCI POUR TON AIDE !

  11. #11
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    Il manque quelque chose dans ton SQL, essaye cela :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT [CHEFS D'ÉQUIPES].*
    FROM [CHEFS D'ÉQUIPES] INNER JOIN ((CLIENTS INNER JOIN CHANTIERS2012 ON CLIENTS.RèfClient = CHANTIERS2012.RèfClient) INNER JOIN VISITES ON CHANTIERS2012.RèfChantier = VISITES.RèfChantier) ON [CHEFS D'ÉQUIPES].[RèfChefd'équipe] = VISITES.[RèfChefd'équipe];

    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.

  12. #12
    Futur Membre du Club
    Inscrit en
    Août 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    dsl je n'ai pas été clair :

    la sélection est celle qui est dans SELECT (normal quoi) et la requête que je recherche actuellement est celle qui suit, et ca ne marche toujours pas. Peut être qu'il sera + facile pour vous de m'aider. merci de votre patience...

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CHANTIERS2012.TravauxChantier, [CHEFS D'ÉQUIPES].NomCD, [CHEFS D'ÉQUIPES].PrénomCD, [CHEFS D'ÉQUIPES].TèlProCD, CLIENTS.TitreClient, CLIENTS.NomCient, CLIENTS.PrénomClient, CLIENTS.AdresseClient, CLIENTS.CPClient, CLIENTS.VilleClient, VISITES.DateVisite, VISITES.HeureVisite
    FROM CLIENTS INNER JOIN ([CHEFS D'ÉQUIPES] INNER JOIN (CHANTIERS2012 INNER JOIN VISITES ON CHANTIERS2012.RèfChantier = VISITES.RèfChantier) ON [CHEFS D'ÉQUIPES].[RèfChefd'équipe] = VISITES.[RèfChefd'équipe]) ON CLIENTS.RèfClient = CHANTIERS2012.RèfClient
    WHERE (((VISITES.DateVisite) Between "#01/06/2012#" And "#30/06/2012#"));

  13. #13
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Between "#01/06/2012#" And "#30/06/2012#"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Between DateSerial(2012, 06, 01) And DateSerial(2012, 06, 30)
    Dans ta syntaxe tu cherches des données texte qui sont entre #01/06/2012# et #30/06/2012# alors qu'il faut que ce soit des dates.

    L'utilisation de DateSerial() évite les embiguités sur le mois et le jour et garanti que Access vera bien que c'est une date.

    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.

  14. #14
    Futur Membre du Club
    Inscrit en
    Août 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    ca ne marche pas il me dit que la syntaxe de l'expression entrée n'est pas correcte et que j'ai peut être "un opérande sans opérateur"....
    Pitié ne me lâchez pas ! je me rend compte que ça doit être lourd à la fin mais personne d'autre ne veux m'aider ! :s

  15. #15
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    Ok, procédons avec méthode :o).

    1. Un enlève tes critères de date.
    2. Voit si tu as un résultat.
    3. Passe en mode design de requête (pas le mode SQL)
    4. Met 1 seul critère de date dans la colonne de sélection >=DateSerial(2012,06,01)Voit si tu as un résultat.
    5. Met 1 seul critère de date dans la colonne de sélection <=DateSerial(2012,06,30)Voit si tu as un résultat.
    6. Met 1 seul critère de date dans la colonne de sélection between dateSerial(2012,06,01) and dateserial(2012,06,30)Voit si tu as un résultat.

    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.

  16. #16
    Futur Membre du Club
    Inscrit en
    Août 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    pour tous ca me dit : le numéro de l'expression entrée n'est pas valide

    c'est quoi "date serial"? je comprend pas pask je me suis exercé en cours pour de telles requêtes et je n'ai jamais eu de problèmes ! ! ! ce que je ne comprend pas non plus c'est que jai appris à "entourer" les chiffres par des #
    texte : ""
    chiffres : ##

    pk dans ce cas mettre des ()?

  17. #17
    Futur Membre du Club
    Inscrit en
    Août 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    euh... je me pose une question d'un coup ! esk ce foutu problème n'aurai pas un lien avec la nature de la donnée que j'ai choisi pour le champ date? dans le cas présent je lui ai donné le type TEXTE...

  18. #18
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    DateSerial() en 1 seul mot, est une fonction qui prend 3 paramètres (année, mois, jour) et qui 'crée' une date. De plus il s'agit du nom anglais de la fonction. Si tu tape DateSerial dans un access français il va l'accepter et le traduire en français.

    Oui, c'est probablement cela. Si c'est un texte et qu'on lui passe une date, il n'est pas sur que Access convertisse correctement les 2 champs pour pouvoir les comparer.

    Tu as plusieurs possibilités,
    1. soit tu convertis ton champ texte en champ date, la solution idéale.
    2. soit tu convertis ton texte en date (mon second choix)
    3. soit tu convertis ta date en texte.


    Pour la convertir ta date en texte tu peux utiliser Format() (ex : format(dateSerial(2012;06;01);"aaaa-mm-jj"))

    Pour convertir ton texte en date tu peux utiliser Mid() et DateSerial (ex : DateSerial(Mid([TonChamp];5;4); Mid([TonChamp];3;2); Mid([TonChamp];1;2)), en supposant une date au format JJ/MM/AAAA).

    Aussi dans Access français le séparateur de paramètres est le point-virgule ( ; ) alors qu'en anglais et en interne Access utilise la virgule ( , ).

    Enfin pour les délimiteurs de données :

    • " ou ' pour les textes
    • # pour les dates, le problème avec les paramètres date c'est qu'on ne sait jamais trop quelle partie de la date Access va prendre pour le mois ou le jour et que par exemple le 01/02/2012 peut être interprété comme le 1er février 2012 ou le 02 janvier 2012. DateSerial(année, mois, jour) évite toute confusion.
    • pas de délimiteur pour les nombres
    • pas de délimiteur pour les bolléen, utiliser True ou False, représenté parfois par -1 et 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.

  19. #19
    Futur Membre du Club
    Inscrit en
    Août 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    OOOOOUUUIII ! j'ai réussi ! jai changé le type de source : je suis passé de texte à date/heure et jai changé le format : date abrégé. Et voilà ca marche ! merci infiniment pour votre aide ! ! ! ! !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/04/2015, 12h05
  2. Réponses: 2
    Dernier message: 10/10/2013, 09h16
  3. Requête select des données avec un critère de date
    Par funboard dans le forum Oracle
    Réponses: 2
    Dernier message: 21/04/2008, 16h52
  4. Requête sélection avec comme critère: champ vide
    Par droxyme dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/10/2007, 10h24
  5. Requête avec comme critère de recherche un %
    Par Poussy-Puce dans le forum Langage SQL
    Réponses: 1
    Dernier message: 23/03/2006, 20h15

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