DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL
  • Présentation
  • Créer un filtre
  • Caractéristiques
  • Manipuler les filtres en WLangage
  • Fonctions WLangage
  • Propriétés WLangage
  • Parcours et recherche dans une sélection d'enregistrements filtrés
  • Optimisation des filtres
  • Filtres et statistiques
  • Filtres et clés composées
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Filtrer un fichier de données, une vue ou une requête
ODBCNon disponible avec ce type de connexion
Présentation
Un filtre permet de définir en programmation une sélection d'enregistrements correspondant à un ou plusieurs critères. Cette sélection d'enregistrements peut être réalisée sur un fichier de données HFSQL, une vue HFSQL ou une requête.
Les enregistrements de cette sélection pourront être lus et parcourus grâce aux fonctions de parcours (HLitPremier, HLitSuivant, ...). Il est ainsi possible, lors d'un parcours, de traiter directement tous les enregistrements sélectionnés.
Par exemple, pour envoyer un email spécifique à tous les clients des départements 34 à 36, il suffit :
  • Créer un filtre sur le fichier de données Client pour sélectionner les clients des départements 34 à 36,
  • Parcourir le fichier de données filtré et lancer pour chaque client une procédure permettant d'envoyer l'email.
Filtres ou requêtes ?
  • Les filtres sont conseillés lorsque la condition de sélection porte uniquement sur un seul fichier de données, une seule vue, ou une seule requête. Les filtres permettent de créer des conditions de sélection complexes sur les enregistrements, ou encore de sélectionner facilement les enregistrements présents dans un intervalle de valeurs.
  • Les requêtes sont conseillées dès lors que la sélection d'enregistrements doit être réalisée sur plusieurs fichiers de données.
Créer un filtre
Un filtre est créé grâce à la fonction HFiltre. Ce filtre peut permettre de sélectionner :
  • soit les enregistrements présents entre deux bornes : les bornes doivent concerner une rubrique clé.
  • soit les enregistrements correspondant à une condition de sélection spécifique sur une rubrique.
Dans les deux cas, la fonction HFiltre renvoie la rubrique optimale à utiliser pour parcourir les enregistrements filtrés. Cette rubrique peut être une clé ou non du fichier de données. Si le fichier de données n'est pas parcouru selon cette rubrique, le filtre ne sera pas pris en compte.

Caractéristiques

Un seul filtre par fichier de données (ou vue ou requête) peut être actif à un moment donné.
Manipuler les filtres en WLangage

Fonctions WLangage

Les fonctions du WLangage permettant de gérer les filtres sont les suivantes :
HActiveFiltreActive le filtre précédemment créé pour le fichier de données (la vue ou la requête) spécifié.
HDésactiveFiltreDésactive temporairement un filtre sur un fichier de données (une vue ou une requête).
HFiltreDéfinit et active un filtre sur un fichier de données, une vue ou une requête.
HFiltreCommenceParDéfinit et active un filtre de type "Commence par" sur un fichier, une vue ou une requête.
HFiltreComprisEntreDéfinit et active un filtre de type "Compris entre" sur un fichier, une vue ou une requête.
HFiltreContientDéfinit et active un filtre de type "Contient" sur un fichier de données, une vue ou une requête.
HFiltreIdentiqueDéfinit et active un filtre permettant de rechercher la valeur exacte d'une rubrique de type chaîne.

Propriétés WLangage

Les propriétés du WLangage permettant de gérer les filtres sont les suivantes :
BorneMaxRécupère la borne maximale du filtre en cours (défini par la fonction HFiltre) sur un fichier de données, une vue HFSQL ou une requête.
BorneMinRécupère la borne minimale du filtre en cours (défini par la fonction HFiltre) sur un fichier de données, une vue HFSQL ou une requête.
ConditionFiltreRenvoie la condition de sélection mise en place par la fonction HFiltre sur un fichier de données, une vue HFSQL ou une requête.
FiltreAvecBornesPermet de savoir si des bornes ont été précisées sur le filtre mis en place par la fonction HFiltre sur un fichier de données, une vue HFSQL ou une requête.
RubriqueFiltréePermet de connaître la rubrique sur laquelle un filtre a été mis en place par la fonction HFiltre sur un fichier de données, une vue HFSQL ou une requête.
Parcours et recherche dans une sélection d'enregistrements filtrés
  • Pour parcourir un ensemble d'enregistrements filtrés, il suffit d'utiliser les fonctions HFSQL de parcours.
    HLitDernierPositionne sur le dernier enregistrement correspondant au filtre (s'il existe). La fonction HEnDehors renvoie Vrai si plus aucun enregistrement ne correspond au filtre.
    HLitPrécédentPositionne sur l'enregistrement précédent correspondant au filtre (s'il existe). La fonction HEnDehors renvoie Vrai si plus aucun enregistrement ne correspond au filtre.
    HLitPremierPositionne sur le premier enregistrement correspondant au filtre (s'il existe). La fonction HEnDehors renvoie Vrai si plus aucun enregistrement ne correspond au filtre.
    HLitSuivantPositionne sur l'enregistrement suivant correspondant au filtre (s'il existe). La fonction HEnDehors renvoie Vrai si plus aucun enregistrement ne correspond au filtre.
  • Pour parcourir un ensemble d'enregistrements filtrés, il suffit d'utiliser les fonctions HFSQL de recherche.
    HLitRecherche/HLitRecherchePremier
    • Si la recherche porte sur la clé de parcours, recherche et positionne sur le premier enregistrement du filtre correspondant à la condition spécifiée (s'il existe). La fonction HEnDehors renvoie Vrai si plus aucun enregistrement ne correspond au filtre et à la condition de recherche.
    • Si la recherche porte sur une autre rubrique, recherche et positionne sur le premier enregistrement du fichier (non filtré) correspondant à la condition spécifiée (s'il existe). La fonction HEnDehors renvoie Vrai si plus aucun enregistrement ne correspond au filtre et à la condition de recherche.
    HLitRechercheDernier
    • Si la recherche porte sur la clé de parcours, recherche et positionne sur le dernier enregistrement du filtre correspondant à la condition spécifiée (s'il existe). La fonction HTrouve renvoie Vrai si plus aucun enregistrement ne correspond au filtre et à la condition de recherche.
    • Si la recherche porte sur une autre rubrique, recherche et positionne sur le dernier enregistrement du fichier de données (non filtré) correspondant à la condition spécifiée (s'il existe). La fonction HEnDehors renvoie Vrai si plus aucun enregistrement ne correspond au filtre et à la condition de recherche.
Optimisation des filtres
Pour optimiser le parcours d'enregistrements filtrés :
  • réalisez régulièrement des statistiques sur vos index,
  • définissez des clés composées dans vos fichiers de données.

Filtres et statistiques

Les filtres sont basés sur les statistiques d'index HFSQL. Pour optimiser les parcours d'enregistrements filtrés, il est recommandé d'utiliser des statistiques récentes. Ces statistiques sont mises à jour grâce à la fonction HStatCalcule.
Il est donc conseillé de calculer régulièrement les statistiques des fichiers filtrés (surtout pour les fichiers de données souvent modifiés, par exemple ligne de commande). Ces statistiques sont automatiquement recalculées lors de la réorganisation (ou réindexation) des fichiers de données.
Attention : Selon la taille du fichier de données, le calcul des statistiques peut être long. De plus, ce calcul bloque le fichier de données : le fichier de données est inutilisable pendant cette période (HFSQL Classic uniquement). Il est conseillé de réaliser ce calcul lorsque la base de données est inutilisée (traitement de nuit par exemple)

Filtres et clés composées

Si la condition du filtre porte sur plusieurs rubriques correspondant à une clé composée de votre fichier de données, la clé de parcours automatiquement choisie pour le filtre sera cette clé composée.
Par exemple :
  • Un filtre est défini sur le fichier de données CLIENT. Ce filtre porte sur les rubriques NOM et PRENOM.
  • Une clé composée NOM+PRENOM existe dans le fichier de données CLIENT.
  • La clé composée sera automatiquement choisie comme clé de parcours du fichier de données filtré.
Pour plus de détails sur les clés composées et les filtres, consultez Clés composées.
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 13/06/2023

Signaler une erreur ou faire une suggestion | Aide en ligne locale