Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Reporting vers fenêtre

0000003272     -      18/11/2025

Mercator 11.0 ou ultérieur permet de produire des rapports sous la forme d'une grille dans une fenêtre de Mercator. Cela présente l'avantage d'une plus grande interactivité possible avec l'utilisateur. Par exemple, il est possible dans cette grille de placer des boutons.

Dans le paramétrage du rapport, il suffit de sélectionner le type Fenêtre. On observe alors que la propriété ColumnRules devient alors disponible.

Il est alors possible de construire un écran qui utilise des possibilités codeless de Mercator. Par exemple, un rapport est construit sur base de cette requête SQL. On y notera la colonne UserDefinedButtonColumnShowSigStock qui utilise la possibilité d'affichage des boutons de zoom.

select stock.s_id,stock.s_cle1,stock.s_modele,sum(lignes_v.q) as tot_q,stock.s_id as UserDefinedButtonColumnShowSigStock
from STOCK
inner join LIGNES_V on stock.s_id=lignes_v.id_article
inner join PIEDS_V on (pieds_v.id=lignes_v.id) and (pieds_v.journal=lignes_v.journal) and (pieds_v.piece=lignes_v.piece)
where (pieds_v.type=3) and (pieds_v.date between @DATE_1 and @DATE_2)
group by stock.s_id,stock.s_cle1,stock.s_modele
order by stock.s_id,stock.s_cle1,stock.s_modele

On ajoute ces règles de colonnes :

  • name = s_cle1 : Width = 100 et HeaderText = Code-barres
  • name = s_modele : Width = 300 et HeaderText = Désignation

Le résultat sera le suivant :

Le bouton permet d'ouvrir la fiche de l'article correspondant.

Les paramètres qui ont été choisis par l'utilisateur (fourchettes, constantes, ...) sont affichés dans le haut de l'écran.

La grille présente un menu contextuel qui permet, comme pour toutes les grilles, d'exporter ou de copier le contenu. Il contient aussi ces trois éléments spécifiques :

  • Rafraîchir : exécuter à nouveau la requête sans nouvelle saisie des paramètres.
  • Exécuter à nouveau : Mercator va présenter les paramètres choisis par l'utilisateur pour cet affichage. Ils pourront être modifiés et le résultat sera présenté dans une nouvelle fenêtre.
  • Exécuter à nouveau - Dans cette fenêtre : Mercator va présenter les paramètres choisis par l'utilisateur pour cet affichage. Ils pourront être modifiés et le résultat sera présenté dans la même fenêtre.

 

Si on utilise une UserDefinedButtonColumnCustom, la méthode doit se trouver dans le customizer du rapport.

 


Ce mode de reporting repose essentiellement sur des possibilités codeless de Mercator. Il est toutefois possible d'effectuer des personnalisations supplémentaires par code. Nous montrons ci-dessous un customizer placé dans le rapport qui :

  • ajoute une ligne de total
  • modifie le contenu du label affichant les paramètres repris dans le haut de l'écran
Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorController;
using MercatorExtensions;
using System.Linq;

namespace MercatorUi.Reporting
{
    public class Customizer : MercatorUi.ICustomizers.IReportingWindowFormLoaded
    {
        public void ReportingWindowFormLoaded(MercatorUi.Forms.Reporting.ReportingWindowForm reportingWindowForm)
        {
            reportingWindowForm.GridPopulated += ReportingWindowForm_GridPopulated;
        }

        private void ReportingWindowForm_GridPopulated(object sender, EventArgs e)
        {
            MercatorUi.Forms.Reporting.ReportingWindowForm reportingWindowForm = (MercatorUi.Forms.Reporting.ReportingWindowForm)sender;
            if (reportingWindowForm.DataRowDocum["id"].ToString() == "HB3JUX4M3E") // id du rapport "Commandes en cours"                 
            {
                DataTable dt = (DataTable)reportingWindowForm.Grid.DataSource;
                DataRow drNew = dt.NewRow();
                Api.DataRowResetContent(drNew);
                drNew["s_modele"] = "TOTAL";
                drNew["tot_q"] = dt.RowsEnumerable().Sum(dr => dr.Value<double>("tot_q"));
                dt.Rows.Add(drNew);

                reportingWindowForm.LabelParameters.Text += Environment.NewLine + "Le total a été calculé via l'évévement GridPopulated !";
            }
        }
    }
}

Vous noterez que, dans ce code, les événements ne sont pas désinscrits (-=). En effet, cela n'est pas nécessaire car le customizer du rapport n'a pas une durée de vie plus longue que celle de la fenêtre.

 

Dans cette fenêtre, ces méthodes publiques sont disponibles et correspondent, respectivement, aux trois éléments du menu contextuel cité ci-dessus :

  • RefreshContent
  • RunAgain
  • RunAgainInThisWindow

 

Voir aussi :



Cookies fonctionnels : Cookies nécessaires à l'utilisation du site et cookies de préférence. Ils ne contiennent aucune donnée à caractère personnel. (En savoir plus)

Cookies statistiques : Captation de statistiques liées aux comportements des internautes. (En savoir plus)

Cookies marketing : Pour effectuer le suivi des visiteurs au travers des sites web, à des fins publicitaires. (En savoir plus)