ADOQuery et filtrage entre deux dates

cs_MohInfo Messages postés 58 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 14 juin 2011 - 16 avril 2010 à 12:45
aminedelphi Messages postés 49 Date d'inscription samedi 26 janvier 2008 Statut Membre Dernière intervention 9 mars 2011 - 9 mars 2011 à 13:16
bonjou/Bonsoir a tous
je veux juste savoire ou se situe le probléme dans ce code

ADOQuery1.Active := False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'Select * From Stagiére where DateDinscription >= '
+ QuotedStr(DateToStr(DateTimePicker1.Date)) + 'and DateDinscription <=' + QuotedStr(DateToStr(DateTimePicker2.Date));

ImpRimerLeMouvementsDesInscrits.Preview;

je veux afficher dans un QReport la liste des stagiéres inscrits entre deux dates mais le filtrage ne march plus

merci pour votre aide

12 réponses

cs_MohInfo Messages postés 58 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 14 juin 2011
16 avril 2010 à 17:52
pour quoi vous m'aidez pas !!
0
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
16 avril 2010 à 18:29
Bonjour.

Tu fais une comparaison entre 2 dates converties en string.
DateToStr renvoie un string avec le format local utilisé --> '16/04/10'.
Ce qui fait que p.ex. '31/01/10' va être considéré comme supérieur à '16/04/10'. (31 > 16)
Il faut convertir la date au format année-mois-jour : soit 'yyyymmdd'.

FormatDateTime('yyyymmdd', DateTimePicker1.Date);


Puisque ton champ DateDinscription est du type caractères, tu dois d'abord le convertir en Date puis le reconvertir en string au bon format.

Pourquoi ne pas employer un champ de type Date ? C'est plus facile pour la comparaison.

A +
Thierry
0
cs_MohInfo Messages postés 58 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 14 juin 2011
16 avril 2010 à 18:57
merci pour votre réponse
mais comment puis je convertir le champ DateDinscription dans la requéte SQL !!
----

quand je déclare le champ datedinscription de type date il m'affiche le date puis l'heur de coté,
c pour ça j'ai déclarer ce champ de type string puis j'ai met un mask de saisie pour n'accepte que le format date;
0
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
16 avril 2010 à 19:24
FormatDateTime('yyyymmdd', StrToDate(DateDinscription))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MohInfo Messages postés 58 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 14 juin 2011
16 avril 2010 à 20:45
et comment puis je reformuler la requéte entiére d'une maniére correcte ?
merci
0
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
17 avril 2010 à 09:40
Dans ton cas, le plus simple est de déclarer le champ datedinscription de type date.
Je n'ai jamais travaillé avec Ado, mais il doit y avoir un type qui ne prend en compte que la date et pas l'heure.
Sinon, tu formates le champ pour ne pas afficher l'heure.
0
cs_MohInfo Messages postés 58 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 14 juin 2011
17 avril 2010 à 10:10
merci bien pour votre participation je vais changer la manière de formuler la requête
à bientot
0
tadlaoui7amel Messages postés 13 Date d'inscription samedi 17 avril 2010 Statut Membre Dernière intervention 18 mai 2010
23 avril 2010 à 15:53
slt.tu peut le faire d'une manière plus facile. tu fait une requête Access avec les tables dont ta besoin.tu utilises deux 'DateTimePicker' avec un message dans un Label "veillez inserez une date entre :" .tu relis un ado table avec la table requte que ta créé. puis tu saisie ce code source dans un bouton 'OK' :
if datetimepicker1.date>datetimepicker2.Date then showmessage('veuillez inserez la date correctement')
else
adotable1.filtered:=true;
c mieux. j'espere que ca t'aidera
0
cs_MohInfo Messages postés 58 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 14 juin 2011
23 avril 2010 à 16:44
merci tadlaoui7amel
mais moi je veux afficher le liste des inscrits entre deus dates distinctes pas dans une seule date
j'ai presque une semaine compléte de recherche de solution mais pas de solution jusqu'a présent
le problème c le type date moi j'ai déclarer le champ dateDinscription de type string puis j'ai mis un mask de saisie au format date jj-mm-aaaa
et je mis le champ de type date il m'affiche l'heure à coté de lui puis le filtrage ne march plus
I'm very tired
merci bien pour votre aide
0
tadlaoui7amel Messages postés 13 Date d'inscription samedi 17 avril 2010 Statut Membre Dernière intervention 18 mai 2010
23 avril 2010 à 17:04
j'ai compris c bon.je verrai s ke j peux faire. keep traying ok.
0
aminedelphi Messages postés 49 Date d'inscription samedi 26 janvier 2008 Statut Membre Dernière intervention 9 mars 2011
9 mars 2011 à 13:11
pour une date
var
d : String;
begin
d:=FormatDateTime('mm/dd/yy', Calendar1.Date);
ADOQuery1.Active := false ;
ADOQuery1.SQL.Text := 'SELECT * FROM Ma_Table WHERE Ma_date= #'+d+'#';
ADOQuery1.Active := true ;
end;

ou bien pour deux date

var
d1,d2 : String;
begin
d1:=FormatDateTime('mm/dd/yy', Calendar1.Date);
d2:=FormatDateTime('mm/dd/yy', Calendar2.Date);
ADOQuery1.Active := false ;
ADOQuery1.SQL.Text := 'SELECT * FROM Ma_Table WHERE Ma_date between #' + d1 + '# AND #' +d2 + '#';
ADOQuery1.Active := true ;
end;
0
aminedelphi Messages postés 49 Date d'inscription samedi 26 janvier 2008 Statut Membre Dernière intervention 9 mars 2011
9 mars 2011 à 13:16
est pour la table en Access il faut que le champ soit de type date
0
Rejoignez-nous