|
|
|
|
|
- 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
Filtrer un fichier de données, une vue ou une requête
Non disponible avec ce type de connexion
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.
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 :
| | HActiveFiltre | Active le filtre précédemment créé pour le fichier de données (la vue ou la requête) spécifié. | HDésactiveFiltre | Désactive temporairement un filtre sur un fichier de données (une vue ou une requête). | HFiltre | Définit et active un filtre sur un fichier de données, une vue ou une requête. | HFiltreCommencePar | Définit et active un filtre de type "Commence par" sur un fichier, une vue ou une requête. | HFiltreComprisEntre | Définit et active un filtre de type "Compris entre" sur un fichier, une vue ou une requête. | HFiltreContient | Définit et active un filtre de type "Contient" sur un fichier de données, une vue ou une requête. | HFiltreIdentique | Dé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 : | | BorneMax | Ré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. | BorneMin | Ré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. | ConditionFiltre | Renvoie 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. | FiltreAvecBornes | Permet 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ée | Permet 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.
| | HLitDernier | Positionne 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édent | Positionne 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. | HLitPremier | Positionne sur le premier enregistrement correspondant au filtre (s'il existe). La fonction HEnDehors renvoie Vrai si plus aucun enregistrement ne correspond au filtre. | HLitSuivant | Positionne 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.
|
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.
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|