FireDAC.Comp.DataSet.TFDDataSet.Locate

De RAD Studio API Documentation
Aller à : navigation, rechercher

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 et AOptions inclut loCaseInsensitive, ou l'index est construit sans soNoCase et AOptions n'inclut pas loCaseInsensitive.
  • 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');

Voir aussi