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 :

Utilisation de Datediff dans une requête SQL [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 278
    Points : 132
    Points
    132
    Par défaut Utilisation de Datediff dans une requête SQL
    Bonjour,

    Est-il possible d'utiliser Datediff dans une requête SQL ?
    Je rencontre un peu de mal à coder cela.
    Voici ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     strReq = "SELECT ColA, ColB " & _
              "FROM MA_TABLE " & _
              "WHERE ColA = '" & VariableA & "' " & _
              "AND (Datevalue(DateDiff(""m"",Date_1,Date_2)) < 3) " & _
               "GROUP BY ColA, ColB"
    Elle ne fonctionne pas.

    D'avance merci.

  2. #2
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Normalement c'est possible.
    Il faut juste remplacer les double quotes par Chr(34) (qui retourne ") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     strReq = "SELECT ColA, ColB " & _
              "FROM MA_TABLE " & _
              "WHERE ColA = '" & VariableA & "' " & _
              "AND Datevalue(DateDiff(" & Chr(34) & "m" & Chr(34) ",Date_1,Date_2)) < 3 " & _
               "GROUP BY ColA, ColB"
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 278
    Points : 132
    Points
    132
    Par défaut
    ca ne fonctionne pas, l'erreur étant: "Attendu: fin d'instruction"...Il doit manquer une double quote ou une parenthèse mais je n'arrive pas à voir où

  4. #4
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Non c'est bon au niveau des guillemets.

    Par contre, je ne comprends pas pourquoi tu convertis en date la différence entre deux dates en mois avec DateValue.
    Tu veux bien afficher les enregistrements dont la différence entre les deux dates est de moins de trois mois ?
    Si c'est le cas, il est inutile de convertir le résultat en date.

    D'autre part Date_1 et Date_2 sont bien des champs de ta table ?

    Enfin, je ne comprends pas pourquoi tu fais un GROUP BY.
    Ce ne serait pas plutôt ORDER BY ?

    Voilà comment je vois les choses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     strReq = "SELECT ColA, ColB " & _
              "FROM MA_TABLE " & _
              "WHERE ColA = '" & VariableA & "' " & _
              "AND DateDiff(" & Chr(34) & "m" & Chr(34) ",Date_1,Date_2) < 3 " & _
              "ORDER BY ColA, ColB;"
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 278
    Points : 132
    Points
    132
    Par défaut
    Alors, apparemment, il faut utiliser des simples quotes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND (Datevalue(DateDiff('m',Date_1,Date_1)) < 3 )
    N.B: La requête est utilisée dans du code VBA, pas dans le requêteur access...

  6. #6
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Citation Envoyé par ted the Ors Voir le message
    Alors, apparemment, il faut utiliser des simples quotes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND (Datevalue(DateDiff('m',Date_1,Date_1)) < 3 )
    N.B: La requête est utilisée dans du code VBA, pas dans le requêteur access...
    Oui oui, j'avais bien compris.
    Ah ben c'est bien que ça fonctionne avec un simple quote. L'aide VBA donne un exemple avec double quote donc je pensais que c'était la seule option possible.
    Tu as vu mes remarques concernant ta requête ?
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 278
    Points : 132
    Points
    132
    Par défaut
    Oui, j'ai bien vu tes remarques
    Tu veux bien afficher les enregistrements dont la différence entre les deux dates est de moins de trois mois ? Si c'est le cas, il est inutile de convertir le résultat en date.
    Tout à fait...Je l'ai d'ailleurs enlevé depuis...J'ai toujours un peu de mal avec la gestion des dates dans les softs Office.

    D'autre part Date_1 et Date_2 sont bien des champs de ta table ?
    Oui

    Enfin, je ne comprends pas pourquoi tu fais un GROUP BY.
    Ce ne serait pas plutôt ORDER BY ?
    Non, non, il s'agit bien d'un group By! Par soucis de confidentialité, j'ai épuré un peu la requête...

    En tout cas, merci pour tes remarques pertinentes...

    Je passe en résolu...

    Bonne fin de journée...

  8. #8
    Membre éprouvé Avatar de azertix
    Homme Profil pro
    Technicien d'assistance informatique
    Inscrit en
    Juin 2007
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien d'assistance informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 958
    Points : 937
    Points
    937
    Par défaut
    Ok compris. À une prochaine sur le forum
    Si ma réponse vous a été utile pensez à voter Pour

    Avant de poster sur le forum Access :
    FAQ > SOURCES > COURS > FORUM > GOOGLE
    Pas de question par MP ou je mords


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

Discussions similaires

  1. Réponses: 13
    Dernier message: 21/05/2010, 16h54
  2. Comment utiliser des variables dans une requête SQL ?
    Par Ragnarok85 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 12/02/2007, 16h23
  3. [SQL] Utilisation de variables dans une requête SQL
    Par heteroclite dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 07/09/2006, 22h38
  4. [SQL] Utilisation de variables dans une requête SQL
    Par heteroclite dans le forum Langage
    Réponses: 8
    Dernier message: 07/09/2006, 22h38
  5. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38

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