Reporting : comment récupérer une donnée d'une fiche client en cours à partir d'un rapport basé sur les articles

0000002394     -      26/07/2025

Cet exemple montre comment, à partir d'un rapport basé sur les articles, récupérer une information provenant de la fiche client en cours.

Concrètement, l'utilisateur voudrait avoir la liste des articles liés à la fiche client en cours de consultation. Il faut pouvoir également tenir compte du filtre placé sur les articles.

La propriété "Module" du rapport sera donc initialisée à "Articles". La requête SQL pourrait ressembler à ceci :

select cli.C_NOM, s_modele, s_cle1, s_cle2, s_prix_ht
        from STOCK
            inner join tarcli on stock.s_id = tarcli.ar_ref
            inner join CLI on tarcli.ID_CLI = cli.C_ID
        where FILTRE_STOCK and cli.C_ID = '%C_ID%'

Le code ci-dessous permet de récupérer l'identifiant de la fiche client en cours. L'exemple prévoit le fait que Mercator permet d'ouvrir plusieurs fiches clients. Dans notre exemple, il traite (de manière arbitraire) la première fichier trouvée.

Ce code doit être implémenté dans la propriété "Customizer" du rapport (selon le même que principe que cet exemple).

Zoom
using System.Windows.Forms;
using MercatorApi;
using System.Linq;

namespace MercatorUi.Reporting
{
    public class Customizer : ICustomizers.IStringUpdater
    {
        public string StringUpdate(string reqSql)
        {
            string c_id;
            Forms.Sig.SigForm sigForm = Application.OpenForms.OfType<Forms.Sig.SigForm>().FirstOrDefault(f => f.Sig.Module == Sig._SigEnum.CLI);
            if (sigForm != null)
                c_id = sigForm.DataSourceRow["c_id"].ToString();
            else
                c_id = "??????????";

            return reqSql.Replace("%C_ID%", Api.UnquoteSql(c_id));
        }
    }
}


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)