DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Nouveauté WINDEV 28 !
  • Ce que vous allez apprendre dans cette leçon
  • Présentation
  • Création de l'état "Bon de commande"
  • Création de la requête
  • Création de l'état basé sur une requête
  • Modifications de l'état "Bon de commande"
  • Affichage de l'état imprimé depuis une option de menu
  • Création du menu contextuel
  • Association du menu contextuel au champ Table
  • Test de l'impression
Leçon 4.5. Imprimer une commande
Ce que vous allez apprendre dans cette leçon
  • Créer un état basé sur une requête.
  • Lancer l'impression d'un état basé sur une requête paramétrée.
Durée de la leçon

Durée estimée : 30 mn
Leçon précédenteSommaireLeçon suivante
Présentation
Nous allons maintenant donner la possibilité à l'utilisateur d'imprimer directement le détail de la commande recherchée. L'état pourra être imprimé directement via le menu contextuel du champ Table.
  • Ré-ouvrez si nécessaire le projet que vous avez manipulé dans la leçon précédente.
    1. Affichez la page d'accueil de WINDEV (Ctrl + <).
    2. Dans la page d'accueil, cliquez sur "Tutoriel" puis dans la zone "Partie 4 - Application complète avec données", double-cliquez sur "Application complète (Exercice)".
    3. WINDEV vous propose d'ouvrir le projet que vous avez manipulé dans la leçon précédente. Vous pouvez ouvrir le projet présent sur votre poste ou ouvrir le projet original. Choisissez "Ouvrir la copie locale".

Corrigé

Un projet corrigé est disponible. Ce projet contient les différents états créés dans cette leçon. Pour ouvrir le projet corrigé, dans la page d'accueil, cliquez sur "Tutoriel" puis dans la zone "Partie 4 - Application complète avec données", double-cliquez sur "Application complète (Corrigé)".
Création de l'état "Bon de commande"
Nous allons tout d'abord lister les informations qui doivent être affichées dans l'état :
  • Les caractéristiques de la commande : date et numéro de commande.
  • Les coordonnées du client : nom, adresse, code postal, ville et pays.
  • Les caractéristiques des lignes de commande :
    • Quantité commandée,
    • Référence du produit,
    • Libellé du produit,
    • Total HT,
    • Total TTC.
Pour créer simplement cet état, nous allons rassembler toutes les données à imprimer dans une requête. Cette requête pourra être utilisée par l'état ou par tout autre élément du projet WINDEV (champ Table, champ Zone répétée, ...).

Note

WINDEV propose de créer des états à partir de nombreuses sources de données : fichiers de données, requêtes, champs, fichiers texte, ...
Dans la majorité des cas, il est conseillé de rassembler les données à imprimer via une requête, puis de créer un état sur cette requête. Si une information doit être ajoutée dans l'état, il suffira d'ajouter la rubrique correspondante dans la requête.
Les états réalisés directement sur les fichiers de données doivent être réservés à des états simples, c'est-à-dire affichant des données provenant d'un seul fichier de données.

Création de la requête

  • Pour créer la requête de base de l'état, 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 de requêtes 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 les enregistrements qui seront imprimés dans l'état. 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.
      Nous voulons imprimer dans l'état :
      • les renseignements concernant le client. Dans le fichier de données "Client", double-cliquez sur les rubriques NomComplet, Adresse, CodePostal, Ville et Pays.
      • les renseignements concernant la commande. Dans le fichier de données "Commande", double-cliquez sur les rubriques IDCommande et Date.
      • les renseignements concernant le produit. Dans le fichier de données "Produit", double-cliquez sur les rubriques Référence, Libellé et PrixHT.
      • les renseignements concernant la ligne de commande. Dans le fichier de données "LigneCommande", double-cliquez sur les rubriques Quantité et TotalHT.
      • les renseignements sur le prix total de la commande. Dans le fichier de données "Commande", double-cliquez sur les rubriques TotalHT et TotalTTC.

        Note

        L'ordre dans lequel les rubriques sont insérées dans la requête est important. En effet, cet ordre correspond à celui utilisé pour afficher les données dans l'état. Si cet ordre est correctement défini, la création de l'état correspondant sera d'autant plus simple.
La fenêtre de description de la requête est la suivante :
Description de la requête
A ce stade, cette requête permet de sélectionner toutes les commandes et les lignes de commande correspondantes.
Nous voulons sélectionner les données correspondant à une seule commande dont l'identifiant est connu. Nous allons donc définir en paramètre le numéro de commande.

  • Pour gérer le paramètre "Identifiant de la commande" :
    1. Sélectionnez au centre de l'écran la rubrique Commande.IDCommande.
    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 :
      Description d'une condition
      Effectuez les opérations suivantes :
      • Sélectionnez "Est égal à".
      • Cochez "au paramètre".
      • Le nom du paramètre est automatiquement proposé : "ParamIDCommande".
    4. Validez la fenêtre de description de la condition. Le chiffre "1" apparaît à droite de la rubrique Commande.IDCommande, indiquant qu'une condition de sélection a été définie.
    5. Donnez un nom à la requête : saisissez "REQ_BonDeCommande" à la place de "REQ_SansNom1" dans la zone "Nom de la requête" :
      Nom de la requête
    6. Validez la fenêtre de description de la requête (bouton "OK").
    7. La fenêtre de sauvegarde apparaît. Validez les informations proposées.
    8. La représentation graphique de la requête est affichée :
      Représentation graphique

Création de l'état basé sur une requête

  • Pour créer un état :
    1. Cliquez sur Créer un élément parmi les boutons d'accès rapide.
    2. La fenêtre de création d'un nouvel élément s'affiche : cliquez sur "Etat" puis sur "Etat". L'assistant de création d'un état se lance.
    3. L'assistant de création d'un état propose plusieurs types d'états :
      Assistant de création d'un état - Type d'état
    4. Sélectionnez "Tableau". Passez à l'étape suivante.
    5. Sélectionnez la source des données de l'état. L'état va être basé sur la requête que vous venez de créer. Sélectionnez "Un fichier de données ou une requête existante".
      Assistant de création d'un état - Source de données
      Passez à l'étape suivante.
    6. Dans la liste des fichiers de données et des requêtes, sélectionnez la requête "REQ_BonDeCommande". Passez à l'étape suivante.
    7. L'assistant demande d'indiquer s'il y a une rupture. Dans cet état nous n'utilisons pas de rupture. Nous verrons ce concept un peu plus loin dans ce cours. Répondez "Je ne veux pas de rupture dans l'état". Passez à l'étape suivante.
    8. Vous allez ensuite indiquer dans quel ordre sont imprimées les rubriques et leur répartition dans les différents blocs. Dans l'assistant, les rubriques sont listées dans l'ordre défini dans la requête :
      • Les rubriques concernant le client vont être affichées dans le bloc "Entête de page". En effet, ces informations ne doivent pas être répétées pour chaque ligne de la commande.
        Pour les rubriques NomComplet, Adresse, CodePostal, Ville et Pays, cliquez sur la ligne correspondant à la rubrique. Dans la colonne "Bloc", déroulez la combo et sélectionnez "Entête de page".
        Rubriques à afficher
      • Les rubriques concernant la commande vont également être affichées dans le bloc "Entête de page". En effet, ces informations ne doivent pas être répétées pour chaque ligne de la commande. Pour les rubriques IDCommande et Date, cliquez sur la ligne correspondant à la rubrique. Dans la colonne "Bloc", déroulez la combo et sélectionnez "Entête de page".
      • De plus, nous allons en profiter pour modifier le libellé de la rubrique "IDCommande".
        • Sélectionnez la ligne contenant la rubrique IDCommande.
        • Cliquez dans la colonne Libellé et saisissez "N° Commande".
          Modification du libellé
        • Les rubriques concernant les lignes de commande vont rester dans le corps de l'état. Ces rubriques seront affichées pour toutes les lignes de la commande.
      • Les rubriques concernant les totaux de la commande seront affichées en pied de page. En effet, ces informations ne doivent pas être répétées pour chaque ligne de la commande. Pour les rubriques TotalHT_Co et TotalTTC, cliquez sur la ligne correspondant à la rubrique. Dans la colonne "Bloc", déroulez la combo et sélectionnez "Pied de page".
        Blocs d'affichage
        Le tableau suivant fournit les différentes affectations des rubriques dans l'ordre présenté dans l'assistant :
        RubriqueBloc
        NomCompletEntête de page
        AdresseEntête de page
        CodePostalEntête de page
        VilleEntête de page
        PaysEntête de page
        IDCommandeEntête de page
        DateEntête de page
        RéférenceCorps
        LibelléCorps
        PrixHTCorps
        QuantitéCorps
        TotalHTCorps
        TotalHT_CoPied de page
        TotalTTCPied de page
    9. Passez à l'étape suivante.
    10. L'assistant propose de créer un compteur, une somme ou une moyenne sur les rubriques numériques présentes dans l'état. Dans cet état, les calculs sont faits par la requête. Cliquez sur le bouton "Aucun calcul". Passez à l'étape suivante.
    11. Cette étape permet de définir la mise en page de l'état.
      Assistant de création d'un état - Format du papier
      Nous garderons les valeurs par défaut avec l'orientation "Portrait".

      Note

      Marges d'impression
      Lors du choix des marges d'impression, n'oubliez pas de tenir compte des marges physiques des imprimantes. Les marges physiques sont les marges réservées par l'imprimante dans lesquelles il n'est pas possible d'imprimer. De plus, les marges physiques diffèrent en fonction des modèles d'imprimante.
    12. Passez à l'étape suivante.
    13. Cette étape permet de :
      • Indiquer si l'état doit être modifiable avec le logiciel "Etats et Requêtes".

        Express

        En version Express, l'option "Etat modifiable dans Etats et Requêtes" n'est pas disponible.
      • sélectionner le gabarit utilisé pour l'état. Il est conseillé d'utiliser le même gabarit que pour les fenêtres. Dans notre cas, sélectionnez par exemple le gabarit "Phoenix" et passez à l'étape suivante.
    14. Il ne reste plus qu'à donner un nom et un titre à l'état.
      • Saisissez le titre : "Bon de commande".
      • Le nom "ETAT_Bon_de_commande" est aussitôt proposé.
    15. Validez (bouton "Terminer").
    16. L'état étant trop grand pour être imprimé en mode Portrait, l'éditeur d'états propose d'utiliser le mode paysage, de réduire le tableau ou d'imprimer le tableau sur plusieurs pages. Dans notre cas, acceptez le mode paysage.
    17. Si nécessaire, acceptez ensuite de réduire le tableau.
    18. La fenêtre de sauvegarde de l'état apparaît. Validez les informations de sauvegarde.
    19. L'état apparaît en édition sous l'éditeur d'états :
      Editeur d'états
    20. Les différentes lignes de la commande sont regroupées sous forme de tableau.
  • Exécutez cet état en cliquant sur Tester l'élément parmi les boutons d'accès rapide.
    1. L'éditeur d'états demande la destination de l'impression. La destination de l'impression peut être au choix :
      Choix du mode d'impression
      Choisissez "Visualisateur de rapports" et validez.
    2. L'éditeur d'états demande les paramètres de la requête utilisée par l'état. Rappelez-vous, nous avons, en effet, utilisé un paramètre pour spécifier le numéro de la commande à imprimer. Pour l'exemple, saisissez la valeur de test "1".
      Paramètres de la requête
      Validez.
    3. L'état s'affiche comme nous l'avons demandé dans le visualisateur de rapports.
      Test de l'état
      Vous pouvez :
      • Directement imprimer la page en cours ou la totalité du document en cliquant sur l'imprimante.
      • Créer un duplicata.
      • Sélectionner un niveau de zoom plus ou moins important.
      • Enregistrer l'état sous forme d'un document Word (au format RTF).
      • Enregistrer l'état au format HTML.
      • Enregistrer l'état au format PDF.
      • Enregistrer l'état au format XML.
      • Créer un e-mail avec l'état au format HTML en corps du message.
      • Créer un e-mail avec l'état au format PDF en document lié.
      • Annoter le document.
      • Effectuer une recherche dans le document.
      • Ajouter des filigranes.
  • Fermez le visualisateur de rapports.

Modifications de l'état "Bon de commande"

Nous allons effectuer quelques modifications de mise en page dans l'état que nous venons de créer.

  • Supprimez le nombre de pages affiché dans l'état :
    1. Sélectionnez le champ [NUMPAGE]/[NBPAGES].
    2. Appuyez sur la touche Suppr du clavier.
  • Nous allons maintenant positionner les informations concernant le client et la commande dans l'entête de page :
    1. Supprimez le libellé "Bon de commande" présent dans l'entête de page.
    2. Supprimez les libellés devant les informations client (Nom complet, ...).
    3. Positionnez la rubrique contenant la ville à côté du code postal.
    4. Sélectionnez les informations concernant le client et déplacez-les à l'aide de la souris sur la droite de l'état.
    5. Remontez le numéro de commande et la date de la commande (en haut du bloc "Entête de page").
  • Nous allons positionner les totaux correctement dans le pied de page :
    1. Sélectionnez les champs (libellés et rubriques) correspondant aux totaux présents dans le pied de page.
    2. Positionnez ces champs à l'aide de la souris en bas à droite du tableau.
  • Modifiez les options d'impression du bloc "Pied de page" :
    1. Affichez la fenêtre de description du bloc "Pied de page" :
      • Cliquez dans le bloc "Pied de page".
      • Affichez le menu contextuel (clic droit) et sélectionnez "Description du bloc".
    2. Dans l'onglet "Général", cochez les options suivantes :
      • Imprimer le bloc "Fin de document" APRES le bloc "Pied de page" sur la dernière page.
      • Le bloc "Pied de page" ne s'imprime pas en bas de la page, il se colle aux blocs précédents.
        Description d'un bloc
    3. Validez la fenêtre de description.
    4. L'état est affiché sous l'éditeur d'états :
      Editeur d'états
    5. Enregistrez l'état en cliquant sur Enregistrer un élément parmi les boutons d'accès rapide.
Notre état est terminé.
Affichage de l'état imprimé depuis une option de menu
Dans notre application, l'état "ETAT_Bon_de_commande" va être imprimé depuis une option du menu contextuel du champ Table listant les commandes recherchées.
Par défaut, nous l'avons déjà vu, le champ Table propose un menu automatique. Nous voulons conserver les options de ce menu automatique et ajouter une option qui permettra d'imprimer le bon de commande sélectionné.
Le principe utilisé est le suivant :
  1. Nous allons créer un nouveau menu contextuel. Ce menu contiendra le code WLangage permettant de lancer l'impression de l'état.
  2. Nous allons lier ce menu contextuel au champ Table et indiquer que le menu contextuel par défaut viendra à la suite du menu contextuel défini pour le champ Table.

Création du menu contextuel

  • Pour créer un menu contextuel dans la fenêtre "FEN_Menu" :
    1. Ouvrez si nécessaire la fenêtre "FEN_Menu" sous l'éditeur (double-cliquez sur son nom dans le volet "Explorateur de projet" par exemple).
    2. Sous le volet "Fenêtre", dans le groupe "Barres et menus", déroulez "Menus contextuels" et sélectionnez "Nouveau menu contextuel".
    3. Un nouveau menu contextuel apparaît sous l'éditeur. Ce menu possède une seule option "Option de menu".
      Menu contextuel en édition
    4. Affichez la description du menu contextuel :
      • Sélectionnez "Option de menu".
      • Affichez le menu contextuel (clic droit).
      • Sélectionnez l'option "Description du menu contextuel".
    5. Donnez un nom au menu contextuel "MENU_Commande" et validez.

      Note

      Menus contextuels et fenêtres
      Un menu contextuel est associé à une fenêtre. Si une fenêtre possède plusieurs menus contextuels (menu contextuel de la fenêtre, menus contextuels des champs, ...), tous ces menus sont enregistrés avec la fenêtre.
  • Nous allons maintenant définir le libellé de l'option et saisir son code WLangage.
    1. Sélectionnez l'option "Option de menu".
    2. Appuyez sur la touche Espace du clavier : le libellé passe en édition. Saisissez le nouveau libellé "Imprimer le bon de commande" et validez.
    3. Affichez les événements WLangage associés à l'option :
      • Sélectionnez l'option.
      • Affichez le menu contextuel (clic droit) et sélectionnez l'option "Code".
    4. Saisissez le code WLangage suivant :
      // Impression dans le visualisateur de rapports
      iDestination(iVisualisateur)
      // Initialise la requête de l'état
      ETAT_Bon_de_commande.InitRequête(TABLE_REQ_RechercheCommandes.COL_IDCommande)
      // Lance l'impression de l'état
      ETAT_Bon_de_commande.Imprime()
      Dans ce code :
      • La fonction iDestination permet d'indiquer que l'impression de l'état sera effectuée dans le visualisateur de rapports.
      • La fonction <Etat>.InitRequête permet de spécifier les paramètres attendus par la requête associée à l'état. Dans notre cas, la requête attend en paramètre le numéro de commande. Ce numéro de commande est présent dans la colonne COL_IDCommande du champ Table TABLE_REQ_RechercheCommandes pour la ligne en cours.
      • La fonction <Etat>.Imprime permet de lancer l'impression de l'état spécifié (ici, l'état ETAT_Bon_de_commande).
    5. Fermez la fenêtre de code et la fenêtre contenant le menu contextuel.
    6. Enregistrez la fenêtre "FEN_Menu".

Association du menu contextuel au champ Table

  • Dernière étape : nous allons lier le menu contextuel au champ Table.
    1. Dans la fenêtre "FEN_Menu", affichez l'onglet "Recherche de commandes".
    2. Sélectionnez le champ Table et affichez sa description (option "Description de la table" du menu contextuel du champ).
    3. Dans l'onglet "UI", déroulez la combo "Menu contextuel".
    4. Cochez l'option "Ajouter un menu contextuel", sélectionnez le menu "MENU_Commande" et sélectionnez l'option "Au début" pour indiquer que le menu est placé avant le menu système.
      Menu contextuel
    5. Cliquez dans la fenêtre pour valider le menu contextuel.
    6. Validez.

Test de l'impression

  • Il ne reste plus qu'à effectuer un test en réel :
    1. Lancez le test de la fenêtre "FEN_Menu".
    2. Sélectionnez le volet d'onglet "Recherche de commandes".
    3. Spécifiez les critères et lancez une recherche.
    4. Sélectionnez une des commandes affichée dans le champ Table.
    5. Imprimez la commande via le menu contextuel.
      Test de l'état
    6. Fermez le visualisateur de rapports ainsi que la fenêtre de test.
Leçon précédenteSommaireLeçon suivante
Version minimum requise
  • Version 28
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire