PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • Recherche générique/Recherche à l'identique
  • Recherche à l'identique sous Access
  • Recherche sur une clé composée
  • Recherche sur une rubrique tableau
  • Recherche et filtre
  • Parcours des enregistrements correspondant à une condition
  • Les vues et RPC sur HFSQL
  • Optimisation du temps de parcours
Produits
WINDEVWEBDEV - Code ServeurWEBDEV - Code NavigateurWINDEV MobileEtats et Requêtes
Plateformes
WindowsLinuxWindows MobileUniversal Windows 10 AppAndroidWidget AndroidiPhone/iPadApple Watch
Langages
JavaPHPAjaxCode Utilisateur (MCU)Langage Externe
Bases de données
HFSQLHFSQL Client/ServeurProcédures stockéesOLE DBODBCAccès Natifs
Positionne sur le premier enregistrement du fichier de données dont la valeur d'une rubrique spécifique est supérieure ou égale à une valeur recherchée (recherche générique). L'enregistrement est lu et les variables HFSQL correspondantes sont mises à jour.
En général, la fonction HLitRecherche permet de se positionner dans le fichier de données pour effectuer une boucle de parcours parmi les enregistrements correspondant à une condition. La fonction HLitSuivant permet de lire l'enregistrement suivant correspondant à la condition.
Après l'exécution de la fonction HLitRecherche, 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.
    Windows Mobile La gestion des blocages est réalisée uniquement sur les fichiers de données HFSQL Client/Serveur ou manipulés par un Accès Natif. Il n'est pas possible de bloquer un enregistrement HFSQL Mobile. En effet, le système d'exploitation du Pocket PC ne permet pas de bloquer des enregistrements.
    Java Accès par JDBC : La gestion des blocages n'est pas disponible sur les bases de données accédées par JDBC.
  • le fichier de données est vide ou il n'existe pas d'enregistrement correspondant à la condition : aucune lecture n'est effectuée et la fonction HEnDehors renvoie Vrai.
Cette fonction peut être utilisée indifféremment avec les fichiers de données, les vues HFSQL ou les requêtes.
Remarques :
  • Par défaut, les fonctions HLitRecherchePremier et HLitRechercheDernier permettent d'effectuer des recherches à l'identique.
  • Par défaut, la fonction HLitRecherche permet de faire une recherche générique sur les chaînes de caractères. Cette recherche n'est pas générique sur les entiers, les réels, les dates, les monétaires, ...
Versions 15 et supérieures
WINDEV MobileAndroid Cette fonction est désormais disponible pour les applications Android.
Nouveauté 15
WINDEV MobileAndroid Cette fonction est désormais disponible pour les applications Android.
WINDEV MobileAndroid Cette fonction est désormais disponible pour les applications Android.
Versions 17 et supérieures
WINDEV MobileiPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Nouveauté 17
WINDEV MobileiPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
WINDEV MobileiPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Versions 18 et supérieures
WINDEV MobileWidget Android Cette fonction est désormais disponible en mode Widget Android.
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonction est désormais disponible en mode Windows Store apps.
Nouveauté 18
WINDEV MobileWidget Android Cette fonction est désormais disponible en mode Widget Android.
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonction est désormais disponible en mode Windows Store apps.
WINDEV MobileWidget Android Cette fonction est désormais disponible en mode Widget Android.
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonction est désormais disponible en mode Windows Store apps.
Remarque : A partir de la version 19, HFSQL est le nouveau nom de HyperFileSQL.
Versions 21 et supérieures
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Nouveauté 21
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
WINDEVWINDEV MobileUniversal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
// Recherche du premier enregistrement
// pour lequel le nom du CLIENT est DUPOND
HLitRecherche(CLIENT, NOM, "DUPOND")
SI HTrouve() ALORS
Trace("Client DUPOND trouvé")
SINON
Trace("Client DUPOND non trouvé")
FIN
Syntaxe
<Résultat> = HLitRecherche(<Nom du fichier> , <Nom de la rubrique> , <Valeur recherchée> [, <Options>])
<Résultat> : Booléen (optionnel)
Correspond à :
  • Vrai si l'enregistrement recherché a été trouvé et lu. Le buffer de fichier est chargé avec les données de l'enregistrement trouvé. Dans ce cas, la fonction HErreur vaut 0 et la fonction HTrouve vaut Vrai.
  • Faux dans les cas suivants :
    • erreur d'accès au fichier (par exemple impossibilité de lire). La fonction HErreur renvoie un code d'erreur d'accès au fichier. La fonction HErreurInfo permet d'obtenir plus de détails sur l'erreur. Dans ce cas, la fonction HTrouve n'est pas utilisable.
    • l'accès au ficher a été effectué mais aucun enregistrement n'a été trouvé. Dans ce cas, la fonction HErreur vaut 0 et la fonction HTrouve vaut Faux.
    Attention : Dans ce cas, le buffer de fichier n'est pas utilisable.
<Nom du fichier> : Chaîne de caractères (avec ou sans guillemets)
Nom du fichier de données, de la vue HFSQL ou de la requête manipulé.
<Nom de la rubrique> : Chaîne de caractères (avec ou sans guillemets)
Nom de la rubrique sur laquelle la recherche doit être effectuée.
Dans le cas d'une recherche à l'identique, ce paramètre peut correspondre à une rubrique non clé.
Hyper File 5.5 Les recherches génériques sur clés composées fonctionnement uniquement si toutes les composantes de la clé composée sont de type texte. Dans le cas contraire, une recherche à l'identique est effectuée.
<Valeur recherchée> : Type correspondant à la valeur
Valeur de la rubrique recherchée.
<Options> : Constante ou combinaison de constantes optionnelle
Permet de paramétrer :
  • le mode de blocage de l'enregistrement recherché.
  • le type de recherche effectué.
hBlocageEcritureBlocage en écriture : l'enregistrement en cours de lecture pourra être lu par une autre application mais ne pourra pas être modifié par une autre application.
Si une requête est manipulée, le mode de blocage est ignoré.
PHP La gestion des blocages n'est pas disponible.
Java Accès par JDBC : Cette constante n'est pas disponible.
hBlocageLectureEcritureBlocage en lecture/écriture : l'enregistrement en cours de lecture ne pourra ni être lu ni être modifié par une autre application.
Si une requête est manipulée, le mode de blocage est ignoré.
ODBC Blocage en écriture seulement. Fonctionnement équivalent à la constante hBlocageEcriture.
PHP La gestion des blocages n'est pas disponible.
Java Accès par JDBC : Cette constante n'est pas disponible.
hBlocageNonAucun blocage (même si la fonction HDébutVerrou a été appelée) : l'enregistrement pourra être lu ou modifié par une autre application pendant la lecture.
PHP La gestion des blocages n'est pas disponible.
Java Accès par JDBC : Cette constante n'est pas disponible.
hIdentiqueRecherche à l'identique (voir Notes)
Par défaut (constante non spécifiée), la recherche effectuée est une recherche générique.
Java Accès par JDBC : Cette constante n'est pas disponible.
hLimiteParcours
ODBCAccès Natifs Le parcours s'arrêtera dès que la dernière valeur recherchée sera trouvée. L'enregistrement en cours correspondra à ce dernier enregistrement trouvé.
La fonction HTrouve vaudra Faux et la fonction HEnDehors vaudra Vrai.
Cette constante permet d'optimiser la vitesse de recherche en mode Client/Serveur.
Cette constante est conseillée dans le cas d'une recherche simple (sans parcours des éléments trouvés).
HFSQL Client/Serveur Cette constante n'est pas disponible.
hRespecteFiltreLe parcours prendra en compte le filtre mis en place avec la fonction HFiltre, même si la clé de parcours utilisée n'est pas optimisée pour le filtre. Rappel : la fonction HFiltre renvoie la clé de parcours optimisée pour le filtre.
Attention : dans ce cas, sur des fichiers de données de taille importante, des problèmes de performances peuvent survenir.
Hyper File 5.5 Cette variable ne peut pas être utilisée.
hSansRafraîchir
PHPODBCAccès Natifs La fonction HLitRecherche ne rafraîchit pas le contenu de la table ou de la requête. Dans la mesure du possible, la requête n'est pas ré-exécutée. Toutes les positions sauvegardées sont conservées.
Windows Mobile La gestion des blocages est réalisée uniquement sur les fichiers de données HFSQL Client/Serveur ou manipulés par un accès natif. Il n'est pas possible de bloquer un enregistrement HFSQL Mobile. En effet, le système d'exploitation du Pocket PC ne permet pas de bloquer des enregistrements.
ODBCAccès Natifs Si le provider OLE DB ou l'Accès Natif utilisé ne gère pas les blocages, les options de blocage seront sans effet.
Java Accès par JDBC : La gestion des blocages n'est pas disponible sur les bases de données accédées par JDBC.
Remarques
WINDEVWEBDEV - Code ServeurWINDEV MobileEtats et RequêtesWindows MobileUniversal Windows 10 AppiPhone/iPadPHPAjaxCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5OLE DBAccès Natifs

Recherche générique/Recherche à l'identique

Selon le paramètre <Valeur Recherchée>, la recherche peut être générique ou à l'identique.
  • Recherche générique : recherche de tous les enregistrements commençant par la valeur indiquée
    Pour effectuer une recherche générique, il suffit de préciser la valeur voulue dans le paramètre <Valeur recherchée>.
    Remarque : Pour compatibilité avec WINDEV 5.5, la recherche générique d'une chaîne vide ("") est équivalente à l'utilisation de la fonction HLitPremier.
  • Recherche à l'identique : recherche de tous les enregistrements correspondant exactement à la valeur indiquée.
    Pour effectuer une recherche à l'identique, il faut que la taille de l'argument de recherche soit exactement égale à la taille de la clé. Pour faire une recherche à l'identique, il est également possible d'utiliser la constante hIdentique.
    Pour faire une recherche à l'identique, il est aussi possible d'utiliser la fonction HLitRecherchePremier.
Attention : Si vous utilisez des fichiers Hyper File 5.5 ou des fichiers au format Hyper File 5.5 migré en HFSQL Classic, la mise en place des recherches génériques et à l'identique peut varier. Pour plus de détails, consultez le tableau récapitulatif Hyper File 5.5 et HFSQL Classic : Comment sont gérés les espaces dans les recherches ?
WINDEVWEBDEV - Code ServeurEtats et RequêtesPHPAjaxCode Utilisateur (MCU)Accès Natifs

Recherche à l'identique sous Access

Pour effectuer une recherche à l'identique sur une base de données ACCESS, il est conseillé d'utiliser la fonction SansEspace si des espaces sont présents à la fin de la valeur recherchée.
WINDEVWEBDEV - Code ServeurWINDEV MobileEtats et RequêtesWindows MobileUniversal Windows 10 AppiPhone/iPadJavaPHPAjaxCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5OLE DBAccès Natifs

Recherche sur une clé composée

Plusieurs méthodes permettent de faire une recherche sur une clé composée :
1. Utilisation d'une liste de valeurs
Pour faire une recherche sur une clé composée, il est possible d'utiliser la syntaxe suivante :
HLitRecherche(<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
HLitRecherche(CLIENT, NOM_PRENOM, ["MOULIN","Françoise"])

TANTQUE HTrouve(CLIENT)
        // Traitement
        HLitSuivant(CLIENT, NOM_PRENOM)
FIN
2. Utilisation de la fonction HConstruitValClé
Si la rubrique recherchée est une clé composée, il est possible de construire la valeur à chercher avec la fonction HConstruitValClé.
3. Utilisation de la fonction HConvert (compatibilité avec WINDEV 5.5)
Pour construire la valeur d'une clé composée sans utiliser la fonction HConstruitValClé, il est nécessaire de :
  • compléter les composantes texte sur toute leur taille avec le caractère Caract(0).
  • convertir les composantes numériques grâce à la fonction HConvert.
Exemple :
MaClécomposée = Complète(Client.NomClient, Dimension(Client.Nom), Caract(0)) + ...
        Complète(Client.Prénom, Dimension(Client.Prénom), Caract(0))
Hyper File 5.5 Les recherches génériques sur clés composées fonctionnement uniquement si toutes les composantes de la clé composée sont de type texte. Dans le cas contraire, une recherche à l'identique est effectuée.
WINDEVWEBDEV - Code ServeurWINDEV MobileEtats et RequêtesWindows MobileUniversal Windows 10 AppiPhone/iPadJavaPHPAjaxCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5OLE DBAccès Natifs

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.
WINDEVWEBDEV - Code ServeurWINDEV MobileEtats et RequêtesWindows MobileUniversal Windows 10 AppiPhone/iPadJavaPHPAjaxCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5OLE DBAccès Natifs

Recherche et filtre

Si un filtre est actif (fonction HFiltre), la recherche tient compte du filtre uniquement si la clé utilisée est identique.
WINDEVWEBDEV - Code ServeurWINDEV MobileEtats et RequêtesWindows MobileUniversal Windows 10 AppiPhone/iPadJavaPHPAjaxCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5OLE DBAccès Natifs

Parcours des enregistrements correspondant à une condition

En général, la fonction HLitRecherche permet de se positionner dans le fichier de données pour effectuer une boucle de parcours parmi les enregistrements correspondant à une condition. Les fonctions HLitSuivant et HLitPrécédent permettent de lire l'enregistrement suivant et précédent correspondant à la condition.
Pour ne plus tenir compte de la recherche lors du passage à l'enregistrement suivant ou précédent, il suffit d'utiliser une des fonctions suivantes :
WINDEVWEBDEV - Code ServeurWINDEV MobileEtats et RequêtesWindows MobilePHPAjaxCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5

Les vues et RPC sur HFSQL

La recherche sur une vue HFSQL via un accès distant (RPC sur HFSQL) fonctionne de deux façons différentes :
  • si l'ensemble des enregistrements sélectionnés par la vue n'a pas été préalablement rapatrié sur le poste local, un appel au serveur est effectué pour rechercher la valeur spécifiée.
    Cette solution est conseillée si la taille de la vue est importante et/ou si peu de recherches sont à effectuer.
  • si l'ensemble des enregistrements sélectionnés par la vue a été préalablement rapatrié sur le poste local, la recherche est effectuée directement sur le poste local (sans aucun appel au serveur).
    Cette solution est conseillé si la taille de la vue n'est pas importante et/ou si un grand nombre de recherches est à effectuer.
    Pour rapatrier l'ensemble des enregistrements sélectionnés par la vue sur le poste local, il est possible :
    • soit d'appeler la fonction HCréeVue en indiquant un nombre élevé d'enregistrements par page (paramètre <Taille d'une page>) et de débuter la recherche avec la fonction HLitPremier (méthode conseillée).
    • soit de réaliser une boucle de parcours de l'ensemble des enregistrements sélectionnés par la vue (fonctions HLitPremier et HLitSuivant).
      Remarque : Cette solution provoque un échange de données important lors du premier accès à la vue.
WINDEVWEBDEV - Code ServeurEtats et RequêtesUniversal Windows 10 AppiPhone/iPadPHPAjaxCode Utilisateur (MCU)HFSQLHFSQL Client/ServeurHyper File 5.5OLE DBAccès Natifs

Optimisation du temps de parcours

Pour optimiser le temps des premiers parcours d'un fichier de données, utilisez la fonction HOptimise sur ce fichier de données.
Composantes
WINDEVWEBDEV - Code ServeurEtats et Requêtes wd220hf.dll
Windows Mobile wp220hf.dll
Java wd220java.jar
Linux wd220hf.so
Android wd220android.jar
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire