Fonction Locate

- - Dernière réponse : cs_cantador
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
- 11 oct. 2012 à 14:59
Bonjour,
je bosse sur une application en Delphi 7 avec MySQL liée par ADO. Sur un formulaire, je veux procéder a la mise a jour ou a la suppression d'une ligne précise de ma table.

Il existe la fonction Locate(KeyFields : String; KeyValues : Variant; Options : TLocateOptions) : Boolean;
qui permet de se positionner sur un enregistrement précis d'une table. Le problème est que j'ignore comment utiliser cette fonction.

J'ai lu la fiche d'aide de Delphi, la fonction y est décrite mais j'ignore comme l'adapter a mon cas. Je rappelle que dans l'exemple d'utilisation, il ont utilisé deux colonnes (dans KeyFields) pour le contrôle, moi je souhaiterais contrôler plus de dix colonnes du même enregistrement a la fois.

Je souhaiterais si possible savoir son principe de fonctionnement avec un exemple a l'appui. Cependant, s'il existe une autre solution, merci de me la communiquer.

Cordialement.
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
111
Date d'inscription
lundi 30 mai 2011
Statut
Membre
Dernière intervention
29 avril 2013
1
1
Merci
salut!!

voila comment ca marche
nom du champ = name
valeur pour localiser= ednom.text
adotable.Locate('Name',ednom.Text,[]);

@+

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 213 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_walidlam
Messages postés
105
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
8 avril 2019
2
0
Merci
Bonjour,
La méthode Locate attend en 1èr paramètre une chaine de caractères indiquant le nom du champ sur lequel la recherche doit porter. Si plusieurs champs sont spécifiés ils doivent être séparés par un point virgule.
Le 2ème paramètre indique les valeurs à rechercher. Si la recherche ne porte que sur un seul champ il faut fournir une seulevcaleur de recherche. Si la recherche porte sur plusieurs champs il faut fournir les critères dans un tableau variant qui se fait par par la routine VarArrayOf.
Le 3ème paramètre indique les options de recherche. TLocateOption = (loCaseInsensitive, loPartialKey)
loCaseInsensitive ne fait de différence entre les minuscules et majuscule
loPartielKey permet d'effectuer la recherche sur les premiers caractères d'un champ. La recherche partielle ne doit s'applique sur le dernier champ.
Source Delphi3 Dick Lantim

Locate(NomduChamp, ItemRecherché, Options de recherche)

Créer un tableau variant
Var
Tab: Variant;
Begin
   Tab := VarArrayOf(['Bonjour', 'Toto', 34]);



pierrot
Commenter la réponse de pierrotk10d
0
Merci
Bonjour pierrot,
merci pour ta réponse. Dans mon cas, les valeurs du Tableau sont les données contenues sur le formulaire.
Par exemple,

Tab:= VarArrayOf([edNom.Text, edTel.Text, ...]);

Est-ce possible que ça marche avec de telles valeurs ???

Merci.
Commenter la réponse de dygbahou89
0
Merci
Je rappelle que j'essaie cela et que je compile, il y a un message d'erreur :

identificateur non déclarée : Locate
Commenter la réponse de dygbahou89
Messages postés
4716
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
9
0
Merci
Bonjour,

et si donnait un exemple avec le code complet ?

MaTable.Locate('champ1;champ2',VarArrayOf([donnee1,donnee2]),[lopartialkey]);


l'exécution de ce code a pour effet de caler Matable sur
l'enregistrement dont les champ1 et champ2 ont respectivement pour valeur
donnee1 et donnee2
avec recherche partielle active.

cantador
Commenter la réponse de cs_cantador