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 particulier ayant les valeurs spécifiées et en fait l'enregistrement en cours.
Utilisez Locate pour rechercher dans l'ensemble de données un enregistrement particulier ayant les valeurs spécifiées et en faire l'enregistrement en cours.
AKeyFields
est une liste de noms de champs séparés par des points-virgules dans laquelle votre recherche doit être effectuée.
AKeyValues
est un Variant contenant les valeurs à mettre en correspondance avec les champs clés. Si AKeyFields
contient un nom de champ unique, AKeyValues
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 la valeur loCaseInsensitive
, Locate ignore la casse lors de la mise en correspondance des champs. Si AOptions
contient la valeur loPartialKey
, le paramètre AKeyValues
peut contenir une chaîne incomplète.
Si un enregistrement correspondant est trouvé, le premier enregistrement devient l'enregistrement en cours et Locate renvoie True.
Pour optimiser la recherche d'enregistrements, l'application peut définir un index client. L'index est utilisé par Locate lorsque toutes les conditions suivantes sont réunies :
- La liste des champs d'index utilise en préfixe les champs
AKeyFields
. - Lorsque l'index est construit avec l'option
soNoCase
,AOptions
inclutloCaseInsensitive
. Si l'index est construit sanssoNoCase,
AOptions
n'inclut pasloCaseInsensitive
. - L'index est actif et à jour.
Exemple
CustTable.IndexFieldNames := 'ID';
if CustTable.Locate('ID', 1001, []) then
CustTable.Delete
else
ShowMessage('The customer with ID=1001 is not found');