Positionne sur le dernier enregistrement du fichier de données dont la valeur d'une rubrique spécifique est inférieure ou égale à une valeur recherchée.
L'enregistrement n'est pas lu.
Le numéro de l'enregistrement en cours est modifié uniquement lorsqu'il est renvoyé par la fonction
HNumEnr. Pour les fonctions manipulant par défaut le numéro de l'enregistrement en cours (fonctions
HSupprime,
HLit,
HModifie, ...), la valeur de ce numéro n'est pas mise à jour : il faut utiliser la fonction
HNumEnr(). Par exemple : ne pas faire :
mais
HSupprime(Client, HNumEnr())
La lecture se fait de la plus petite à la plus grande valeur de la rubrique de parcours (consultez les remarques pour plus de détails).
Attention : L'enregistrement chargé en mémoire n'est pas modifié. Les variables HFSQL (par exemple Client.Nom, c'est-à-dire la rubrique Nom du fichier Client) ne sont pas mises à jour.
En général, la fonction
HRechercheDernier permet de se positionner dans le fichier de données pour effectuer une boucle de parcours parmi les enregistrements correspondant à une condition. La fonction
HSuivant permet de se positionner sur l'enregistrement suivant correspondant à la condition.
Après l'exécution de la fonction HRechercheDernier, plusieurs cas peuvent se présenter :
- un enregistrement correspondant à la condition a été trouvé : la fonction HTrouve renvoie Vrai
- le fichier de données est vide ou il n'existe pas d'enregistrement correspondant à la condition : la fonction HEnDehors renvoie Vrai
Remarques :
- Par défaut, les fonctions HRecherchePremier et HRechercheDernier permettent de réaliser une recherche à l'identique.
- Par défaut, la fonction HRechercheDernier effectue une recherche générique.
La lecture se fait de la plus petite à la plus grande valeur de la rubrique de parcours (consultez les notes pour plus de détails).
Attention : L'enregistrement chargé en mémoire n'est pas modifié. Les variables HFSQL (par exemple Client.Nom, c'est-à-dire la rubrique Nom du fichier Client) ne sont pas mises à jour.
En général, la fonction HRechercheDernier permet de se positionner dans le fichier de données pour effectuer une boucle de parcours parmi les enregistrements correspondant à une condition.
Après l'exécution de la fonction HRechercheDernier, plusieurs cas peuvent se présenter :
- un enregistrement correspondant à la condition a été trouvé, bloqué (si nécessaire) et chargé en mémoire : la fonction HTrouve renvoie Vrai.
- le fichier de données est vide ou il n'existe pas d'enregistrement correspondant à la condition : la fonction HEnDehors renvoie Vrai.
- la fonction tente de bloquer un enregistrement déjà bloqué en lecture : la fonction HErreurBlocage renvoie Vrai et la fonction HEnDehors renvoie Vrai.
Remarques
Recherche générique/Recherche à l'identique
- Recherche générique (essentiellement sur les rubriques de type Chaîne de caractères) : Recherche tous les enregistrements commençant par la valeur indiquée.
Par exemple : Lors d'une recherche générique de la chaîne "Martin" pour la rubrique NOM, tous les enregistrements dont la rubrique Nom commence par "Martin" correspondront à la recherche. Ainsi, l'enregistrement contenant "Martinez" correspondra à la recherche (la fonction HTrouve renvoie Vrai). - Recherche à l'identique : Recherche tous les enregistrements correspondant exactement à la valeur indiquée.
Par exemple : Lors d'une recherche à l'identique sur la chaîne "Matin" pour la rubrique NOM, la fonction HTrouve renvoie Vrai uniquement pour les enregistrements dont la rubrique vaut exactement "Martin". - Exemples de recherches effectuées sur le fichier CLIENT trié par nom :
| | | | | |
Valeur cherchée | Options | HRechercheDernier positionne sur l'enregistrement | HTrouve renvoie | HEnDehors renvoie | Explications |
Durand | | 6 | Vrai | Faux | Durand existe. Le début du fichier de données n'a pas encore été atteint. |
Dupuis | | 5 | Faux | Faux | Dupuis n'existe pas. Positionnement sur la première valeur inférieure (Dupont). Le début du fichier de données n'a pas encore été atteint. |
Dupon | HGénérique | 5 | Vrai | Faux | Dupon n'existe pas mais la recherche est générique et il existe un Dupont (entre autres). Le début du fichier de données n'a pas encore été atteint. |
Dupon | | L'enregistrement n'a pas été trouvé (pas de déplacement) | Faux | Faux | Dupon n'existe pas. Le début du fichier de données n'a pas encore été atteint. |
Bernard | | L'enregistrement n'a pas été trouvé (pas de déplacement) | Faux | Vrai | Bernard n'existe pas. Positionnement sur la première valeur inférieure (cette valeur n'existe pas) : Le début du fichier de données est donc atteint. |
Recherche sur une clé composée
Plusieurs méthodes permettent de faire une recherche sur une clé composée :
Utilisation d'une liste de valeurs
Pour faire une recherche sur une clé composée, il est possible d'utiliser la syntaxe suivante :
HRechercheDernier(<Nom du fichier>, <Nom de la clé composée>, ...
[<Valeur de recherche du premier élément de la clé composée>,
<Valeur de recherche du deuxième élément de la clé>, ...])
Exemple :
// Recherche de l'enregistrement
HRechercheDernier(Client, Nom_Prénom, ["Moulin", "Françoise"])
Recherche sur une rubrique tableau
La recherche se fait uniquement sur le premier élément du tableau (élément d'indice 1). Pour effectuer une recherche sur les autres éléments du tableau, utilisez des filtres ou des requêtes.
Recherche et filtre
Si un filtre est actif (fonction
HFiltre), la recherche tient compte du filtre.