Data.Win.ADODB.TCustomADODataSet.Seek

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

function Seek(const KeyValues: Variant; SeekOption: TSeekOption = soFirstEQ): Boolean;

C++

bool __fastcall Seek(const System::Variant &KeyValues, TSeekOption SeekOption = (TSeekOption)(0x0));

Propriétés

Type Visibilité  Source Unité  Parent
function public
Data.Win.ADODB.pas
Data.Win.ADODB.hpp
Data.Win.ADODB TCustomADODataSet

Description

Recherche un enregistrement en utilisant l'index en cours.

Appelez la méthode Seek pour rechercher un enregistrement contenant les valeurs spécifiées pour les champs sur lesquels l'index est basé. Pour utiliser Seek, un index doit être actif. Le champ utilisé pour la recherche est celui constituant l'index en cours. Seek déplace le pointeur d'enregistrement de l'ensemble de données en fonction de la réussite de la recherche. Si la recherche trouve un enregistrement, le pointeur d'enregistrement est déplacé sur cet enregistrement. Si Seek ne trouve pas d'enregistrement correspondant aux valeurs de KeyValues en utilisant la méthode de comparaison spécifiée par SeekOption, le pointeur d'enregistrement est positionné à la fin de l'ensemble de données. Seek renvoie une valeur booléenne indiquant la réussite de la recherche : true si un enregistrement a été trouvé et false sinon.



SuccessVar := ADODataSet1.Seek('Jones', soFirstEQ);



SuccessVar = ADODataSet1->Seek("Jones", soFirstEQ);



Si l'index en cours est basé sur plusieurs champs, il faut spécifier à la méthode Seek des valeurs de recherche pour tous les champs de l'expression d'index dans l'ordre de gauche à droite. Donc, si l'index est basé sur trois champs, il est possible d'effectuer la recherche sur le premier champ, sur les deux premiers champs ou sur les trois champs. Il n'est pas possible de l'effectuer uniquement sur le troisième champ ou sur une combinaison du premier et du troisième champ. Pour effectuer une recherche sur plusieurs champs, transmettez un tableau variant à la méthode Seek.

KeyValues contient la valeur à rechercher, ou plusieurs valeurs si l'index est basé sur plusieurs champs.



ADODataSet1.Seek(VarArrayOf([90030, 90020]), soFirstEQ);



ADODataSet1->Seek(VarArrayOf(OPENARRAY(Variant, (90030, 90020))), soFirstEQ);



SeekOption spécifie le type de comparaison effectuée pour déterminer si la recherche est réussie. SeekOption peut prendre l'une des valeurs suivantes :



Option de recherche Signification

soFirstEQ

Le pointeur d'enregistrement est positionné sur le premier enregistrement correspondant, s'il y en a un ou à la fin de l'ensemble de données sinon.

soLastEQ

Le pointeur d'enregistrement est positionné sur le dernier enregistrement correspondant, s'il y en a un ou à la fin de l'ensemble de données sinon.

soAfterEQ

Le pointeur d'enregistrement est positionné sur l'enregistrement correspondant, s'il y en a un ou juste après l'endroit où cet enregistrement correspondant a été trouvé.

soAfter

Le pointeur d'enregistrement est positionné juste après l'endroit où l'enregistrement correspondant a été trouvé.

soBeforeEQ

Le pointeur d'enregistrement est positionné sur l'enregistrement correspondant, s'il y en a un ou juste avant l'endroit où cet enregistrement correspondant a été trouvé.

soBefore

Le pointeur d'enregistrement est positionné juste avant l'endroit où l'enregistrement correspondant a été trouvé.



L'utilisation de la méthode Seek dépend des paramètres de quelques propriétés. IndexName doit être défini pour activer l'index à utiliser, CommandType doit être à cmdTableDirect (pour TADODataSet, affectez la valeur true à TableDirect pour un objet TADOTable), CursorLocation à clUseServer et CursorType à ctKeySet.

Remarque :  La méthode Seek de la VCL est une implémentation directe de la méthode Seek de l'objet Recordset ADO. A l'écriture de cette rubrique, cette méthode est gérée uniquement pour une utilisation avec Microsoft Access2000 et le fournisseur Jet 4.

Voir aussi