DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Nouveauté WINDEV 2024 !
Aide / Tuto WINDEV / Tuto - Application WINDEV : gérer des données
  • Leçon 3 - Recherche multicritère
  • Présentation
  • Création de la requête pour rechercher les commandes
  • Création de la requête de sélection
  • Test de la requête
  • Définition des paramètres dans la requête
  • Premier paramètre "Etat de la commande"
  • Second paramètre "Mode de règlement"
  • Dernier paramètre "Date de la commande"
  • Test de la requête paramétrée
  • Modification de l'interface pour ajouter la recherche multicritère
  • Création des champs de paramétrage des critères et affichage du résultat
  • Création du champ Table
  • Premier paramètre : Etat de la commande
  • Second paramètre : Mode de règlement
  • Dernier paramètre : Date de commande
  • En résumé

Tuto - Application WINDEV : gérer des données

Leçon 3 - Recherche multicritère
Ce que vous allez apprendre :
  • Création d'une requête paramétrée.
  • Création de l'interface de sélection des critères de recherche.
  • Passage de paramètres à une requête.
  • Affichage du résultat d'une requête dans un champ Table.
Durée de la leçon 40 mn
Présentation
Nous avons vu dans la leçon précédente comment réaliser une recherche sur un seul critère (le nom du client). 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 :
  • l'état de la commande,
  • son mode de règlement,
  • les dates de commandes prises en compte.
L'UI de la fenêtre "FEN_Menu" sera la suivante :
Interface de la fenêtre FEN_Menu
Cette UI est composée :
  • de champs permettant de sélectionner les critères de recherche.
  • d'un champ Bouton permettant de lancer la recherche.
  • d'un champ Table permettant d'afficher le résultat de la recherche. Ce champ Table est basé sur une requête. Cette requête va permettre de sélectionner les enregistrements à afficher. Le champ Table listera le résultat de la recherche.
Avertissement
Cette leçon est basée sur l'exemple réalisé dans les leçons précédentes.
Création de la requête pour rechercher les commandes

Création de la requête de sélection

La première étape consiste à créer la requête de sélection des enregistrements.
Qu'est-ce qu'une requête de sélection ?
Une requête de sélection est une requête qui va "choisir" uniquement les enregistrements correspondant aux critères spécifiés.
Ce type de requête s'appelle une requête de sélection car en langage SQL l'ordre SELECT est utilisé.
Pour créer une requête de sélection, nous allons utiliser l'éditeur de requêtes.
  1. Cliquez sur Créer un élément parmi les boutons d'accès rapide. La fenêtre de création d'un nouvel élément s'affiche : cliquez sur "Requête­". L'assistant de création d'une requête se lance.
  2. Sélectionnez l'option "Sélection (SELECT)".
    En effet, la requête que nous allons créer va nous permettre de sélectionner des enregistrements. Passez à l'étape suivante.
  3. La fenêtre de description de la requête apparaît. Nous allons construire la requête en sélectionnant les éléments que nous voulons dans le résultat.
  4. 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.
    Remarque : Pour faire apparaître les rubriques des différents fichiers de données, il suffit de cliquer sur la flèche Flèche présente devant le nom du fichier de données.
    Nous voulons afficher :
    • les renseignements concernant la commande. Déroulez le fichier de données "Commande" (clic sur la flèche Flèche) puis double-cliquez sur les rubriques : IDCommande, Date, Etat et TotalHT.
    • les renseignements concernant le client ayant passé la commande. Déroulez le fichier de données "Client" (clic sur la flèche Flèche) puis double-cliquez sur la rubrique "NomComplet".
    • les renseignements concernant le mode de règlement de la commande. Déroulez le fichier de données "ModeRèglement" (clic sur la flèche Flèche) puis double-cliquez sur la rubrique "Libellé".
    La fenêtre de description de la requête est la suivante :
    Description de la requête
  5. Nous allons trier les données par date.
    • Dans la liste des éléments de la requête, sélectionnez la rubrique "Commande.Date", puis cliquez sur le bouton "Trier" 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.
      Ajout d'un tri
    • Validez.
  6. 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.
    Tri dans la fenêtre de description de la requête
  7. Donnez un nom à la requête : saisissez "REQ_RechercheCommandes" à la place de "REQ_SansNom1" dans la zone "Nom de la requête" :
    Nom de la requête
  8. Validez la fenêtre de description de la requête (bouton "OK").
  9. La fenêtre de sauvegarde apparaît. Validez les informations proposées.
  10. La représentation graphique de la requête est affichée :
    Représentation graphique

Test de la requête

Comme tous les éléments d'un projet WINDEV, il est possible de tester immédiatement la requête que nous venons de créer :
  1. Cliquez sur Tester un élément.
  2. Le résultat s'affiche dans une fenêtre :
    Résultat de la requête
    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.
    Si vous faites un clic droit sur la table affichant 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 XLSX (Excel).
    • un fichier Word ou OpenOffice.
    • un fichier XML (eXtensible Markup Language).
    • un fichier HFSQL.
  3. Fermez la fenêtre.
Définition des paramètres dans la requête
Dans notre exemple, l'utilisateur va pouvoir sélectionner une valeur pour les critères de recherche suivants :
  • Etat de la commande.
  • Mode de règlement de la commande.
  • Date de la commande.
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 bien dans le menu contextuel, utilisez l'option "Description de la requête").

Premier paramètre "Etat de la commande"

Pour gérer le paramètre "état de la commande" :
  1. Sélectionnez au centre de l'écran la rubrique Commande.Etat.
  2. Déroulez le bouton "Condition de sélection" et sélectionnez "Nouvelle condition".
  3. Dans la fenêtre qui s'affiche, nous allons indiquer que la condition de sélection correspond à un paramètre :
    • Sélectionnez "Est égal à".
    • Sélectionnez "au paramètre".
    • Le nom du paramètre est automatiquement proposé : "ParamEtat".
      Requête - Description d'une condition

      Nous vous conseillons de conserver le préfixage des paramètres des requêtes par "Param". Il est ainsi possible de les retrouver très facilement dans l'éditeur de code.
      Si vous recherchez un paramètre de la requête, saisissez simplement ‘Param' et la complétion de l'éditeur de code vous propose tous les paramètres.
  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.
    Condition dans la description de la requête

Second paramètre "Mode de règlement"

Nous allons maintenant définir une condition sur le mode de règlement. Cette rubrique n'est pas présente dans le résultat de la requête mais nous souhaitons tout de même lui appliquer une condition. Pour cela, nous allons intégrer la rubrique dans le résultat de la requête et la rendre invisible pour qu'elle ne soit pas présente dans le résultat.
  1. Sur la partie gauche de la fenêtre de description de la requête, dans le fichier de données "Commande", double-cliquez sur la rubrique "IDModeRèglement". La rubrique "IDModeRèglement" apparaît dans la liste des éléments de la requête.
  2. Pour ne pas afficher cette rubrique dans le résultat :
    • Cliquez sur l'icône Visualisation de la rubrique présente à droite de la rubrique.
    • Dans le menu qui s'affiche, sélectionnez "Ne pas afficher".
  3. Pour définir une condition de sélection sur la rubrique "Commande.IDModeRèglement" :
    • Sélectionnez au centre de l'écran la rubrique "Commande.IDModeRèglement".
    • Déroulez le bouton "Condition de sélection" et sélectionnez "Nouvelle condition".
    • Dans la fenêtre qui s'affiche, indiquez que la condition de sélection correspond à un paramètre :
      • Sélectionnez "Est égal à".
      • Sélectionnez "au paramètre".
      • Indiquez le nom du paramètre "ParamIDModeRèglement".
  4. Validez la définition de la condition de sélection.
    Définition de la condition de sélection

Dernier paramètre "Date de la commande"

La dernière condition de sélection à définir concerne la date de la commande. Cette date doit être comprise entre deux dates saisies par l'utilisateur.
  1. Sélectionnez dans la liste des éléments de la requête la rubrique "Commande.Date".
  2. Cliquez sur le bouton "Entre deux dates ...". Ce bouton permet de définir directement une condition de sélection.
  3. Dans la fenêtre qui s'affiche :
    • La condition de sélection est "Est compris entre".
    • Cliquez sur "au paramètre".
    • Indiquez le nom du paramètre "ParamDébutPériode".
    • Cliquez sur le second "au paramètre".
    • Indiquez le nom du paramètre "ParamFinPériode".
  4. Validez la définition de la condition de sélection.
  5. 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élections que nous avons définies.
    Représentation graphique de la requête
  6. Enregistrez la requête en cliquant sur Enregistrer un élément parmi les boutons d'accès rapide.

Test de la requête paramétrée

Pour tester la requête paramétrée :
  1. Cliquez sur Tester la requête.
  2. Une fenêtre s'affiche permettant de saisir les différents paramètres de la requête.
  3. Saisissez les données suivantes :
    • Décochez le paramètre ParamEtat.
    • Sélectionnez le paramètre ParamIDModeRèglement. Dans la partie basse de l'écran, saisissez "1".
    • Sélectionnez le paramètre ParamDébutPériode. Dans la partie basse de l'écran, saisissez "01/01/2023".
    • Sélectionnez le paramètre ParamFinPériode. Dans la partie basse de l'écran, saisissez "31/03/2023".
      Paramètres de la requête
  4. Validez la fenêtre. Le résultat de la requête correspondant aux paramètres spécifiés s'affiche.
  5. Fermez la fenêtre.
Nous allons maintenant créer l'UI permettant d'indiquer les paramètres de cette requête, de l'exécuter et d'afficher le résultat.
Modification de l'interface pour ajouter la recherche multicritère
Nous allons ajouter un volet d'onglet dans la fenêtre "FEN_Menu" pour afficher le résultat de la recherche multicritère.
Pour ajouter un volet d'onglet :
  1. Affichez si nécessaire la fenêtre "FEN_Menu" sous l'éditeur.
  2. Sélectionnez le champ Onglet.
  3. Affichez la fenêtre de description du champ (option "Description" du menu contextuel).
  4. Dans l'onglet "Général" de la fenêtre de description, cliquez sur le bouton "Nouveau". Un troisième volet d'onglet apparaît.
  5. Cliquez sur "Volet 3".
  6. Dans la partie "Description d'un volet statique", saisissez le libellé du volet : "Recherche de commandes".
    Description d'un champ Onglet
  7. Nous allons associer une image au volet d'onglet grâce au catalogue d'images de WINDEV. Cliquez sur le bouton Afficher les options des images à droite du champ "Image". Dans le menu contextuel qui s'affiche, sélectionnez l'option "Catalogue". La fenêtre du catalogue d'images apparaît.
  8. Dans la zone de recherche, indiquez "Recherche". Lancez­ la recherche en cliquant sur la loupe.
  9. Parmi les images proposées, sélectionnez l'icône représentant les jumelles (Jumelles) et validez.
  10. Conservez les options de l'écran de paramétrage de l'image générée et validez.
  11. Validez la fenêtre de description du champ Onglet.
    Champ Onglet sous l'éditeur
Création des champs de paramétrage des critères et affichage du résultat
Passons maintenant à l'affichage du résultat de notre recherche multicritère.
Nous allons tout d'abord créer un champ Table basé sur la requête puis créer les différents champs qui permettront à l'utilisateur de sélectionner les critères de recherche.

Création du champ Table

Pour créer le champ Table affichant le résultat de la recherche :
  1. Dans la fenêtre "FEN_Menu", cliquez sur le volet "Recherche de commandes". Le volet d'onglet vide apparaît.
  2. Créez un champ Table : sous le volet "Création", dans le groupe "Données", déroulez "Table et Liste" et sélectionnez "Table (Verticale)".
  3. Cliquez dans le volet du champ Onglet précédemment sélectionné : l'assistant de création du champ Table se lance.
  4. Le champ Table va être basé sur la requête "REQ_RechercheCommandes" (que nous avons créé précédemment). Sélectionnez l'option "Afficher les données d'un fichier ou d'une requête existante". Passez à l'étape suivante de l'assistant.
  5. Sélectionnez la requête qui sera la source de données du champ Table :
    • Déroulez si nécessaire le groupe "Requêtes".
    • Sélectionnez la requête "REQ_RechercheCommandes".
      Assistant de création du champ Table
    • Passez à l'étape suivante de l'assistant.
  6. Sélectionnez si nécessaire toutes les rubriques proposées.
    Rubriques à afficher
  7. Passez à l'étape suivante de l'assistant.
  8. Conservez les options par défaut dans les différentes étapes de l'assistant et validez la création du champ Table.
  9. Le champ Table est automatiquement créé dans le volet "Recherche de commandes" du champ Onglet.
  10. Si nécessaire, modifiez la position du champ Table pour qu'il apparaisse entièrement dans le volet d'onglet.
    Fenêtre sous l'éditeur
Pour plus de lisibilité, nous allons renommer les libellés des colonnes du champ Table.
  1. Affichez la description du champ Table (double-cliquez sur le champ).
    La fenêtre de description d'un champ Table est composée de deux zones :
    • la zone supérieure présentant le nom du champ, des colonnes et leur type.
    • la zone inférieure composée des différents onglets de description.
    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.
  2. 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".
    Titre des colonnes
  3. Cliquez sur la colonne "COL_NomComplet". Remplacez le libellé "Nom complet" par "Client".
    Titre des colonnes
  4. Cliquez sur la colonne "COL_Libellé". Remplacez le libellé "Libellé" par "Mode de règlement".
    Titre des colonnes
  5. Validez la fenêtre de description du champ Table. Le champ est automatiquement mis à jour avec les changements effectués.
  6. Agrandissez la taille des colonnes "Date" et "Etat" du champ Table à l'aide des poignées de redimensionnement des colonnes.
  7. Diminuez la taille des colonnes "ID" et "Mode de règlement" afin que toutes les colonnes apparaissent dans le champ Table.
  8. Enregistrez la fenêtre en cliquant sur Enregistrer un élément parmi les boutons d'accès rapide. Nous allons vérifier les tailles des colonnes en exécutant la fenêtre.
Live Data et champs basés sur des requêtes
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.
Nous allons faire un premier test de cette fenêtre :
  1. Cliquez sur Tester la fenêtre parmi les boutons d'accès rapide.
  2. Cliquez sur le volet d'onglet "Recherche de commandes". Seules quelques commandes 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.
    Test de la fenêtre
  3. Fermez la fenêtre de test pour revenir sous l'éditeur.
Regardons les événements WLangage associés au champ Table :
  1. Sélectionnez le champ Table.
  2. Affichez le menu contextuel (clic droit) et sélectionnez l'option "Code".
  3. L'événement "Initialisation de TABLE_REQ_RechercheCommandes" contient le code suivant :
    // Paramètres de la requête â€˜REQ_RechercheCommandes'
    //MaSource.ParamEtat = <Valeur du paramètre ParamEtat>
    MaSource.ParamIDModeReglement = "1"
    MaSource.ParamDébutPériode = "20230101"
    MaSource.ParamFinPériode = "20230331"
    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 fenêtre pour que les paramètres soient saisis par l'utilisateur, à l'aide de champs.
  4. Fermez l'éditeur de code (utilisez la croix en haut à droite de l'éditeur).
Nous allons maintenant créer dans notre fenêtre 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 fenêtre et diminuez sa hauteur afin de laisser de l'espace pour créer les différents champs de sélection des critères.

Premier paramètre : Etat de la commande

Une commande peut avoir 3 états :
  • en attente,
  • payée,
  • annulée.
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 permettent de sélectionner une option et une seule, parmi celles proposées.
Pour créer le champ Sélecteur :
  1. Affichez si nécessaire le volet "Analyse" : sous le volet "Accueil", dans le groupe "Environnement­", déroulez "Volets" et sélectionnez "Volets" puis "Analyse". Les différents fichiers de données décrits dans l'analyse "WD Application Complète" apparaissent dans le volet.
  2. Cliquez sur l'icône Flèche à gauche du fichier de données "Commande" : les rubriques du fichier de données sont listées.
  3. Sélectionnez la rubrique "Etat" présente dans le fichier de données Commande et réalisez un "Drag and Drop" de cette rubrique vers la fenêtre "FEN_Menu".
  4. Le champ Sélecteur est automatiquement créé. Positionnez ce champ au-dessus du champ Table.
Par défaut, le champ Sélecteur affiche uniquement les options possibles. Dans notre cas, nous voulons afficher le libellé du champ Sélecteur. Pour cela, il suffit de choisir dans le gabarit du projet, un style permettant d'afficher le libellé du champ. Pour changer ce style :
  1. Sélectionnez si nécessaire le champ Sélecteur.
  2. Affichez le menu contextuel (clic droit) et sélectionnez l'option "Choisir un style".
  3. La fenêtre qui s'affiche présente tous les styles définis pour les champs Sélecteur.
  4. Sélectionnez le style "SEL_Simple".
  5. Validez. Le style est immédiatement appliqué au champ sous l'éditeur.
    Fenêtre avec le champ Sélecteur sous l'éditeur
Nous allons maintenant utiliser la valeur sélectionnée dans le champ Sélecteur en paramètre à la requête :
  1. Affichez les événements WLangage associés au champ Table :
    • Sélectionnez le champ Table.
    • Affichez le menu contextuel (clic droit) et sélectionnez l'option "Code".
  2. Dans l'événement "Initialisation" du champ Table, remplacez la ligne :
    //MaSource.ParamEtat = <Valeur du paramètre ParamEtat>
    par le code WLangage suivant :
    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.
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 :
    • sous le volet "Création", dans le groupe "Champs usuels", cliquez sur Créer un champ Bouton.
    • cliquez ensuite dans le volet "Recherche des commandes" du champ Onglet, en haut à droite.
  2. Sélectionnez le champ puis tapez sur la touche Entrée du clavier. Le libellé du champ passe en édition. Saisissez "Rechercher" et appuyez sur la touche Entrée du clavier.
  3. Modifiez le style du champ :
    • Affichez le menu contextuel du champ (clic droit) et sélectionnez l'option "Choisir un style".
    • Dans la fenêtre qui s'affiche, saisissez "BTN_Recherche" dans le champ de recherche.
    • Le style est automatiquement sélectionné. Validez.
  4. Redimensionnez le champ si nécessaire.
  5. Affichez les événements WLangage associés à ce champ : appuyez sur la touche F2.
  6. Dans l'événement "Clic sur ...", saisissez le code WLangage suivant :
    // Actualise l'affichage du champ Table
    TABLE_REQ_RechercheCommandes.Affiche(taInit)
    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.
Nous allons tester le passage du premier paramètre :
  1. Enregistrez la fenêtre en cliquant sur Enregistrer un élément parmi les boutons d'accès rapide.
  2. Cliquez sur Tester la fenêtre parmi les boutons d'accès rapide.
  3. Sélectionnez si nécessaire le volet d'onglet "Recherche de commandes".
  4. Changez l'état des commandes grâce au sélecteur puis cliquez sur "Rechercher". Le contenu du champ Table est modifié.
    Test de la fenêtre
  5. Fermez la fenêtre de test.

Second paramètre : Mode de règlement

Une commande peut avoir plusieurs modes de règlement : espèces, chèques, etc. 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'un champ Liste, un champ Combo n'est pas déroulé : le champ Combo se déroule à la demande ou lors du positionnement du curseur sur la zone de saisie du champ.
Pour créer un champ Combo :
  1. Sous le volet "Création", dans le groupe "Champs usuels", cliquez sur "Combo".
  2. Cliquez dans la fenêtre à l'emplacement où le champ doit être créé (par exemple à côté du champ Sélecteur précédemment créé).
  3. L'assistant de création du champ Combo se lance.
  4. Sélectionnez l'option "Afficher les données d'un fichier ou d'une requête existante" et passez à l'étape suivante.
  5. Sélectionnez le fichier de données "ModeRèglement" et passez à l'étape suivante.
  6. La rubrique à afficher dans le champ Combo est "Libellé". Décochez "IDModeRèglement" et cochez "Libellé". Passez à l'étape suivante.
  7. Sélectionnez la rubrique de tri : "Libellé". Passez à l'étape suivante.
  8. Sélectionnez la valeur de retour "IDModeRèglement". Cette valeur de retour est très importante car c'est elle qui sera passée en paramètre à la requête. Passez à l'étape suivante.
  9. Conservez les options par défaut dans les différentes étapes de l'assistant et validez la création du champ Combo.
  10. Le champ Combo est automatiquement créé dans la fenêtre.
Nous allons modifier quelques caractéristiques du champ Combo :
  1. Sélectionnez le champ Combo et affichez la fenêtre de description du champ (option "Description"­ du menu contextuel).
  2. Dans l'onglet "Général", modifiez le libellé du champ : remplacez "Combo ModeRèglement" par "Mode de règlement".
  3. Dans l'onglet "Contenu", spécifiez la valeur initiale affichée par le champ Combo (champ "Valeur initiale" en bas de la fenêtre de description). Dans notre cas, saisissez "1". Cette valeur correspond au paiement en espèces.
  4. Validez la fenêtre de description du champ.
Changez le look du champ : pour occuper moins de place, nous allons sélectionner un style affichant le libellé au-dessus du champ.
  1. Sélectionnez le champ Combo.
  2. Dans le menu contextuel (clic droit), sélectionnez l'option "Choisir un style".
  3. Dans la fenêtre qui s'affiche, sélectionnez le style "COMBO_Interne" et validez.
  4. Diminuez la taille du champ.
Nous allons maintenant utiliser la valeur sélectionnée dans le champ Combo pour la passer en paramètre à la requête :
  1. Affichez les événements WLangage associés au champ Table :
    • Sélectionnez le champ Table.
    • Affichez le menu contextuel (clic droit) et sélectionnez l'option "Code".
  2. Dans l'événement "Initialisation" du champ Table, remplacez la ligne :
    MaSource.ParamIDModeReglement = "1"
    par le code :
    MaSource.ParamIDModeReglement = 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. Enregistrez la fenêtre en cliquant sur Enregistrer un élément parmi les boutons d'accès rapide.
Nous allons tester le passage des deux premiers paramètres :
  1. Cliquez sur Tester une fenêtre parmi les boutons d'accès rapide.
  2. Sélectionnez si nécessaire le volet d'onglet "Recherche de commandes".
  3. Changez l'état des commandes grâce au champ Sélecteur et modifiez le mode de règlement grâce au champ Combo puis cliquez sur "Rechercher". Le contenu du champ Table est modifié.
    Test de la fenêtre avec sélection de l'état de la commande et du mode de paiement
  4. Fermez la fenêtre de test.

Dernier paramètre : Date de commande

Le dernier paramètre de la requête correspond à la date des commandes prises en compte. Au niveau de l'interface, l'utilisateur doit pouvoir saisir un intervalle de dates. Nous allons utiliser pour cela un modèle de champs.
Un modèle de champs est une fenêtre spécifique contenant différents champs. Dans cette fenêtre, vous pouvez mettre tout type de champs. Un modèle de champs est un fichier d'extension "WDT".
L'intérêt principal d'un modèle de champs est la ré-utilisabilité. Un modèle de champs présent dans un projet peut être réutilisé dans n'importe quelle fenêtre du projet.
De plus, les modèles de champs peuvent être surchargés : du code peut être ajouté, les champs peuvent être déplacés et/ou modifiés dans la fenêtre utilisant le modèle de champs.
Pour gérer la date de la commande :
  1. Dans le volet "Explorateur de projet", déroulez le dossier "Modèles de champs".
  2. Sélectionnez le modèle de champs "MDLC_ChoixPériode" dans le volet "Explorateur de projet" et réalisez un "Drag and Drop" vers la fenêtre "FEN_Menu" (à côté du champ "Mode de règlement").
    Drag and Drop du modèle de champs
  3. Sélectionnez le modèle de champs créé et affichez sa description (option "Description" du menu contextuel).
  4. Dans la fenêtre de description, renommez le modèle de champs. Le nouveau nom est "CMOD_ChoixPériode".
  5. Validez la fenêtre de description.
  6. Repositionnez et alignez les champs si nécessaire.
Nous allons maintenant utiliser les dates sélectionnées pour les passer en paramètre à la requête :
  1. Affichez les événements WLangage associés au champ Table :
    • Sélectionnez le champ Table.
    • Affichez le menu contextuel (clic droit) et sélectionnez l'option "Code".
  2. Dans l'événement "Initialisation" du champ Table, remplacez les lignes :
    MaSource.ParamDébutPériode = "20230101"
    MaSource.ParamFinPériode = "20230331"
    par :
    MaSource.ParamDébutPériode = SAI_DateDébut
    MaSource.ParamFinPériode = SAI_DateFin
    Dans ce code WLangage, SAI_DateDébut et SAI_DateFin sont les noms des deux champs de saisie présents dans le modèle de champs. Leurs valeurs sont associées aux paramètres ParamDébutPériode et ParamFinPériode attendus par la requête.
  3. Fermez l'éditeur de code.
  4. Enregistrez la fenêtre en cliquant sur Enregistrer l'élément parmi les boutons d'accès rapide.
Nous allons tester le passage des paramètres :
  1. Cliquez sur Tester une fenêtre parmi les boutons d'accès rapide.
  2. Sélectionnez si nécessaire l'onglet "Recherche de commandes".
  3. Définissez les différents paramètres de la recherche :
    • Etat des commandes,
    • Mode de règlement,
    • Fourchette de dates à prendre en compte.
  4. Cliquez sur le champ "Rechercher". Le contenu du champ Table est modifié.
    Test de la fenêtre avec recherche multicritère
  5. Fermez la fenêtre de test.
En résumé
Projet corrigé
Vous voulez vérifier le résultat de vos manipulations ?
Un projet corrigé est disponible. Ce projet contient les différentes fenêtres créées dans cette leçon. Pour ouvrir le projet corrigé, dans la page d'accueil, cliquez sur "Tutoriel" puis dans la zone "Tuto - Application WINDEV : gérer des données", double-cliquez sur "Application complète - Corrigé".
Cette leçon nous a permis de découvrir comment faire une requête paramétrée, et comment l'utiliser comme base d'un champ Table. Nous avons pu ainsi créer les différents champ permettant à l'utilisateur de spécifier les différentes valeurs de sa recherche. Dans la leçon suivante, nous allons voir comment proposer des impressions contenant les données de la base de données.
Leçon précédenteSommaireLeçon suivante
Version minimum requise
  • Version 2024
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 14/12/2023

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