Gebruik van de expressies in de signaletieken

0000001953     -      27-10-2017

De expressies kunnen vrijelijk in de signaletieken van Mercator worden toegevoegd. Dit gebeurt met deze knop:ParamSigExpr.
Elke expressie refereert aan een in C# geschreven code die altijd een type String als resultaat oplevert.

Voorbeelden van codes

  • Aanmaakdatum van de klantenfiche

    return System.Convert.ToDateTime(currentExpression.Form.DataSource.Rows[0]["C_CREATION"]).ToString("dd/MM/yyyy");

  • Naam van de laatste gebruiker die de klantenfiche gewijzigd heeft

    return xFunctions.xUser(currentExpression.Form.DataSource.Rows[0]["C_ID_USER2"].ToString());

  • Voorbeeld met xLookUp

    string d_cat1 = currentExpression.Form.DataSource.Rows[0]["D_CAT1"].ToString();
    if (d_cat1 == "")
        return "";
    else
        return xFunctions.xLookUp("cli", "c_cle2", d_cat1, "c_email").ToString();

Indien de evaluatie van de expressie een fout oplevert (bijvoorbeeld: gebruik van een onbestaand veld), dan geeft zij volgende inhoud weer: "!!! Error !!! (click here)" en volstaat het om in de expressie te klikken om het gedetailleerde foutbericht te bekomen.

Caption
De eigenschap "Caption" van de expressies is bestemd voor het ontvangen van een informatie die weergegeven wordt in de expressie wanneer de signaletiek in de modus "parameterinstelling" is. Het gaat dus over een geheel vrije informatie, die niet door Mercator wordt gebruikt en die eenvoudigweg toelaat om in de modus "parameterinstelling" elke expressie snel te identificeren

Evaluatie van de expressies
Alle expressies van een signaletiek worden geëvalueerd bij de het uitlezen van een signaletiekfiche.

Het is nochtans mogelijk om een herberekening van een expressie uit te lokken vertrekkend van een of meerdere andere objecten van de fiche (hier zonder van fiche te veranderen). Hiervoor moet men de expressie met dit object (of deze objecten) verbinden door middel van zijn eigenschap "RefreshedBy". Deze laatste kan een of meerdere ID bevatten (in een lijst op te nemen, één element per lijn) corresponderend met deze objecten die de re-evaluatie van de expressie moeten uitlokken.
Ter herinnering: de ID van een object is beschikbaar in zijn eigenschappenvenster en kan gemakkelijk worden gekopieerd.

Prestaties
Elke expressie resulteert in een assembly die gecompileerd wordt tijdens zijn aanmaak in de modus "parameterinstelling" en opgeslagen wordt in de SQL-database (tabel Assemblies). De Dotnet-mechanismen zijn dusdanig dat de eerste oplading van een assembly enigszins penaliserend kan werken wat tijd en dus performanties betreft. Derhalve kan de aanwezigheid van een groot aantal expressies in een en dezelfde signaletiek wegen op de tijd die nodig is voor de eerste weergave van deze signaletiek. In dit geval geniet het de voorkeur een customizer te gebruiken. Deze customizer kan inderdaad, vertrekkend van één enkele assembly, een onbeperkt aantal objecten beheren.