FireDAC.Comp.DataSet.TFDDataSet.LocateEx
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. SiAKeyFields
contient un seul nom de champ,AKeyValues
est une valeur simple. SiAKeyFields
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, commeSUM
,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 |
---|---|
|
Lorsque cette option est incluse, LocateEx ignore les majuscules/minuscules lors de la mise en correspondance des valeurs chaîne. |
|
Lorsque cette option est incluse, l'expression peut spécifier des chaînes incomplètes pour la comparaison des valeurs chaîne. |
|
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. |
|
Lorsque cette option est incluse, LocateEx recherche l'enregistrement vers l'arrière. Sinon, elle recherche vers l'avant. |
|
Lorsque cette option est incluse, LocateEx n'effectue pas les opérations suivantes :
|
|
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
etAOptions
inclutlxoCaseInsensitive
. Sinon, l'index est construit sans l'optionsoNoCase
etAOptions
n'inclut paslxoCaseInsensitive
. - 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;