Réponse acceptée !
Dans tous les cas, avec le code que tu fournis, tu effectues une recherche sur la colonne correspondant au champ nom.
Or, avec la méthode FindNearest, la recherche s'effectue toujours sur la clé.
Pour effectuer une recherche sur n'importe lequel des champs, il vaut mieux utiliser la méthode Locate.
function Locate(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions ): Boolean;
|
Exemple :
if Table1.Locate('Prenom', Edit1.Text, [loCaseInsensitive, loPartialKey]) then ShowMessage('Eurêka !');
|
=>Recherche dans le champ "Prenom" la valeur contenue dans Edit1.Text sans tenir compte de la casse avec une correspondance partielle.
Maintenant, il faudrait aussi demander à l'utilisateur dans quelle colonne il veut rechercher une valeur.
May Delphi be with you-------------------------------
Réponse au message :
-------------------------------
> Bonjour à tous,
>
> Dans une application utilisant une base de données paradox,
> j'ai une fiche d'exploitation utilisant une DBGrid affichant les champs désirés
> comme ( Nom , prénom, age etc..) classique quoi !.
> Pour me faciliter la vie j'ai ajouté une boite de recherche avec la possibilité
> de faire une recherche par nom,par prénom ou par age via une sélection
> aupréalable par bouton radio.
> Lorsque je fais une recherche par le premier champ ( Nom ), tous se passe bien,
> mais dès que je fais une recherche par le deuxième champ ( Prénom ),
> comme pour les suivants, la requête de recherche aboutie bien,
> mais l'ordre alphabétique d'affichage est complètement bouleversé.
>
> Le code utilisé pour la recherche est :
>
> begin
> if BoutonRadio.Checked then
> Table1.IndexName := 'idx_name';
> Table1.FindNearest([Edit1.Text]);
> end;
>
> Si quelqu'un pouvait m'expliquer pourquoi et m'aider à trouver une solution,
> ce serait très sympa de sa part.
>
> Merci d'avance à tous ceux qui me permettront de résoudre ce problème.