FindNearest avec RecordSet d'une query

MasterJ Messages postés 37 Date d'inscription jeudi 27 juin 2002 Statut Membre Dernière intervention 13 août 2002 - 1 août 2002 à 22:32
cs_Weckl Messages postés 1 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 20 février 2004 - 20 févr. 2004 à 16:27
BOnjour,

est-il possible se positionné sur un enregistrement le plus pres du nom entré par un user en utilisant un autre champ que l'index de la table. Le Grid contient les resultant d'une query dynamique.

FindNearest et gotoNearest fct ils seulement avec un ttable???

Merci

E_____P
Enjoy Programmation
Jeff

5 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
1 août 2002 à 23:03
Les méthodes FindNearest et GotoNearest ne fonctionnent qu'avec des tables.
C'est logique puisque les TQuery permettent de définir une requête qui renvoient un ensemble de données dont les valeurs sont proches d'une valeur indiquée en paramètre.
Exemple de requête recharchant tous les noms commençant par "du" dans la table clients :

"Select * from clients where lower(nom) like 'du%'";

Ainsi, "dupont", "dupond" ou "durand" satisfont la condition et donneront le même résultat que si l'on utilisait un TTable.

May Delphi be with you.
Delphi advanced
0
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
2 août 2002 à 00:00
Bonsoir DelphiProg,

Locate permet la recherche dans les tables et fonctionne aussi bien avec TTable qu'avec TQuery.

--- :sleepy) Nono du Moulin :sleepy) ---
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
2 août 2002 à 13:24
Affirmatif ! à condition de préciser les bonnes options.
NB : la méthode fonctionne aussi avec les StoredProc. ;)

May Delphi be with you.
Delphi advanced
0
MasterJ Messages postés 37 Date d'inscription jeudi 27 juin 2002 Statut Membre Dernière intervention 13 août 2002
2 août 2002 à 15:21
J'ai testé locate et puis cela fct a merveille... voici le code pour les utilisateur du forum...

procedure Form1.Initialisation();
var option: TlocateOption;
begin
option:=[loPartialKey,loCaseInsensitive];

QforOperation.Locate('IDSupplier',nearestValue,option);
end;

QforOperation est une tquery, IDSupplier est le nom du champ, nearestValue est la valeur recherché, option est les options de recherche.

LoPartialKey permet de se positionné sur le premier enregistrement étant le plus pres de nearestValue.

Merci bcp DelphiProg et Nono

E_____P
Enjoy Programmation
Jeff
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Weckl Messages postés 1 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 20 février 2004
20 févr. 2004 à 16:27
Bonjour, j'ai lu avec attention le problème du FindNearest, car il m'intéresse. J'utilise des locate sur un Adodataset, et cela fonctionne parfaitement avec le fameux LoPartialKey.

Le hic, c'est que LoPartialKey trouve ce qu'on a saisi ou ne trouve pas. Il n'y a pas de notion de valeur "approchante" au même titre que FindNearest.

Par Exemple, je cherche la facture dont le montant = 125, si je ne trouve pas 125, je souhaite me positionner sur la facture ayant pour montant le plus proche de 125, donc 125.50 ou 126 (On va dire le pluis proche après la valeur.)

Qualqu'un a une idée ? A part se taper la recherche bêtement séquentiellement ?
0
Rejoignez-nous