Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/01/2011, 10h17   #1
Membre du Club
 
Inscription : juillet 2006
Messages : 153
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 153
Points : 40
Points : 40
Envoyer un message via MSN à ted the Ors
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 :
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.
ted the Ors est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 10h47   #2
Membre émérite
 
Avatar de azertix
 
Homme Lanza Bertucci-Domergue
Développeur informatique
Inscription : juin 2007
Messages : 937
Détails du profil
Informations personnelles :
Nom : Homme Lanza Bertucci-Domergue
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juin 2007
Messages : 937
Points : 995
Points : 995
Normalement c'est possible.
Il faut juste remplacer les double quotes par Chr(34) (qui retourne ") :
Code :
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

azertix est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/01/2011, 11h00   #3
Membre du Club
 
Inscription : juillet 2006
Messages : 153
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 153
Points : 40
Points : 40
Envoyer un message via MSN à ted the Ors
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ù
ted the Ors est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 11h13   #4
Membre émérite
 
Avatar de azertix
 
Homme Lanza Bertucci-Domergue
Développeur informatique
Inscription : juin 2007
Messages : 937
Détails du profil
Informations personnelles :
Nom : Homme Lanza Bertucci-Domergue
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juin 2007
Messages : 937
Points : 995
Points : 995
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 :
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

azertix est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/01/2011, 11h13   #5
Membre du Club
 
Inscription : juillet 2006
Messages : 153
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 153
Points : 40
Points : 40
Envoyer un message via MSN à ted the Ors
Alors, apparemment, il faut utiliser des simples quotes:

Code :
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...
ted the Ors est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 11h16   #6
Membre émérite
 
Avatar de azertix
 
Homme Lanza Bertucci-Domergue
Développeur informatique
Inscription : juin 2007
Messages : 937
Détails du profil
Informations personnelles :
Nom : Homme Lanza Bertucci-Domergue
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

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

Code :
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

azertix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 11h23   #7
Membre du Club
 
Inscription : juillet 2006
Messages : 153
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2006
Messages : 153
Points : 40
Points : 40
Envoyer un message via MSN à ted the Ors
Oui, j'ai bien vu tes remarques
Citation:
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.

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

Citation:
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...
ted the Ors est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 11h25   #8
Membre émérite
 
Avatar de azertix
 
Homme Lanza Bertucci-Domergue
Développeur informatique
Inscription : juin 2007
Messages : 937
Détails du profil
Informations personnelles :
Nom : Homme Lanza Bertucci-Domergue
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juin 2007
Messages : 937
Points : 995
Points : 995
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

azertix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h18.


 
 
 
 
Partenaires

Hébergement Web