Affichage Données dans DBGrid après recherche en BD [Résolu]

cs_lugo
Messages postés
27
Date d'inscription
samedi 29 mars 2003
Dernière intervention
26 mars 2008
- 28 avril 2003 à 08:36 - Dernière réponse : cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
- 29 avril 2003 à 01:28
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.
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
cs_Delphiprog
Messages postés
4580
Date d'inscription
samedi 19 janvier 2002
Dernière intervention
9 janvier 2013
- 29 avril 2003 à 01:28
3
Merci
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

Merci cs_Delphiprog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de cs_Delphiprog

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.