Partager via


Recordset.FindLast, méthode (DAO)

S’applique à : Access 2013, Office 2013

Recherche le dernier enregistrement dans un objet Recordset de type feuille de réponse dynamique ou instantané qui satisfait aux critères spécifiés, et en fait l'enregistrement actif (espaces de travail Microsoft Access uniquement).

Syntaxe

expression . FindLast(Criteria)

expression Variable représentant un objet Recordset.

Paramètres

Nom

Obligatoire/facultatif

Type de données

Description

Critères

Obligatoire

Chaîne

Données de type String utilisées pour localiser l'enregistrement. S'apparente à la clause WHERE d'une instruction SQL sans toutefois le mot WHERE.

Remarques

Si vous voulez inclure tous les enregistrements dans votre recherche (et pas seulement ceux qui répondent à une condition spécifique), utilisez la méthode Move pour passer d'un enregistrement à un autre. Pour localiser un enregistrement dans un objet Recordset de type table, utilisez la méthode Seek.

Si un enregistrement correspondant aux critères n'est pas localisé, le pointeur d'enregistrement actif est inconnu et la propriété NoMatch est définie sur True. Si le recordset contient plusieurs enregistrements correspondant aux critères, FindFirst localise la première occurrence, FindNext localise l'occurrence suivante, et ainsi de suite.

Chacune des méthodes Find commence sa recherche à partir de l’emplacement et dans le sens spécifiés dans le tableau suivant.

Méthode Find

Point de départ de la recherche

Sens de la recherche

FindFirst

Début du jeu d'enregistrements

Fin du jeu d’enregistrements

FindLast

Fin du jeu d'enregistrements

Début du jeu d’enregistrements

FindNext

Enregistrement actif

Fin du jeu d'enregistrements

FindPrevious

Enregistrement actif

Début du jeu d'enregistrements

Lorsque vous utilisez la méthode FindLast, le moteur de base de données Microsoft Access remplit entièrement votre objet Recordset avant de lancer la recherche, si cela n'a pas déjà été fait.

L'utilisation de l'une des méthodes Find n'équivaut pas à utiliser une méthode Move, qui ne fait que rendre actif l'enregistrement initial, final, suivant ou précédent sans spécifier de condition. Vous pouvez faire suivre une opération Find d'une opération Move.

Vérifiez toujours la valeur de la propriété NoMatch pour déterminer si l'opération Find a abouti. Si la recherche aboutit, NoMatch a la valeur False. Si elle échoue, NoMatch a la valeur True et l'enregistrement actif n'est pas défini. Dans ce cas, vous devez repositionner le pointeur d'enregistrement actif sur un enregistrement valide.

L'utilisation des méthodes Find avec les recordsets ODBC connectés au moteur de base de données Microsoft Access peut s'avérer inefficace. Il se peut que la reformulation de vos critères pour localiser un enregistrement spécifique soit plus rapide, surtout si vous travaillez avec des recordsets volumineux.

Lorsque vous utilisez des bases de données ODBC connectées au moteur de base de données Microsoft Access et de grands objets Recordset de type feuille de réponse dynamique, il se peut que l'utilisation des méthodes Find ou des propriétés Sort ou Filter soit lente. Pour améliorer les performances, utilisez des requêtes SQL avec des clauses personnalisées ORDER BY ou WHERE, des requêtes Paramètre ou des objets QueryDef qui extraient des enregistrements indexés spécifiques.

Il est recommandé d'utiliser le format de date des États-Unis (mois-jour-année) lorsque vous effectuez des recherches dans des champs contenant des dates, même si vous n'utilisez pas la version américaine du moteur de base de données Microsoft Access ; à défaut, les données risquent d'être introuvables. Vous pouvez utiliser la fonction Format de Visual Basic pour convertir la date. Par exemple :

    rstEmployees.FindFirst "HireDate > #" _ 
        & Format(mydate, 'm-d-yy' ) & "#" 

Si les critères se composent d’une chaîne concaténée comportant une valeur non entière, et que les paramètres système spécifient un caractère décimal d’un format différent de celui des États-Unis, tel qu’une virgule (par exemple, strSQL = "PRICE > " & lngPrice, et lngPrice = 125,50), une erreur se produit lorsque vous tentez d’appeler la méthode. Il s’agit, car lors de la concaténation, le nombre est converti en une chaîne à l’aide du caractère décimal par défaut de votre système et Microsoft Access SQL accepte uniquement des caractères décimaux américains.

Remarque

Pour des performances optimales, les critères doivent être au format «champ = valeur» où champ est un champ indexé dans la table de base sous-jacente, ou au format «champ LIKE préfixe» où champ est un champ indexé dans la table de base sous-jacente et préfixe une chaîne de recherche de préfixe (par exemple, « ART* »). En règle générale, pour des types de recherches équivalents, la méthode Seek offre de meilleures performances que la méthode Find. Cela suppose que les objets Recordset de type table peuvent à eux seuls répondre à vos besoins.