Vanaf Mercator 11.0 is het mogelijk om rapporten in de vorm van een grid weer te geven in een venster van Mercator. Dit biedt het voordeel van meer interactiviteit met de gebruiker. Bijvoorbeeld, in dit grid kunnen knoppen worden geplaatst.
In de configuratie van het rapport hoef je alleen maar het type Venster te selecteren. Vervolgens wordt de eigenschap ColumnRules beschikbaar.

Het is dan mogelijk om een scherm te bouwen dat gebruikmaakt van de codeless mogelijkheden van Mercator. Bijvoorbeeld, een rapport wordt gebouwd op basis van deze SQL-query. Opmerkelijk is de kolom UserDefinedButtonColumnShowSigStock, die de mogelijkheid biedt om zoomknoppen weer te geven.
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
We voegen de volgende kolomregels toe:
- name = s_cle1 : Width = 100 en HeaderText = Barcode
- name = s_modele : Width = 300 en HeaderText = Omschrijving
Het resultaat zal als volgt zijn:

De knop maakt het mogelijk om de fiche van het overeenkomstige artikel te openen.
De parameters die door de gebruiker zijn gekozen (bereiken, constanten, ...) worden bovenaan het scherm weergegeven.
Het grid biedt een contextmenu waarmee, net zoals bij alle grids, de inhoud kan worden geëxporteerd of gekopieerd. Het bevat ook de volgende drie specifieke elementen:
- Vernieuwen: de query opnieuw uitvoeren zonder nieuwe invoer van parameters.
- Opnieuw uitvoeren: Mercator toont de parameters die de gebruiker heeft gekozen voor deze weergave. Ze kunnen worden aangepast en het resultaat wordt weergegeven in een nieuw venster.
- Opnieuw uitvoeren - In dit venster: Mercator toont de parameters die de gebruiker heeft gekozen voor deze weergave. Ze kunnen worden aangepast en het resultaat wordt weergegeven in hetzelfde venster.
Als je een UserDefinedButtonColumnCustom gebruikt, moet de methode zich bevinden in de customizer van het rapport.
Deze rapporteringsmodus maakt voornamelijk gebruik van de codeless mogelijkheden van Mercator. Het is echter mogelijk om aanvullende personalisaties door te voeren met code. Hieronder tonen we een customizer in het rapport die:
- een totalenrij toevoegt
- de inhoud wijzigt van het label dat de parameters bovenaan het scherm weergeeft
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 van het rapport "Lopende bestellingen"
{
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 + "Het totaal is berekend via de gebeurtenis GridPopulated!";
}
}
}
}
Merk op dat in deze code de gebeurtenissen niet worden uitgeschreven (-=). Dit is niet nodig omdat de levensduur van de customizer van het rapport niet langer is dan die van het venster.
In dit venster zijn de volgende publieke methoden beschikbaar, die respectievelijke overeenkomen met de drie elementen van het bovengenoemde contextmenu:
- RefreshContent
- RunAgain
- RunAgainInThisWindow
Zie ook: