dygbahou89
-
10 oct. 2012 à 18:45
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 2021
-
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.
pierrotk10d
Messages postés110Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention 2 février 20243 10 oct. 2012 à 21:54
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]);
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.