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

Rapportering : rapport bestaande uit de uitvoering van een C-sharp-module

0000001950     -      13-05-2016

Het is mogelijk om een C#-code op te geven in plaats van de SQL-opdracht in de parameterinstelling voor documenten. Om ervoor te zorgen dat Mercator dat opmerkt, moet de in de editor ingevoerde code beginnen met het woord "using". Wanneer u een C#-module wilt starten, volstaat het rechts te klikken in de code-editor en de optie "Min. C#-broncode" te kiezen. Via de knop "Uitvoeren" wordt de in de editor ingevoerde C#-code dan uitgevoerd.

Wanneer de gebruiker dit document oproept, zal Mercator enkel deze module oproepen. Het zal geen gegevens selecteren, noch enig rapport genereren. Deze verrichtingen moeten dus worden verzekerd door de C#-module.

Voorbeeld van een C#-code

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

namespace MercatorUi.Reporting
{
    public static class Script
    {

        public static void Exec()
        {
            // Data selectie
            DateTime[] Dates = MercatorUi.Dialogs.AskDates("Veuillez s?lectionner les dates ?");
            if ((Dates != null) && (Dates[1] != new DateTime(1900, 1, 1)))
            {
                // Gegevens selectie
                string ReqSql = "select id_cli, cli.c_nom, c_adresse, c_codep, c_ville, " +
                    "        sum(tot_bas_fb) as tot_ca, count(pieds_v.id) as nombre, " +
                    "        cast(@Date_1 as DateTime) as Date_1, Cast(@Date_2 as DateTime) as Date_2 " +
                    "    from pieds_v inner join cli on pieds_v.ID_CLI = cli.C_ID " +
                    "    where (date >= @Date_1) and(date <= @Date_2) " +
                    "      and(type = 1) " +
                    "    group by id_cli, cli.c_nom, c_adresse, c_codep, c_ville, c_id " +
                    "    order by cli.c_nom ";
                DataSet ds = Api.Zselect(Api.RepData, ReqSql,
                    new MercatorSqlParam("@Date_1", Dates[0], SqlDbType.DateTime),
                    new MercatorSqlParam("@Date_2", Dates[1], SqlDbType.DateTime));
                //string reportFileName = Globals.MainDir + "RapportTest.repx";
                string reportFileName = @"<MainDir\RapportTest.repx";  // database
                MercatorUi.Reporting.ReportingStatic.FillDataset(ds, "CliRep");

                if (Api.Answer("Modifier le layout ?"))
                {
                    // Crëatie / Wijziging van het rapport
                    string reportLayout = MercatorUi.Reporting.ReportingStatic.Reporting.EditLayout(Api.JustStem(reportFileName), Api.FileToStr(reportFileName, Encoding.UTF8), ds);
                    Api.StrToFile(reportLayout, reportFileName, Encoding.UTF8);
                }

                // Rapport preview
                List<MercatorUi.Reporting.OutputDescriptor> listOutputDescriptors = new List<MercatorUi.Reporting.OutputDescriptor>();
                listOutputDescriptors.Add(new MercatorUi.Reporting.OutputDescriptorPreview());
                MercatorUi.Reporting.ReportingStatic.Reporting.RunReport("CliRep", reportFileName, ds, listOutputDescriptors);

            }
        }
    }
}

Merk op dat in dit geval de customizer die bij het rapport hoort, geen bestaansreden meer heeft en niet langer kan worden gebruikt.