Filtrer les données de DBGrid connecté à ADOQuery

Résolu
Cobuce
Messages postés
19
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
1 août 2006
- 26 juil. 2006 à 14:53
cs_MAURICIO
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
- 1 août 2006 à 14:42
Salut,
j'utilise un DBGrid connecté  ADOQuery pour afficher les données de la base Accès.  Je cherche à filtrer les données en tapant un caractère apha dans Edit. Mais il arrive que lorsque je tape un caractère toutes les données de DBGrid s'efface rien ne reste. Auriez-vous l'amabilité de venir en aide ?. D'avance merci pour toute personne que viendrai en mon secours. Voici le code:

procedure TWddeStock.RzEdit1Change(Sender: TObject);
begin
   if RzEdit1.GetTextLen<> 0 then
   begin
     DMStock.QStock.Filter:= 'Libelle='''+RzEdit1.Text+'*''';
     DMStock.QStock.Filtered:=true;
   end
  else
   DMStock.QStock.Filtered: =false;
end;

A+
Cobuce
 

 

10 réponses

cs_MAURICIO
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
28 juil. 2006 à 18:28
Je viens d' essayer de changer FilterOptions d' une table ADO mais ce n' est pas supporté.

Donc, le seul moyen que je vois  c' est :
DMStock.QStock.Filter:='Libelle>=' + QuotedStr(RzEdit1.Text);

Si tu veux filter mieux tu ajoute ' AND (Libelle<=' + QuotedStr(RzEdit1.Text) + 'ZZZ)';
A+
3
cs_MAURICIO
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
27 juil. 2006 à 21:08
Désolé mais je ne peux pas tester pour l' instant mais tu peux faciliter l' écriture comme ça:
DMStock.QStock.Filter:='Libelle=' + QuotedStr(RzEdit1.Text) + '*';


A+
0
Cobuce
Messages postés
19
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
1 août 2006

27 juil. 2006 à 23:41
Salut Moricio
Merci pour ton intervention. Je viens de tester, mais malheureusement ça ne marche pas. Une erreur s'affiche à l'exécution du genre " Arguments are of the wrong type, are out of acceptable range, or are in conflit with one anather".
Y-a-t-il pas quelqu'un qui peut m'aider ?
A+
Cobuce

 
0
Cobuce
Messages postés
19
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
1 août 2006

30 juil. 2006 à 23:42
Salut Moricio,
Merci pour votre intervention, la permière partie de la solution proposée marche,  mais lorsque j'essai d'ajouter ' AND (Libelle<= ' + QuotedStr(RzEdit1.Text) + 'ZZZ)'; une erreur signalée précédement s'affiche. Voici la procedure après modification, prière vérifier s'il manque qlq chose :
procedure TWddeStock.RzEdit1Change(Sender: TObject);
begin
   if RzEdit1.GetTextLen<> 0 then
   begin
 DMStock.QStock.Filter: ='Libelle>='+QuotedStr(RzEdit1.Text)+
        ' AND (Libelle<=' + QuotedStr(RzEdit1.Text) + 'ZZZ)';
     DMStock.QStock.Filtered:=true;
   end
  else
   DMStock.QStock.Filtered:=false;
end;

A+
Cobuce,

 
0

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

Posez votre question
cs_MAURICIO
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
31 juil. 2006 à 10:13
Salut, 

 DMStock.QStock.Filter:='(Libelle>='+QuotedStr(RzEdit1.Text)+
        ') AND (Libelle<=' + QuotedStr(RzEdit1.Text) + 'ZZZ)';
     DMStock.QStock.Filtered:=true;

Il faut mettre des parenthèses à chaque argument !!!
A+
0
DGPat
Messages postés
53
Date d'inscription
samedi 27 mars 2004
Statut
Membre
Dernière intervention
1 août 2006

31 juil. 2006 à 12:59
Merci Mauricio tu viens de résoudre un problème sur lequel je ramais, c'est du clair net et précis

Ce n'est pas parce qu'on débute que l'on est forcement idiot
DGPat
0
Cobuce
Messages postés
19
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
1 août 2006

31 juil. 2006 à 16:11
Salut Moricio,
Je viens de placer les paranthèses, mais le problème persiste cad la même erreur s'affiche (Arguments are .......) lorsque je tape un caractère dans RzEdit.
Que dois-je faire ?
A+
Cobuce
 
0
cs_MAURICIO
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
31 juil. 2006 à 17:14
As tu bien mis les parenthèses?

tu dois avoir un filtre du genre:
(Libelle>='S') and (Libelle>='SZZZ')

Mets un Breakpoint et dis moi ce que tu as dans Filter ...
A+
0
Cobuce
Messages postés
19
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
1 août 2006

1 août 2006 à 13:38
Salut Mauricio,

Voici le filtre tel qu'il apparaît :
(Libelle>='m') and (Libelle<='m'ZZZ)
A+
Cobuce
 
0
cs_MAURICIO
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
1 août 2006 à 14:42
Bem non:
(Libelle>='m') and (Libelle<='m'ZZZ)
ça doit être comme ça :
(Libelle>='m') and (Libelle<='mZZZ')

Je me suis trompé:
 DMStock.QStock.Filter:='(Libelle>='+QuotedStr(RzEdit1.Text)+
        ') AND (Libelle<=' + QuotedStr(RzEdit1.Text + 'ZZZ') + ')';
Voilà, ça devrait marcher ...
A+
0