FILTER BASE DE DONNEE [Résolu]

delyes 39 Messages postés samedi 4 novembre 2000Date d'inscription 19 janvier 2013 Dernière intervention - 30 mai 2011 à 18:08 - Dernière réponse : cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention
- 14 juin 2011 à 09:27
bonjours tout le monde
j'ai une question s'il vous plait
as que en peut faire un filter entre deux dates aver l'instruction LIKE Sur SQL (base access)
merci d'avance
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
cs_yanb 260 Messages postés lundi 27 octobre 2003Date d'inscription 4 mars 2016 Dernière intervention - 12 juin 2011 à 10:10
3
Merci
Salut,
essaye,
DMD.ADVENTE.SQL.Add('WHERE (((VENTE.Dat_ven) Between '+DateTimePicker1.Date+' And '+DateTimePicker2.Date+'))');
//ou
DMD.ADVENTE.SQL.Add('WHERE (((VENTE.Dat_ven) Between #'+DateTimePicker1.Date+'# And #'+DateTimePicker2.Date+'#))');
//ou
DMD.ADVENTE.SQL.Add('WHERE (((VENTE.Dat_ven) Between '+QuotedStr(DateTimePicker1.Date)+' And '+QuotedStr(DateTimePicker2.Date)+'))');
//ou
DMD.ADVENTE.SQL.Add('WHERE (((VENTE.Dat_ven) Between '+QuotedStr('#'+DateTimePicker1.Date+'#')+' And '+QuotedStr('#'+DateTimePicker2.Date+'#')+'))');
//ou
DMD.ADVENTE.SQL.Add('WHERE VENTE.Dat_ven Between '''#2011-01-01#''' And '''#2011-06-01#'''');

Dans tous les cas il faut trouver le bon format...
Dans un premier temps, essaye en dur avec des dates à la main, ensuite une fontion format qui va bien.
@+yanb

Merci cs_yanb 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_yanb
Meilleure réponse
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 14 juin 2011 à 09:27
3
Merci
mieux encore peut-être :

DateTimeToStr


cantador

Merci cs_cantador 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_cantador
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 31 mai 2011 à 09:38
0
Merci
Bonjour,

à priori non...
le mieux, c'est between.

cantador
Commenter la réponse de cs_cantador
delyes 39 Messages postés samedi 4 novembre 2000Date d'inscription 19 janvier 2013 Dernière intervention - 31 mai 2011 à 13:50
0
Merci
merci cantador
j'ai bloqué d'un filter entre deux date base access source delphi7
asq vous avez une solution svp et merci bq
z
Commenter la réponse de delyes
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 31 mai 2011 à 16:09
0
Merci
chaque SGBD a son propre langage SQL...
et celui d'access, est ch..au possible.
une syntaxe très délicate...et il ne faut pas se priver de tester et re tester..

tu peux essayer d'abord un between brut de décoffrage :
select * from Matable where MonChampDate Between #1/1/2008# And #12/11/2008#

ou la solution que je préfère (quand elle fonctionne sous access)
en utilisant deux TdateTimePicker et des paramètres :

procedure TForm1.Button1Click(Sender: TObject);
// var p1,p2 : TDatetime; pas nécessaire mais...
begin
with ADOquery1 do
begin
Close;
sql.clear;
sql.add('SELECT * from MaTable');
sql.add('WHERE MonChampDate>=:p1 and MonChampDate<=:p2 ');
sql.add('ORDER BY MonChampLibre'); // si tu veux ordonner quelque chose

Parameters.ParamByName('p1').Value:=(datetimepicker1.date); Parameters.ParamByName('p2 ').Value:=(datetimepicker2.date);
Open;
end;


et bien sûr tes champs sont déclarés en DateTime dans la base.

autre astuce possible, tu crées ta requête directement sous access en te servant des assistants..
Une fois cette dernière établie, tu la transformes en SQL toujours sous access.

Tu recopies le script et tu l'intègres à ton code delphi..
on se sort quelquefois de cette manière..

cantador
Commenter la réponse de cs_cantador
delyes 39 Messages postés samedi 4 novembre 2000Date d'inscription 19 janvier 2013 Dernière intervention - 1 juin 2011 à 14:45
0
Merci
bonjour cantador
Vous êtes un homme bon et un magnifique
Merci beaucoup pour votre temps
J'ai essayer toutes les propositions s ensuite vous dire qui est bon
en fin merci

z
Commenter la réponse de delyes
delyes 39 Messages postés samedi 4 novembre 2000Date d'inscription 19 janvier 2013 Dernière intervention - 1 juin 2011 à 15:50
0
Merci
bonjour cantador
J'ai essayer deux TdateTimePicker et des paramètres :
voir se message
type de données incompatibles dans l'expression du critére

et sa le code delphi
with DMD.ADVENTE do
begin
Close;
sql.clear;
sql.add('SELECT * from VENTE');
sql.add('WHERE Dat_ven>=:p1 and Dat_ven<=:p2 ');
sql.add('ORDER BY Num_ven');
Parameters.ParamByName('p1').Value:=(datetimepicker1.date);
Parameters.ParamByName('p2').Value:=(datetimepicker2.date);
Open;
le champs dat_vent et déclaré date/time en access
merci d’avance.

end;

z
Commenter la réponse de delyes
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 6 juin 2011 à 11:16
0
Merci
m'en doutait un peu...
avec access, à chaque fois, il faut y laisser de la sueur..

il faut découvrir le format d'encodage des dates :
soit JJ/MM/AAAA soit en MM/JJ/AAAA ou autre..

pour ça, deux techniques :
- code en dur (voir l'exemple déjà donné)
- ou mettre au point la requête avec access et la convertir en SQL

ensuite adapter le code delphi pour faire la même chose

il faut travailler..

cantador
Commenter la réponse de cs_cantador
delyes 39 Messages postés samedi 4 novembre 2000Date d'inscription 19 janvier 2013 Dernière intervention - 9 juin 2011 à 23:40
0
Merci
salut
avec between ça marche mes il faux paramétré les 2 dates par datedatetimepicker1 et datetimepicker2;

Between #1/1/2008# And #12/11/2008# = Between datedatetimepicker1 and datetimepicker2

ou bien Between p1 and p2

es que en peut paramétré apré l’instruction between?????
vraiment j'ai bloqué
merci a tous.





z
Commenter la réponse de delyes
delyes 39 Messages postés samedi 4 novembre 2000Date d'inscription 19 janvier 2013 Dernière intervention - 10 juin 2011 à 21:28
0
Merci
bonjour
aide moi la requête ne marche pas
voila le code

DMD.ADVENTE.Active:= false;
DMD.ADVENTE.SQL.Clear;
DMD.ADVENTE.SQL.Add('SELECT *');
DMD.ADVENTE.SQL.Add('FROM VENTE');
DMD.ADVENTE.SQL.Add('WHERE (((VENTE.Dat_ven) Between DateTimePicker1.Date And DateTimePicker2.Date))');
DMD.ADVENTE.Active:=true;

et voila le message d'erreur

le parametre DateTimePicker1.Date n'a pas de valeur par défaut

merci
merci
help





z
Commenter la réponse de delyes
cs_yanb 260 Messages postés lundi 27 octobre 2003Date d'inscription 4 mars 2016 Dernière intervention - 11 juin 2011 à 11:18
0
Merci
Salut,
le truc c'est qu'il faut trouver le bon format avec Access, ODBC et les composants.
Comme le dit cantador :
avec access, à chaque fois, il faut y laisser de la sueur...
Avec les composants ADO + ODBC le format doit être de souvenir #yyyy-mm-dd#
Avec les composants BDE + ODBC le format doit être de souvenir {d 'yyyy-mm-dd'}
Regarde Ici ou Ici
Voilà d'autres pistes...
@+yanb
Commenter la réponse de cs_yanb
delyes 39 Messages postés samedi 4 novembre 2000Date d'inscription 19 janvier 2013 Dernière intervention - 11 juin 2011 à 15:33
0
Merci
salut
merci Yand.
j'ai essayer tout les solution possible sa donne rien
vraiment c'est un problème !!!!!!!!!!
j'ai besoin d'un filtre entre deux date basse access code delphi ci tout!!!

comment faire sa ??????????
merci





z
Commenter la réponse de delyes
delyes 39 Messages postés samedi 4 novembre 2000Date d'inscription 19 janvier 2013 Dernière intervention - 12 juin 2011 à 19:43
0
Merci
bonjour

en fin le problème est réglé

sa le code juste
DMD.ADVENTE.SQL.Add('WHERE (((VENTE.Dat_ven) Between #'+DateToStr(DateTimePicker1.Date)+'# And #'+DateToStr(DateTimePicker2.Date)+'#))');

l’astuce est la 'DateToStr(';
merci yand et cantador
et merci tout le monde
lyes





z
Commenter la réponse de delyes

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.