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

Cobuce 19 Messages postés mardi 10 mai 2005Date d'inscription 1 août 2006 Dernière intervention - 26 juil. 2006 à 14:53 - Dernière réponse : cs_MAURICIO 2233 Messages postés mardi 10 décembre 2002Date d'inscription 15 décembre 2014 Dernière intervention
- 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
 

 
Afficher la suite 

Votre réponse

10 réponses

cs_MAURICIO 2233 Messages postés mardi 10 décembre 2002Date d'inscription 15 décembre 2014 Dernière intervention - 28 juil. 2006 à 18:28
+3
Utile
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+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_MAURICIO
cs_MAURICIO 2233 Messages postés mardi 10 décembre 2002Date d'inscription 15 décembre 2014 Dernière intervention - 27 juil. 2006 à 21:08
0
Utile
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+
Commenter la réponse de cs_MAURICIO
Cobuce 19 Messages postés mardi 10 mai 2005Date d'inscription 1 août 2006 Dernière intervention - 27 juil. 2006 à 23:41
0
Utile
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

 
Commenter la réponse de Cobuce
Cobuce 19 Messages postés mardi 10 mai 2005Date d'inscription 1 août 2006 Dernière intervention - 30 juil. 2006 à 23:42
0
Utile
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,

 
Commenter la réponse de Cobuce
cs_MAURICIO 2233 Messages postés mardi 10 décembre 2002Date d'inscription 15 décembre 2014 Dernière intervention - 31 juil. 2006 à 10:13
0
Utile
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+
Commenter la réponse de cs_MAURICIO
DGPat 54 Messages postés samedi 27 mars 2004Date d'inscription 1 août 2006 Dernière intervention - 31 juil. 2006 à 12:59
0
Utile
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
Commenter la réponse de DGPat
Cobuce 19 Messages postés mardi 10 mai 2005Date d'inscription 1 août 2006 Dernière intervention - 31 juil. 2006 à 16:11
0
Utile
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
 
Commenter la réponse de Cobuce
cs_MAURICIO 2233 Messages postés mardi 10 décembre 2002Date d'inscription 15 décembre 2014 Dernière intervention - 31 juil. 2006 à 17:14
0
Utile
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+
Commenter la réponse de cs_MAURICIO
Cobuce 19 Messages postés mardi 10 mai 2005Date d'inscription 1 août 2006 Dernière intervention - 1 août 2006 à 13:38
0
Utile
Salut Mauricio,

Voici le filtre tel qu'il apparaît :
(Libelle>='m') and (Libelle<='m'ZZZ)
A+
Cobuce
 
Commenter la réponse de Cobuce
cs_MAURICIO 2233 Messages postés mardi 10 décembre 2002Date d'inscription 15 décembre 2014 Dernière intervention - 1 août 2006 à 14:42
0
Utile
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+
Commenter la réponse de cs_MAURICIO

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.