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 26/07/2011, 21h59   #1
Membre régulier
 
Inscription : mars 2008
Messages : 210
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 210
Points : 70
Points : 70
Par défaut tri sur date en fonction de données issues d'un formulaire

Bonjour,

J'essaye d'effectuer un tri sur une table "facture" en fonction de la date d'envoi ([dateenvoi])<;

Pour effectuer ce tri, j'entre une période dans un formulaire car l'idée est de trouver les factures envoyées sur cette période pour effectuer des stats :

me.texte75= début de la période (format date abrégée du type 15/01/2011)
me.texte77= fin de la période (format date abrégée, idem)

J'utilise comme condition WHERE quelque chose du type :

Code :
1
2
3
4
strSQL = "SELECT DISTINCTROW " & strTable & ".*"
    strSQL = strSQL & " FROM " & strTable
 
    strSQL = strSQL & " WHERE ((" & strCriteria & ") and (facture.dateenvoi between " & Format(Me.Texte75, "dd/mm/yyyy") & " and  " & Format(Me.Texte77, "dd/mm/yyyy") & ")); "
J'ai bien des résultats mais ils sont erronés ... ainsi je trouve des factures de 2009 et 2008 si je fais une recherche sur la période de janvier à juillet 2011.

J'avoue ne plus savoir quoi faire :

- j'ai essayé sans l'instruction "format"
- j'ai essayé avec des # pour encadrer mes dates avec la fonction FORMAT et sans celle-ci
- j'ai essayé cdate(format ...) sans succès ...
- j'ai essayé la fonction "format" avec "mm/dd/yyyy"

Si quelqu'un pouvait me préciser l'erreur de syntaxe ... ce serait 'achement sympa car, là, je sèche ....

Merci

PS : la clause WHERE, lorsqu'elle ne contient que le 'strcriteria', fonctionne parfaitement ... le problème vient donc nécessairement du traitement des dates de la période recherchée...
emulamateur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 09h02   #2
Membre régulier
 
Homme Michaël
Développeur .NET
Inscription : avril 2008
Messages : 80
Détails du profil
Informations personnelles :
Nom : Homme Michaël
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : avril 2008
Messages : 80
Points : 84
Points : 84
Bonjour,

Tant qu'a tout essayer, as tu essayé datevalue?

Code :
1
2
3
    strSQL = "SELECT DISTINCTROW " & strTable & ".*"
    strSQL = strSQL & " FROM " & strTable
    strSQL = strSQL & " WHERE ((" & strCriteria & ") and (facture.dateenvoi between DateValue('" & Me.Texte75 & "') and  DateValue('" & Me.Texte77 & "'))); "
mkl238 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 09h15   #3
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Bonjour,

La syntax correcte est :

Code :
strSQL = strSQL & " WHERE ((" & strCriteria & ") and (facture.dateenvoi Between Format(#" & Me.Texte75 & "#,'mm/dd/yyyy') And Format(#" & Me.Texte77 & "#,'mm/dd/yyyy'))); "
Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 12h42   #4
Membre régulier
 
Inscription : mars 2008
Messages : 210
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 210
Points : 70
Points : 70
Bonjour,

Merci de ces pistes mais, malheureusement, cela me retourne toujours de mauvais résultats.

emulamateur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 15h09   #5
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Vous pouvez essayer :

Code :
strSQL = strSQL & " WHERE ((" & strCriteria & ") and (facture.dateenvoi Between Format(#" & Me.Texte75 & "#,'dd/mm/yyyy') And Format(#" & Me.Texte77 & "#,'dd/mm/yyyy'))); "
même si je doute au vu des symptomes, l'inversion jour/mois s'expliquant, le retour d'années hors fourchette me laissant dubitatif ...

Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 20h02   #6
Membre régulier
 
Inscription : mars 2008
Messages : 210
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 210
Points : 70
Points : 70
Vraiment désolé et confus

Le code suivant était bien le bon :

Code :
strSQL = strSQL & " WHERE ((" & strCriteria & ") and (facture.dateenvoi Between Format(#" & Me.Texte75 & "#,'mm/dd/yyyy') And Format(#" & Me.Texte77 & "#,'mm/dd/yyyy'))); "
Problème de copier/coller ...

Encore désolé ...

Mais un très grand merci
emulamateur 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 15h07.


 
 
 
 
Partenaires

Hébergement Web