U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

Reporting: hoe gegevens uit een klantenfiche te halen op basis van een rapport dat gebaseerd is op de artikels

0000002394     -      02-12-2016

Dit voorbeeld toont hoe, vertrekkend uit een basisrapport van de artikels, u informatie ophaalt uit de huidige klantenfiche.

Concreet zou de gebruiker graag een overzicht van de artikels met betrekking tot de huidige klantenfiche willen. Het is ook noodzakelijk om rekening te houden van de filter die geplaatst is op de artikels.

De “Module” property van het rapport wordt geïnitialiseerd naar “artikels”. De SQL-query ziet er als volgt uit:

    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%'

De code hieronder haalt de ID op van de huidige klantenfiche. Het voorbeeld voorziet dat Mercator meerdere klantenfiches zal openen. In ons voorbeeld behandeld hij (willekeurig) de eerst gevonden fiche.

Deze code moet in de “Customizer” property geïmplementeerd worden van het rapport (volgens hetzelfde principe als dit voorbeeld).

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using MercatorApi;
using MercatorController;

namespace MercatorUi.Reporting
{
    public class Customizer : MercatorUi.ICustomizers.IStringUpdater
    {
        public string StringUpdate(string reqSql)
        {
            string c_id = "??????????";
            foreach (Form f in Application.OpenForms)
            {
                if (f is MercatorUi.Forms.Sig.SigForm)
                {
                    MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)f;
                    if (sigForm.Sig.Module == MercatorUi.Sig._SigEnum.CLI)
                    {
                        c_id = sigForm.DataSourceRow["c_id"].ToString();
                        break;
                    }
                }
            }
            return reqSql.Replace("%C_ID%", Api.UnquoteSql(c_id));
        }
    }
}