DbGrid recherche [Résolu]

cs_tigrou19 67 Messages postés vendredi 15 août 2003Date d'inscription 5 décembre 2005 Dernière intervention - 3 oct. 2004 à 09:28 - Dernière réponse : cs_tigrou19 67 Messages postés vendredi 15 août 2003Date d'inscription 5 décembre 2005 Dernière intervention
- 18 avril 2005 à 19:58
Bonjour,
voilà je fait une recherche dans mon Db grid à l'aide du filtre en utilisant ce code

procedure TForm1.Edit1Change(Sender: TObject);
var Filtre : string;
begin Filtre :'Nom''' + Edit1.Text + '*''';
if Edit1.Text ='' then
begin
clientdataset1.Filtered:=false;
exit;
end;
clientdataset1.Filter := Filtre;
clientdataset1.Filtered := true;
ça fonctionne bien mais je suis obligé de respecter majuscule et minuscule est il possible d'éviter cela.
Merci
Didier
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 8 oct. 2004 à 08:39
3
Merci
Ca fait toujours plaisir de se décarcasser pour apporter une réponse à une question et de voir qu'on n'est même pas remercié. :(
J'en tirerai les conséquences qui s'imposent en ce qui te concerne. :sad)
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
May Delphi be with you

Merci cs_Delphiprog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_Delphiprog
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 3 oct. 2004 à 10:10
0
Merci
L'utilisation de la propriété Filter d'un ensemble de données a ses limites.
Sans compliquer les choses, voire même en simplifiant le code, l'utilisation de l'évènement OnFilterRecord apporte beaucoup de souplesse.
Démonstration : mettons d'abord la propriété Filtered à vrai si le contenu de Edit1 n'est pas vide
procedure TFrmMain.Edit1Change(Sender: TObject);
begin
  clientdataset1.Filtered := Edit1.Text <> EmptyStr;
end;


Ensuite, traitons le contenu de chaque ligne dans l'évènement OnFilterRecord et ne tenant pas compte de la casse des caractères :
procedure TFrmMain.clientdataset1FilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin  Accept :AnsiCompareText(DataSet.FieldByName('Nom').AsString, Edit1.Text) 0;
end;


Si tu utilises des champs persistants, alors il vaut mieux les utiliser pour gagner encore en performances :
procedure TFrmMain.clientdataset1FilterRecord(DataSet: TDataSet;
  var Accept: Boolean);
begin  Accept :AnsiCompareText(clientdataset1Nom.AsString, Edit1.Text) 0;
end;


Comme tu le vois (ou tu le devines), l'utilisation de OnFilterRecord fait que l'on peut mettre autant de critères de filtrages que l'on veut et obtenir une souplesse de fonctionnement incomparable à celle de la modification de propriété Filter.
De plus, dans le cas présent, nous n'avons utilisé QUE deux lignes de codes... :big)
Elle est pas belle la vie ? :approve)

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
May Delphi be with you
Commenter la réponse de cs_Delphiprog
cs_tigrou19 67 Messages postés vendredi 15 août 2003Date d'inscription 5 décembre 2005 Dernière intervention - 18 avril 2005 à 19:58
0
Merci
je viens à l'instant ce retouver ce post et je m'aperçoit en effet que je n'est
pas répondu, c'est un peu tard mais merci beaucoups et milles excuses
la prochaine fois je ferais plus attention
Didier
Commenter la réponse de cs_tigrou19

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.