Filtrer les données de DBGrid connecté à ADOQuery [Résolu]

Signaler
Messages postés
19
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
1 août 2006
-
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
-
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

Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
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+
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
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+
Messages postés
19
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
1 août 2006

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

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

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,

 
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
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+
Messages postés
53
Date d'inscription
samedi 27 mars 2004
Statut
Membre
Dernière intervention
1 août 2006

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
Messages postés
19
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
1 août 2006

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
 
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
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+
Messages postés
19
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
1 août 2006

Salut Mauricio,

Voici le filtre tel qu'il apparaît :
(Libelle>='m') and (Libelle<='m'ZZZ)
A+
Cobuce
 
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
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+