Webdev Recherche
Webdev Recherche
Présentation
Dans les parties précédentes, nous avons créé un projet WEBDEV permettant de créer un site contenant à la fois une partie
Internet et une partie Intranet.
Nous allons reprendre le projet "Site_WEBDEV_Complet" que nous avons manipulé dans les parties 3 et 4.
Un projet corrigé est disponible. Ce projet contient les différentes pages créées dans cette
Corrigé
leçon. Pour ouvrir le projet corrigé, dans la page d'accueil, cliquez sur "Cours d'auto-
formation" puis cliquez sur "Site WEBDEV Complet (Corrigé)".
Dans cette leçon, nous allons permettre à l'utilisateur de faire une recherche multicritère.
Dans notre exemple, cette recherche se fera sur le fichier de données "Commande". L'utilisateur pourra sélectionner :
• le nom du client,
• l'état de la commande,
• son mode de règlement,
• le prix de la commande.
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 2 of 24
Une requête de sélection est une requête qui va "ressortir" uniquement les enregistrements
Note
Ce type de requête s'appelle une requête de sélection car en langage SQL l'ordre SELECT est
utilisé.
Création de la requête
▶ Pour créer une requête, nous allons utiliser l'éditeur de requêtes.
1. Cliquez sur parmi les boutons d'accès rapide. La fenêtre de création d'un nouvel élément s'affiche : cliquez sur
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 3 of 24
▶ Nous allons construire la requête en sélectionnant les éléments que nous voulons dans le résultat.
1. Double-cliquez sur les rubriques présentes dans l'analyse à gauche de la fenêtre de description. Les rubriques prises
en compte apparaissent alors au centre de l'écran.
Nous voulons afficher :
• les renseignements concernant la commande. Dans le fichier de données "Commande", double-cliquez sur les
rubriques : IDCommande, Date, Etat et TotalTTC.
• les renseignements concernant le client ayant passé la commande. Dans le fichier de données "Client", double-
cliquez sur la rubrique "NomComplet".
• les renseignements concernant le mode de règlement de la commande. Dans le fichier de données
"ModeRèglement", double-cliquez sur les rubriques "Libellé" et "IDModeRèglement".
La fenêtre de description de la requête est la suivante :
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 4 of 24
• Sélectionnez la rubrique "Commande.Date" au centre de l'écran, puis cliquez sur le bouton "Trier" (présent dans
la liste des actions) et sélectionnez l'option "Trier sur la rubrique sélectionnée".
• Dans la fenêtre qui s'affiche, indiquez un tri croissant sur la rubrique et validez.
3. Une flèche bleue avec le numéro 01 apparaît à droite de la rubrique "Commande.Date". Cette flèche indique qu'un
tri croissant est fait sur cette rubrique. Le chiffre "01" indique que ce tri sera réalisé en premier.
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 5 of 24
Test de la requête
Comme tous les éléments d'un projet WEBDEV, il est possible de tester immédiatement la requête que nous venons de
créer :
1. Cliquez sur .
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 6 of 24
Si vous faites un clic droit sur le résultat de la requête, un menu contextuel apparaît. Vous avez
alors la possibilité d'exporter le résultat vers :
• un fichier XLS (Excel).
Note
3. Le résultat affiché liste TOUTES les commandes. Dans notre cas, nous souhaitons afficher uniquement les commandes
correspondant aux critères de recherche. Pour cela, il est nécessaire d'utiliser une requête paramétrée.
4. Fermez la fenêtre.
Nous devons modifier la requête afin que ces critères de recherche correspondent à des paramètres de la requête.
▶ Pour définir les paramètres de la requête, affichez la fenêtre de description de la requête : double-cliquez sur le fond de
la représentation graphique de la requête (ou utilisez dans le menu contextuel, l'option "Description de la requête").
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 7 of 24
3. Dans la fenêtre qui s'affiche, nous allons indiquer que la condition de sélection correspond à un paramètre :
• Sélectionnez "Contient".
• Cochez "au paramètre".
• Indiquez le nom du paramètre : "ParamNomClient".
Nous vous conseillons de préfixer les paramètres des requêtes par "param". Il est ainsi
possible de les retrouver très facilement dans l'éditeur de code.
Note
4. Validez la fenêtre de description de la condition. Le chiffre "1" apparaît à droite de la rubrique "Client.NomComplet",
indiquant qu'une condition de sélection a été définie.
La description de la requête en langage naturel (en bas de l'éditeur de requêtes) est automatiquement
mise à jour en fonction de la condition ajoutée.
Note
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 8 of 24
4. Validez la fenêtre de description de la condition. Le chiffre "1" apparaît à droite de la rubrique "Commande.Etat",
indiquant qu'une condition de sélection a été définie.
▶ Nous allons maintenant définir une condition sur le mode de règlement. La rubrique
"ModeRèglement.IDModeRèglement" ne doit pas être affichée dans le résultat de la requête mais nous souhaitons tout
de même lui appliquer une condition. Pour cela, nous allons la rendre invisible.
1. Pour ne pas afficher la rubrique "ModeRèglement.IDModeRèglement" dans le résultat :
▶ La dernière condition de sélection à définir concerne le montant de la commande. En fait, nous allons définir deux
conditions afin de spécifier un prix minimum et un prix maximum.
1. Sélectionnez la rubrique "Commande.TotalTTC" dans la liste des éléments de la requête.
2. Affichez le menu contextuel de la rubrique (clic droit) et sélectionnez "Condition de sélection .. Nouvelle condition".
3. Dans la fenêtre qui s'affiche :
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 9 of 24
Il est possible de remplacer la définition des deux conditions de sélection sur la rubrique
(est supérieur ou égal à et est inférieur ou égal à) par une seule condition de sélection "Est
compris entre".
Note
Cependant, l'utilisation d'une condition de sélection de type "Est compris entre" oblige à
saisir les deux valeurs (ce qui n'est pas le cas si deux conditions différentes sont définies).
8. Validez la fenêtre de description de la requête. Le graphe de la requête est modifié pour prendre en compte les
conditions de sélection que nous avons définies.
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 10 of 24
Les paramètres peuvent être ignorés en décochant la case devant leur nom. Dans ce cas, la
condition de sélection associée au paramètre est ignorée. Par exemple, si le paramètre
ParamNomClient est ignoré, les commandes de tous les clients seront prises en compte par
Note
la requête.
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 11 of 24
• La fenêtre de création d'un nouvel élément s'affiche : cliquez sur "Page" puis sur "Page".
• L'assistant de création d'une page s'affiche.
• Dans la zone "Basée sur un modèle du projet", choisissez "PAGEMOD_Simple" et validez l'assistant.
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 12 of 24
5. Conservez les options par défaut dans les différents écrans de l'assistant et validez la création du champ Table.
6. Le champ Table est automatiquement créé dans la page.
7. Si nécessaire, modifiez la position du champ Table pour qu'il apparaisse entièrement dans la page.
Si le nom du champ Table est sélectionné, la partie inférieure présente les caractéristiques du
champ Table.
Si une colonne est sélectionnée, la partie inférieure présente les caractéristiques des colonnes.
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 13 of 24
2. Cliquez sur le nom du champ Table. Dans la partie basse, le libellé du champ Table est affiché. Nous allons modifier
ce libellé. Remplacez le libellé proposé par "Résultats de la recherche".
3. Cliquez sur la colonne "COL_IDCommande". Le titre de la colonne apparaît dans la partie basse de l'écran.
Remplacez le libellé "Identifiant de la commande" par "ID".
9. Enregistrez la page en cliquant sur parmi les boutons d'accès rapide. Nous allons vérifier les tailles des
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 14 of 24
Le Live data n'est pas affiché dans les champs utilisant une requête comme source de données
pour la raison suivante : les données affichées dépendent du résultat de la requête et ne peuvent
être connues qu'en exécution.
2. Seules les commandes réglées en espèces et dont le prix est compris entre 1500 et 3000 euros s'affichent, comme
lors du dernier test de la requête réalisé sous l'éditeur, lorsque nous avions spécifié les paramètres dans la fenêtre
de test de la requête.
Les paramètres de test ont été récupérés comme paramètres par défaut pour l'exécution. Nous allons maintenant
modifier la page pour que les paramètres soient saisis par l'utilisateur, à l'aide de champs.
3. Pour construire notre page, nous allons passer toutes les lignes de code correspondant aux paramètres en
commentaire :
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 15 of 24
Nous allons maintenant créer dans notre page les différents champs permettant à l'utilisateur de sélectionner les différents
paramètres de la requête. Ces champs vont être placés au-dessus du champ Table.
▶ Si nécessaire, déplacez le champ Table dans la page et diminuez sa hauteur afin de laisser de l'espace pour créer les
différents champs de sélection des critères.
Pour que l'utilisateur puisse saisir un nom de client à chercher, nous allons créer un champ de saisie.
▶ Pour créer le champ de saisie :
1. Affichez si nécessaire le volet "Analyse" : sous le volet "Accueil", dans le groupe "Environnement", déroulez "Volets"
et sélectionnez "Analyse". Les différents fichiers de données décrits dans l'analyse "Site_WEBDEV_Complet"
apparaissent dans le volet.
2. Cliquez sur l'icône à gauche du fichier de données "Client" : les rubriques du fichier de données sont listées.
3. Sélectionnez la rubrique "NomComplet" présente dans le fichier de données Client et réalisez un "Drag and Drop"
de cette rubrique vers la page "PAGE_Recherche_multicritere".
4. Le champ de saisie est automatiquement créé. Positionnez ce champ au-dessus du champ Table.
▶ Nous allons maintenant passer la valeur saisie dans le champ de saisie en paramètre à la requête :
1. Sélectionnez le champ Table et utilisez la touche F2.
2. Dans l'événement "Initialisation" du champ Table, remplacez la ligne :
par
MaSource.ParamNomClient = SAI_NomComplet
Dans ce code, SAI_NomComplet est le nom du champ de saisie que nous venons de créer. La valeur de ce champ
est associée au paramètre ParamNomClient attendu par la requête.
3. Fermez l'éditeur de code.
▶ Avant de tester, nous allons créer un champ Bouton pour ré-afficher le contenu du champ Table en fonction de la valeur
sélectionnée dans le champ Sélecteur :
1. Créez un champ Bouton :
2. Modifiez le libellé du champ (utilisez la touche Entrée du clavier). Le nouveau libellé est "Rechercher".
3. Modifiez le style du champ :
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 16 of 24
• Dans le menu contextuel du champ (clic droit), sélectionnez l'option "Choisir un style WEBDEV".
• Dans la fenêtre qui s'affiche, sélectionnez "Détails (Avec fond)".
• sélectionnez le champ.
• dans le menu contextuel, sélectionnez l'option "Adapter la taille".
Dans ce code, la constante taInit permet de réexécuter l'événement "Initialisation" du champ Table (l'événement
dans lequel les paramètres sont passés à la requête).
7. Fermez l'éditeur de code.
3. Dans la page qui s'affiche, saisissez le nom du client "GUENOT" puis cliquez sur le bouton "RECHERCHER". Le
contenu du champ Table est modifié : toutes les commandes du client "GUENOT" sont affichées.
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 17 of 24
Dans notre analyse, l'état de la commande est enregistré dans la rubrique "Etat" présente dans le fichier de données
"Commande". Cette rubrique est de type sélecteur.
Pour permettre à l'utilisateur de sélectionner un de ces trois états, nous allons utiliser le champ Sélecteur associé à la
rubrique "Etat" du fichier de données "Commande".
Les sélecteurs d'options sont également appelés "cases d'options". Ils permettent de sélectionner
une option et une seule, parmi celles proposées.
▶ Nous allons maintenant utiliser la valeur sélectionnée dans le champ Sélecteur pour la passer en paramètre à la
requête :
1. Affichez les événements associés au champ Table :
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 18 of 24
par
MaSource.ParamEtat = SEL_Etat
Dans ce code, SEL_Etat est le nom du champ Sélecteur que nous venons de créer. La valeur de ce champ est
associée au paramètre ParamEtat attendu par la requête.
3. Fermez l'éditeur de code.
▶ Dans cet exemple, seules les commandes d'un client dans un état spécifique peuvent être listées. Il peut être également
intéressant de lister toutes les commandes d'un client quel que soit leur état. Nous allons modifier notre page pour
réaliser ce traitement.
Pour gérer ce cas, nous allons :
▶ Fermez le navigateur.
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 19 of 24
▶ La nouvelle option "Toutes les commandes" revient à ne pas prendre en compte le paramètre "ParamEtat" de la
requête. Pour ne pas prendre en compte un paramètre de la requête, il suffit d'affecter la valeur NULL à ce paramètre.
Nous allons gérer ce cas pour le paramètre ParamEtat.
1. Sélectionnez le champ Table sous l'éditeur et affichez ses événements (touche F2 ou option "Code" du menu
contextuel du champ).
2. Dans l'événement "Initialisation" du champ Table, remplacez la ligne :
MaSource.ParamEtat = SEL_Etat
par :
SELON SEL_Etat
// Toutes les commandes
CAS 1
MaSource.ParamEtat = Null
AUTRE CAS
MaSource.ParamEtat = SEL_Etat-1
FIN
Dans ce code, si le champ SEL_Etat correspond à 1 (cas de l'option "Toutes les commandes"), le paramètre de la
requête associée a pour valeur "NULL". Dans le cas contraire, le paramètre a pour valeur le numéro de l'option
sélectionnée moins 1 (qui correspond à l'option que nous avons ajoutée).
3. Fermez l'éditeur de code.
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 20 of 24
5. Fermez le navigateur.
Une commande peut avoir plusieurs modes de règlement : espèces, chèques, ... Les différents modes de règlement
possibles sont stockés dans le fichier de données "ModeRèglement".
Nous allons utiliser un champ Combo basé sur ce fichier de données pour permettre à l'utilisateur de sélectionner le mode
de règlement voulu.
Le champ "Combo" permet d'afficher une liste d'éléments et de sélectionner un élément dans
cette liste.
A la différence d'une liste, une combo n'affiche qu'un élément à la fois : lors d'un clic sur le champ,
la combo se déroule et propose de sélectionner un autre élément. Un seul élément est sélectionné.
Note
Les éléments apparaissant dans une combo peuvent être déterminés lors de la création du champ
sous l'éditeur. Ces éléments :
• sont déterminés par programmation.
• proviennent d'un fichier de données ou d'une requête.
▶ Modifiez le libellé du champ Combo (utilisez la touche Entrée du clavier). Le nouveau libellé est "Mode de règlement".
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 21 of 24
▶ Nous allons maintenant utiliser la valeur sélectionnée dans le champ Combo en paramètre à la requête :
1. Affichez les événements associés au champ Table : sélectionnez le champ Table et utilisez la touche F2.
2. Dans l'événement "Initialisation" du champ Table, remplacez la ligne :
//MaSource.ParamIDModeRèglement = 1
par :
MaSource.ParamIDModeRèglement = COMBO_ModeRèglement
Dans ce code, COMBO_ModeRèglement est le nom du champ Combo que nous venons de créer. La valeur de retour
de ce champ est associée au paramètre ParamIDModeRèglement attendu par la requête.
3. Fermez l'éditeur de code.
4. Fermez le navigateur.
Le dernier paramètre de la requête correspond au montant de la commande pris en compte. Nous avons un paramètre qui
correspond au montant minimum et un paramètre qui correspond au montant maximum. Au niveau de l'interface,
l'utilisateur doit pouvoir saisir un intervalle de prix. Nous allons utiliser pour cela un champ Potentiomètre d'intervalle.
Note
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 22 of 24
Un champ Potentiomètre d'intervalle est un champ graphique, facilement intégrable dans un site
WEBDEV qui permet de sélectionner de manière simple les bornes d'un intervalle (valeur de début
et valeur de fin).
2. Cliquez dans la page, entre le champ "Mode de règlement" et le bouton "Rechercher". Le potentiomètre d'intervalle
est automatiquement créé.
▶ Le champ que nous venons de créer est un champ avancé, constitué du potentiomètre et de deux champs affichant les
bornes. Toute la programmation pour afficher les bornes est déjà réalisée dans le champ. Nous allons juste initialiser le
champ Potentiomètre pour qu'il propose les bornes correspondant aux données présentes dans le fichier de données
Commande.
1. Sélectionnez le champ Potentiomètre et affichez ses événements (touche F2).
2. Dans l'événement "Initialisation" du champ, insérez le code suivant (avant les lignes de code existantes) :
Examinons ce code :
• La fonction HLitPremier permet de lire le premier enregistrement du fichier de données "Commande" selon la
clé de parcours définie, ici TotalTTC. Cette fonction va donc permettre de lire l'enregistrement correspondant au
montant le plus bas.
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 23 of 24
• Le montant lu dans l'enregistrement est ensuite associé à la borne minimale du champ Potentiomètre ainsi qu'à
sa valeur inférieure.
• La borne minimale permet d'indiquer la valeur minimum que l'utilisateur pourra sélectionner.
• La valeur inférieure permet d'indiquer la valeur minimum actuellement sélectionnée.
• Pour trouver le montant le plus élevé, le principe est le même. La seule différence est le nom de la fonction
utilisée : HLitDernier. Cette fonction va permettre de lire le dernier enregistrement du fichier de données
Commande selon le montant, c'est-à-dire l'enregistrement correspondant au montant le plus élevé.
//MaSource.ParamPrixMin = "1500"
//MaSource.ParamPrixMax = "3000"
par :
MaSource.ParamPrixMin = POTI_SansNom2..ValeurInférieure
MaSource.ParamPrixMax = POTI_SansNom2..ValeurSupérieure
Dans ce code, les paramètres correspondant aux prix sont égaux à la valeur inférieure et supérieure du
potentiomètre.
3. Fermez l'éditeur de code.
• Nom du client,
• Etat,
• Mode de règlement,
• Montant.
4. Fermez le navigateur.
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024
Leçon 5.1. Recherche Multicritère Page 24 of 24
Pour optimiser l'affichage de la page, il est possible d'activer le mode Ajax sur ce bouton. Dans notre exemple, seul le
contenu du champ Table sera renvoyé par le serveur.
Pour utiliser la technologie Ajax dans un site, WEBDEV offre plusieurs possibilités :
• Ajax en un clic : il suffit de cliquer dans l'éditeur de code pour transformer un événement en
événement Ajax.
• Champs Ajax (champ Table, champ Zone répétée). Les champs Ajax permettent d'afficher des
Note
données chargées dynamiquement depuis le serveur. Plus besoin de tout télécharger d'un
coup !
• Ajax par programmation à l'aide de fonctions WLangage spécifiques : AjaxExécute et
AjaxExécuteAsynchrone.
3. Cliquez sur le lien AJAX : le lien "AJAX activé" apparaît, indiquant que l'événement est automatiquement transformé
en un événement Ajax.
▶ Testez la page :
1. Cliquez sur parmi les boutons d'accès rapide.
• Nom du client,
• Etat,
• Mode de règlement,
• Montant.
3. Cliquez sur le bouton "Rechercher". Seul le contenu du champ Table est ré-affiché.
mk:@MSITStore:D:\Programmes%20installés\WINDEV25\Aide\Browser\GAFWB.c... 23/08/2024