FireDAC.Comp.DataSet.TFDDataSet.Locate
Delphi
function Locate(const AKeyFields: string; const AKeyValues: Variant; AOptions: TLocateOptions = []): Boolean; override;
C++
virtual bool __fastcall Locate(const System::UnicodeString AKeyFields, const System::Variant &AKeyValues, Data::Db::TLocateOptions AOptions = Data::Db::TLocateOptions() );
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
function | public | FireDAC.Comp.DataSet.pas FireDAC.Comp.DataSet.hpp |
FireDAC.Comp.DataSet | TFDDataSet |
Description
Recherche dans l'ensemble de données un enregistrement avec les valeurs de champ spécifiées et en fait l'enregistrement en cours.
Utilisez Locate pour rechercher dans l'ensemble de données un enregistrement avec les valeurs de champ spécifiées et en faire l'enregistrement en cours, si une correspondance est trouvée.
AKeyFields
est une liste de noms de champs séparés par des points-virgules dans laquelle rechercher.
AKeyFields
est un variant qui contient les valeurs à mettre en correspondance avec les champs clés. Si AKeyFields
contient un seul nom de champ, AKeyFields
est une valeur simple. Si AKeyFields
contient plusieurs noms de champs, AKeyValues
est un tableau de variants dans lequel les éléments correspondent aux champs clés.
AOptions
est un ensemble de modes de recherche pour les champs chaîne. Si AOptions
contient loCaseInsensitive
, Locate ignore les majuscules/minuscules lors de la mise en correspondance des champs. Si AOptions
contient loPartialKey
, le paramètre AKeyValues
peut contenir des chaînes partielles.
Si un enregistrement correspondant est trouvé, celui-ci devient l'enregistrement en cours et Locate renvoie True.
Pour optimiser la recherche d'enregistrements, l'application peut configurer un index client. Cet index sera utilisé par Locate si les conditions suivantes sont satisfaites :
- La liste des champs de l'index a comme préfixe les champs
AKeyFields
. - L'index est construit avec l'option
soNoCase
etAOptions
inclutloCaseInsensitive
, ou l'index est construit sanssoNoCase
etAOptions
n'inclut pasloCaseInsensitive
. - L'index est actif et en cours.
Exemple
CustTable.IndexFieldNames := 'ID'; if CustTable.Locate('ID', 1001, []) then CustTable.Delete else ShowMessage('The customer with ID=1001 is not found');