FireDAC.Comp.DataSet.TFDDataSet.LocateEx

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

function LocateEx(const AKeyFields: string; const AKeyValues: Variant;  AOptions: TFDDataSetLocateOptions = []; ApRecordIndex: PInteger = nil): Boolean; overload; virtual;
function LocateEx(const AExpression: string;  AOptions: TFDDataSetLocateOptions = []; ApRecordIndex: PInteger = nil): Boolean; overload; virtual;

C++

virtual bool __fastcall LocateEx(const System::UnicodeString AKeyFields, const System::Variant &AKeyValues, TFDDataSetLocateOptions AOptions = TFDDataSetLocateOptions() , System::PInteger ApRecordIndex = (System::PInteger)(0x0))/* overload */;
virtual bool __fastcall LocateEx(const System::UnicodeString AExpression, TFDDataSetLocateOptions AOptions = TFDDataSetLocateOptions() , System::PInteger ApRecordIndex = (System::PInteger)(0x0))/* overload */;

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 spécifié par ses valeurs de champs ou ses expressions prédicat, rend l'enregistrement actif et renvoie son index.

Cette méthode est surchargée :

  • Utilisez la première méthode surchargée LocateEx pour rechercher dans un ensemble de données un enregistrement avec des valeurs de champ spécifiées et en faire l'enregistrement en cours, si une concordance est trouvée.AKeyFields est une liste de noms de champs séparés par des points-virgules dans laquelle rechercher. AKeyValues est un variant contenant les valeurs à mettre en correspondance avec les champs clés. Si AKeyFields contient un seul nom de champ, 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.
  • Utilisez la seconde méthode surchargée LocateEx pour rechercher dans l'ensemble de données un enregistrement correspondant à l'expression prédicat et en faire l'enregistrement en cours, si une correspondance est trouvée. AExpression est une chaîne contenant l'expression prédicat dans laquelle rechercher. L'expression ne peut pas contenir de fonctions d'agrégation, comme SUM, COUNT, et le prédicat doit évaluer la valeur comme étant True ou False. FireDAC supporte la syntaxe étendue des expressions.

AOptions est un ensemble qui spécifie éventuellement des modes de recherche supplémentaires :

Option

Description

lxoCaseInsensitive

Lorsque cette option est incluse, LocateEx ignore les majuscules/minuscules lors de la mise en correspondance des valeurs chaîne.

lxoPartialKey

Lorsque cette option est incluse, l'expression peut spécifier des chaînes incomplètes pour la comparaison des valeurs chaîne.

lxoFromCurrent

Lorsque cette option est incluse, LocateEx commence la recherche à partir de l'enregistrement suivant dans l'ensemble de données. Sinon, elle commence la recherche à partir du début.

lxoBackward

Lorsque cette option est incluse, LocateEx recherche l'enregistrement vers l'arrière. Sinon, elle recherche vers l'avant.

lxoCheckOnly

Lorsque cette option est incluse, LocateEx n'effectue pas les opérations suivantes :

  • Changer la position actuelle.
  • Déclencher des événements BeforeScroll/AfterScroll.
  • Terminer le mode modification.

lxoNoFetchAll

Lorsque cette option est incluse, FetchAll n'est pas appelée. La recherche est effectuée dans les enregistrements déjà extraits.

Si un enregistrement correspondant est trouvé, LocateEx renvoie True. L'enregistrement trouvé devient l'enregistrement en cours si lxoCheckOnly n'est pas spécifié. La variable pointée par ApRecordIndex reçoit l'index de l'enregistrement trouvé si ApRecordIndex n'est pas nil.

Pour optimiser la recherche d'enregistrements, l'application peut configurer un index client. Cet index est utilisé par LocateEx 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 lxoCaseInsensitive. Sinon, l'index est construit sans l'option soNoCase et AOptions n'inclut pas lxoCaseInsensitive.
  • L'index est actif et en cours.

Exemple

procedure TForm1.BtnFindClick(ASender: TObject);  begin    if not CustTable.LocateEx('COMPANY', 'AMCO', [lxoCaseInsensitive]) then      ShowMessage('The customer from AMCO company is not found');  end;    procedure TForm1.BtnNextClick(ASender: TObject);  begin    if not CustTable.LocateEx('COMPANY', 'AMCO', [lxoCaseInsensitive, lxoFromCurrent]) then      ShowMessage('The customer from AMCO company is not found');  end;

Voir aussi