Filtrage de dates dans deux differentes colonnes: conflits

divin1975 Messages postés 81 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 9 novembre 2013 - 11 avril 2013 à 10:35
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 - 25 avril 2013 à 16:55
Salut!

Ces codes fonctionnent bien quand je fais la recherche dans une seule colonne "data_entrada".
Curieusement quand je veux faire une recherche sur differentes colonnes Ca ne marche pas. Voici ce qui ne marche pas:

Client.filter:='Data_entrada>='''+D+'''and Data_saida<='''+F+''''  + ' and ' +'matricule=' +quotedstr(edtmatricule.Text);


 var F,D:string;
begin  

  D:=datetostr(debut.Date);
  F:=datetostr(fin.Date);

  Client.Last;


  Client.filter:='Data_entrada>='''+D+'''and Data_entrada<='''+F+''''  + ' and ' +'matricule=' +quotedstr(edtmatricule.Text);
  Client.filtered:= True;

  if Client.Eof then
  begin
  showMessage('Pedido não encontrado. Obrigado!');
  end
  else begin
  QRFiche_technique.Preview;

10 réponses

sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
11 avril 2013 à 14:49
Salut,

A première vue, pas d'erreur dans ton code. Elle doit plutôt être dans la composition de ton filtre.

Ajoute un showmessage(Client.Filter) après la ligne "Client.filtered:= True;". Tu vas voir ton filtre apparaître et tu peux contrôler si c'est vraiment les données que tu cherches à récupérer.

Quand tu dis "ça ne marche pas", ça veut dire que tu as le message 'Pedido não encontrado. Obrigado!' qui s'affiche ou bien as tu un message d'erreur ? (pense à le préciser lors de tes prochaines interventions, on n'est pas devant ton écran, donc si tu veux une résolution rapide, donne de suite plus de détails... )

Simon
0
divin1975 Messages postés 81 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 9 novembre 2013
11 avril 2013 à 16:34
Merci pour cette intervention.
Du moins, j'ai mis cette ligne showmessage(Client.Filter) après Client.filtered:= True;
En faisant le filtre par exemple de la date 09-04-2013 se trouvant dans la colonne 'Data_entrada' et 11-04-2013 dans la colonne 'Data_saida'. Ce message apparait: Data_entrada>='09-04-2013'and 'Data_saida'<='11-04-2013'
Malgré tout le filtrage est 'tordu' c'est dire qu'il n'affiche pas les données filtrées entre les deux colonnes.
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
11 avril 2013 à 16:45
Les dates ne correspondent pas, c'est ça ?
Est-ce que ça ne viendrait pas de ton séparateur de date ?
Essaie en rajoutant :
DateSeparator := '/';
entre le begin et
D:=datetostr(debut.Date);
F:=datetostr(fin.Date);

Simon
0
divin1975 Messages postés 81 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 9 novembre 2013
15 avril 2013 à 15:51
@simonpelloquin

je ne sais pas si c'est moi qui ne comprends pas ou c'est peut être ma table.
As-tu aussi essayé pour voire si les dates de deux colonnes differentes ne posent aucun problème lors du filtrage?

Merci.
0

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

Posez votre question
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
15 avril 2013 à 17:22
J'ai fait un test sur une table paradox.
C'est quel type de base de données que tu utilises ?


Simon
0
divin1975 Messages postés 81 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 9 novembre 2013
17 avril 2013 à 11:13
j'utilise une table MsAcess.
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
17 avril 2013 à 11:54
ah alors il me semble que le format de date est différent sous access...
Essaie en mettant un "#" avant et après ta date :
Data_entrada >= #09/04/2013# and Data_saida <= #11/04/2013#

petite remarque, j'ai l'impression que tu as deux apostrophes en trop :
Data_entrada>='09-04-2013'and '
Data_saida'
<='11-04-2013'



Simon
0
cs_yanb Messages postés 271 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2022 14
17 avril 2013 à 12:47
Salut,
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'}
Autres piste Ici et Ici
@+
0
divin1975 Messages postés 81 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 9 novembre 2013
25 avril 2013 à 16:45
En faisant ceci, je recois ce message: les arguments sont incorrects, sont en dehors de l'interval accetables...

Quand je fais du Ctrl + F9 il accepte la precompilation. Mais quand je clique sur le bouton pour faire du filtre... Il donne ce message ci-haut.

Client.filter:='#Data_entrada>=#'+D+ ' and ' +'#Data_saida<=#'+F+'''';
Client.filtered:= True;
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
25 avril 2013 à 16:55
Avant le "Client.filtered:= True;", fais un showmessage(Client.filter) et poste le contenu du message ici. Comment tu veux qu'on devine les dates que tu as choisies ???

Mais je pense que l'erreur est ailleurs... Relis mon dernier message, ce n'est pas sur les noms de champs que je t'ai dit de mettre des "#" !!!!


Simon
0
Rejoignez-nous