DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL
  • Présentation
  • Créer une clé composée
  • Clé composée et liaison
  • Valeur d'une clé composée
  • Présentation
  • Ajout d'un enregistrement contenant une clé composée
  • Ajout d'un enregistrement contenant une clé composée dans un fichier de données relié
  • Construire la valeur d'une clé composée pour réaliser une recherche ou un filtre
  • Propriétés WLangage permettant de manipuler les clés composées
  • Utiliser une clé composée pour réaliser des recherches à l'identique
  • Recherche à l'identique avec HLitRecherchePremier
  • Recherche à l'identique et HLitRecherche
  • Utiliser une clé composée pour réaliser des recherches génériques
  • Recherche générique avec HLitRecherchePremier
  • Recherche générique avec HLitRecherche
  • Utiliser une clé composée pour réaliser des filtres
  • Fonctions disponibles pour réaliser des filtres
  • Filtre entre deux valeurs données (deux bornes)
  • Filtre à partir d'une valeur donnée
  • Filtre sur les premiers composants de la clé
  • Remarque : Filtre avec condition de sélection
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
Présentation
Une clé composée est une rubrique clé composée de plusieurs autres rubriques. Ces rubriques peuvent être des rubriques texte ou numérique.
Une clé composée permet de simplifier les recherches effectuées simultanément sur plusieurs critères.
Les clés composées sont des rubriques binaires. Leur valeur ne peut pas être affichée directement (dans une trace ou dans un champ).
Les thèmes abordés dans cette page sont les suivants :
Créer une clé composée
La création d'une clé composée est réalisée directement sous l'éditeur d'analyses.
Pour créer une clé composée dans la description d'un fichier de données :
  1. Affichez la description des rubriques du fichier de données :
    • Sélectionnez le fichier de données sous l'éditeur.
    • Affichez le menu contextuel (clic droit) et sélectionnez l'option "Description des rubriques".
  2. Cliquez sur l'icône . Un écran permettant de construire la clé composée apparaît.
  3. Dans le tableau de gauche, la liste des rubriques existantes dans le fichier de données apparaît. Double-cliquez sur les rubriques devant participer à la clé composée. Ces rubriques apparaissent dans le tableau de droite.
  4. Ré-organisez si nécessaire les rubriques composant la clé composée.
    Attention : l'ordre des rubriques est très important car il détermine l'ordre de tri. Ainsi, la clé composée "Nom + Département" sera triée sur le nom puis sur le département.
  5. Spécifiez le sens de parcours et les paramètres de recherche pour chaque composant de la clé.
  6. Validez. La clé composée apparaît dans la liste des rubriques du fichier de données.

Clé composée et liaison

Il est possible d'utiliser des clés composées dans des liaisons entre fichiers de données. Lors de la description de l'analyse, la clé composée présente dans le fichier de données lié apparaît alors non plus comme une clé composée mais comme une clé binaire. Il ne sera pas possible d'accéder aux différentes composantes de la clé composée dans le fichier de données relié.
Remarques :
  • La gestion de l'intégrité référentielle est gérée sur une clé de liaison de type clé composée.
  • La gestion des modifications en cascade n'est pas gérée sur une clé de liaison de type clé composée.
Valeur d'une clé composée

Présentation

Une clé composée est stockée sous forme de chaîne binaire. Sa valeur ne peut pas être affichée (ni dans un champ, ni sous le débogueur, ...).

Ajout d'un enregistrement contenant une clé composée

Lors de l'ajout ou de la modification d'un enregistrement contenant une clé composée, la valeur de la clé composée est automatiquement définie en fonction des valeurs des différentes composantes de la clé. Aucune programmation spécifique n'est nécessaire.

Ajout d'un enregistrement contenant une clé composée dans un fichier de données relié

Lors de l'ajout d'un enregistrement contenant une clé composée dans un fichier de données relié, il est nécessaire de construire la valeur de la clé. En effet, dans le fichier de données relié, la clé composée n'est pas considérée comme une clé composée, mais comme une clé binaire. Il est donc nécessaire de lui affecter une valeur.
Cette valeur peut être affectée :
  • soit directement. Par exemple, un enregistrement a été ajouté dans le fichier de données Client. Pour ajouter la valeur de la clé dans le fichier de données relié, il suffit de réaliser une affectation directe :
    FichierLiaison.NomDate = Client.NomDate
  • soit à l'aide de la fonction HConstruitValClé. Cette fonction permet de construire la valeur de la clé composée à partir de ses composantes.

Construire la valeur d'une clé composée pour réaliser une recherche ou un filtre

Lors de la réalisation d'un filtre ou d'une recherche sur une clé composée, il est nécessaire de définir la valeur de la clé composée (par exemple pour définir les bornes minimales et maximales du filtre).
Plusieurs solutions sont à votre disposition pour construire la valeur d'une clé composée pour une recherche ou un filtre :
  • Méthode 1 : Utilisation d'une liste de valeurs dans la fonction HFiltre.
  • Méthode 2 : Utilisation de l'instruction POUR TOUT.
  • Méthode 3 : Utilisation de la fonction HConstruitValClé.
  • Méthode 4 : Utilisation de la fonction HConvertX (méthode conservée pour compatibilité avec WINDEV 5.5)
Méthode 1 : Liste de valeurs
Il suffit d'indiquer la liste des valeurs que chaque composante de la clé composée doit prendre pour le filtre ou pour la recherche. La clé composée est donc construite directement dans la syntaxe de la fonction de filtre ou de recherche.
Exemple : Recherche de tous les enregistrements du fichier de données Client dont le nom et le prénom sont compris entre "AA","Barnabé" et "Philomène" et "Tartuffe".
HFiltre(Client, NomPrenom, ["AA","Philomène"], ["Barnabé","Tartuffe"])
Dans cet exemple, "AA","Zorro" est renvoyé par le filtre alors que "Philomène","Zorro" n'est pas renvoyé.
Exemple : Recherche de tous les enregistrements du fichier de données Taches dont les tâches sont comprises entre le 15/03/2011 00h00 et le 25/03/2011 00h00.
HFiltre(Taches, DateDébutTacheHeureDébutTache, [20110315,0000], [20110325,0000])
Méthode 2 : Utilisation de l'instruction POUR TOUT
Il suffit d'indiquer la liste des valeurs que chaque composant de la clé composée doit prendre pour le filtre ou pour la recherche. La clé composée est donc construite directement dans la syntaxe de la fonction de filtre ou de recherche.
Exemple : Recherche des clients de type prospects habitant dans le département du Rhône.
POUR TOUT Contacts AVEC CCDépartement = ["Prospect", 69]
...
FIN
Méthode 3 : Utilisation de la fonction HConstruitValClé
Il est possible de construire la valeur d'une clé composée avec la fonction HConstruitValClé. Il suffit de préciser dans cette fonction, le fichier de données concerné, le nom de la clé et les valeurs des composantes.
Par exemple, pour construire la valeur de la clé composée "NOMDATE" correspondant à "NOMCLIENT+DATE_ENTREE" du fichier de données Client, il suffit d'utiliser la ligne de code :
HConstruitValClé(Client, NOMDATE, "MOULIN","03/11/85")
Méthode 4 : Utilisation de la fonction HConvertX (méthode conservée pour compatibilité avec WINDEV 5.5)
Il est nécessaire de :
  • compléter les composantes texte sur toute leur taille avec la constante hValMin.
  • convertir les composantes numériques grâce à la fonction HConvert.
Exemple :
MaCléComposée = Complète(Client.NomClient, Dimension(Client.Nom), hValMin)) + ...
Complète(Client.Prénom, Dimension (Client.Prénom), hValMin)

Propriétés WLangage permettant de manipuler les clés composées

Les principales propriétés permettant de manipuler les clés composées par programmation sont les suivantes :
BinaireLa propriété Binaire permet de savoir si une rubrique est de type binaire ou non.
CléComposéeLa propriété CléComposée permet de savoir si une rubrique est une clé composée.
ComposanteLa propriété Composante permet de paramétrer les différentes composantes d'une clé composée.
FormuleCléLa propriété FormuleClé permet de paramétrer les différentes composantes d'une clé composée.
NbComposanteLa propriété NbComposante permet de connaître le nombre d'éléments d'une clé composée.
Utiliser une clé composée pour réaliser des recherches à l'identique

Recherche à l'identique avec HLitRecherchePremier

Pour effectuer une recherche à l'identique sur la valeur d'une clé composée, il faut :
  1. Construire la valeur de la clé à rechercher avec la fonction HConstruitValClé. Toutes les valeurs des composants de la clé doivent être indiquées.
  2. Utiliser la fonction HLitRecherchePremier.
Remarque : Par défaut, la fonction HLitRecherchePremier permet de réaliser une recherche à l'identique.
ValCléComp est un Buffer
ValCléComp = HConstruitValClé(Client, Nom_CP, "Moulin", "34000")
HLitRecherchePremier(Client, Nom_CP, ValCléComp)
TANTQUE HTrouve() = Vrai
...
HLitSuivant(Client, Nom_CP)
FIN

Recherche à l'identique et HLitRecherche

Pour effectuer une recherche à l'identique sur la valeur d'une clé composée, il faut :
  1. Construire la valeur de la clé à rechercher avec la fonction HConstruitValClé. Toutes les valeurs des composants de la clé doivent être indiquées.
  2. Utiliser la fonction HLitRecherche avec la constante hIdentique.
Remarque : Par défaut, la fonction HLitRecherche permet de réaliser une recherche générique. Pour réaliser une recherche à l'identique, il faut spécifier la constante hIdentique.
ValCléComp est un Buffer
ValCléComp = HConstruitValClé(Client, Nom_CP, "Moulin", "34000")
HLitRecherche(Client, Nom_CP, ValCléComp, hIdentique)
TANTQUE HTrouve() = Vrai
...
HLitSuivant(Client, Nom_CP)
FIN
Utiliser une clé composée pour réaliser des recherches génériques

Recherche générique avec HLitRecherchePremier

Pour effectuer une recherche générique sur la valeur d'une clé composée, il faut :
  1. Construire la valeur de la clé à rechercher avec la fonction HConstruitValClé. Seules les valeurs des premiers composants de la clé peuvent être indiquées.
  2. Utiliser la fonction HLitRecherchePremier avec la constante hGénérique.
Remarque : Par défaut, la fonction HLitRecherchePremier permet de réaliser une recherche à l'identique. Pour réaliser une recherche générique, il suffit de préciser la constante hGénérique.
ValCléComp est un Buffer
ValCléComp = HConstruitValClé(Client, Nom_CP, "Moulin")
HLitRecherchePremier(Client, Nom_CP, ValCléComp, hGénérique)
TANTQUE HTrouve() = Vrai
...
HLitSuivant(Client, Nom_CP)
FIN

Recherche générique avec HLitRecherche

Pour effectuer une recherche générique sur la valeur d'une clé composée, il faut :
  1. Construire la valeur de la clé à rechercher avec la fonction HConstruitValClé. Seules les valeurs des premiers composants de la clé peuvent être indiquées.
  2. Utiliser la fonction HLitRecherche.
Remarque : Par défaut, la fonction HLitRecherche permet de réaliser une recherche générique. Pour réaliser une recherche à l'identique, il faut spécifier la constante hIdentique.
ValCléComp est un Buffer
ValCléComp = HConstruitValClé(Client, Nom_CP, "Moulin")
HLitRecherche(Client, Nom_CP, ValCléComp)
TANTQUE HTrouve() = Vrai
...
HLitSuivant(Client, Nom_CP)
FIN
Utiliser une clé composée pour réaliser des filtres

Fonctions disponibles pour réaliser des filtres

En plus de la fonction HFiltre, le WLangage propose différentes fonctions permettant de réaliser des filtres spécifiques. Ces fonctions peuvent manipuler des clés composées :
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.
HFiltreIdentiqueDéfinit et active un filtre permettant de rechercher la valeur exacte d'une rubrique de type chaîne.

Filtre entre deux valeurs données (deux bornes)

Pour filtrer les enregistrements entre deux valeurs spécifiques d'une clé composée, il faut :
  1. Créer les valeurs de chacune des bornes avec la fonction HConstruitValClé.
  2. Créer le filtre avec la fonction HFiltre en précisant les deux bornes.
  3. Parcourir les enregistrements sélectionnés.
sCléFiltre1 = HConstruitValClé(CLIENT, NOM_CP, "MOULIN", "34000")
sCléFiltre2 = HConstruitValClé(CLIENT, NOM_CP, "MOULIN", "34999")
sCléParcours = HFiltre(Client, NOM_CP, sCléFiltre1, sCléFiltre2)
HLitPremier(Client, sCléParcours)
TANTQUE PAS HEnDehors()
...
HLitSuivant(Client, sCléParcours)
FIN

Filtre à partir d'une valeur donnée

Pour filtrer les enregistrements à partir d'une valeur donnée (sans préciser de borne maximale), il faut :
  1. Créer la valeur de la borne minimale avec la fonction HConstruitValClé.
  2. Créer le filtre avec la fonction HFiltre en précisant la borne minimale et la borne maximale. Dans ce cas, la borne maximale est égale à la constante hValMax.
  3. Parcourir les enregistrements sélectionnés.
sCléFiltre = HConstruitValClé(CLIENT, NOM_CP, "MOULIN", "34000")
sCléParcours = HFiltre(Client, NOM_CP, sCléFiltre, hValMax)
HLitPremier(Client, sCléParcours)
TANTQUE PAS HEnDehors()
...
HLitSuivant(Client, sCléParcours)
FIN

Filtre sur les premiers composants de la clé

Pour filtrer les enregistrements sur les premiers composants d'une clé composée et réaliser un tri sur les composants suivants, il faut :
  1. Créer les valeurs minimales et maximales de la clé composée avec la fonction HConstruitValClé. Seules les premières composantes peuvent être indiquées.
  2. Créer le filtre avec la fonction HFiltre en précisant la borne minimale et la borne maximale. Dans ce cas, il faut ajouter la constante hValMin à la borne minimale et hValMax à la borne maximale. Remarques : hValMin est équivalent à Caract(0) et hValMax est équivalent à caract(255).
  3. Parcourir les enregistrements sélectionnés.

Remarque : Filtre avec condition de sélection

Si la condition du filtre porte sur plusieurs rubriques correspondant à une clé composée du fichier de données, la clé de parcours automatiquement choisie pour le filtre sera cette clé composée.
Version minimum requise
  • Version 14
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