In Mercator kunnen informatiebestandseigen reeksen worden gebruikt in de verschillende rapportages gedefinieerd via "Tools / Parametrering Documenten". Deze reeksen kunnen in elk van de informatiebestanden worden gebruikt op basis van de ID, de 3 codes en de naam.
Dit zijn de constanten:
- voor de klanten
- @CONST_C_ID_1 en @CONST_C_ID_2
- @CONST_C_CLE1_1 en @CONST_C_CLE1_2
- @CONST_C_CLE2_1 en @CONST_C_CLE2_2
- @CONST_C_CLE3_1 en @CONST_C_CLE3_2
- @CONST_C_NOM_1 en @CONST_C_NOM_2
- voor de artikels
- @CONST_S_ID_1 en @CONST_S_ID_2
- @CONST_S_CLE1_1 en @CONST_S_CLE1_2
- @CONST_S_CLE2_1 en @CONST_S_CLE2_2
- @CONST_S_CLE3_1 en @CONST_S_CLE3_2
- @CONST_S_MODELE_1 en @CONST_S_MODELE_2
enzovoort voor elk informatiebestand in Mercator (GEN, ANA, PROJ, DEST, IMM, TACT, XLEAD, ...).
Mercator detecteert in de SQL-opdracht de aanwezigheid van één of meer van deze variabelen en geeft het (de) respectieve dialoogvenster(s) weer voor de invoer van deze constanten. De invoer ervan wordt gevalideerd op basis van de registraties in het onderliggende informatiebestand. De dropdownmenu's zijn van het type "combo", met andere woorden: men kan ze gebruiken als dropdownmenu, alsook als tekstveld voor klassieke invoer.
Voorbeeld van een opdracht :
select *
from stock
where (s_cle1>=@CONST_S_CLE1_1) and (s_cle1<=@CONST_S_CLE1_2)
order by s_cle1
Dit systeem kan ook aan de parameterkeuze worden gekoppeld, want de vervanging van de strings $PARAM1$ gebeurt voor u de hierboven beschreven vensters oproept.
Bijvoorbeeld :
select *
from stock
where ($PARAM1$>=@CONST_$PARAM1$_1) and ($PARAM1$<=@CONST_$PARAM1$_2)
order by $PARAM1$
Er bestaat ook een mogelijkheid om een rapport op te vragen voor de huidige fiche in de daarbij horende signaletiek.
Bijvoorbeeld :
select *
from stock
where (s_id=@s_id)
In het rapport worden dan alleen de gegevens uit de open artikelfiche getoond.
Als er meerdere artikelfiches geopend zijn (en het rapport wordt opgeroepen via "Beheer > Documenten - Reporting"), dan zal het volgende selectiescherm verschijnen :
Bij uitbreiding is dit principe beschikbaar voor elk veld in alle signaletieken.
Dit kan dan gebruikt worden voor het tonen van de gegevens van alle open databladen die overeenkomen met de waarde van het huidige blad.
Bijvoorbeeld (de rayon van de geopende artikelfiche is "Damesafdeling") :
select *
from stock
where (s_id_rayon=@s_id_rayon)
Het resultaat zal dan alle fiches bevatten met als rayon "Damesafdeling".
Bijzonder geval voor de analytische rekeningen
Omvat het venster voor de selectie van de analytische reeksen nog een bijkomend dropdownmenu waarmee men vooraf een analytisch plan kan selecteren. Het nummer van het gekozen plan wordt automatisch opgeslagen in de globale variabele @GLOBAL_A_PLAN. Hierdoor is het mogelijk om rekening te houden met het gekozen plan in de SQL-opdrachten:
where a_plan=@GLOBAL_A_PLAN
Wanneer men "<TOUS>" kiest, levert @GLOBAL_A_PLAN nul op. Daarmee moet men dus rekening houden bij de opmaak van de SQL-opdracht door de SQL-opdracht bijvoorbeeld als volgt aan te passen (minder krachtige bepaling):
where ((case when @GLOBAL_A_PLAN=0 then 0 else a_plan-@GLOBAL_A_PLAN end)=0)
Wenst u dat er standaard een plan wordt voorgesteld, dan volstaat het om @GLOBAL_A_PLAN in de SQL-opdracht te laten volgen door het nummer van het gewenste plan. Als u bijvoorbeeld wilt dat plan 2 standaard wordt voorgesteld:
where a_plan=@GLOBAL_A_PLAN2
Opmerking: het maakt niet uit waar deze string GLOBAL_A_PLANi staat. Wilt u dat standaard "<TOUS>" geselecteerd wordt, dan moet u GLOBAL_A_PLAN0 gebruiken.
Merk ook op dat dit extra cijfer dat wordt ingevoerd voor de standaardplanselectie, uit de opdracht wordt gehaald vooraleer ze uitgevoerd wordt.
GLOBAL_A_PLAN moet steeds in hoofdletters worden geschreven. (Per opdracht kan slechts één enkele standaardplanwaarde worden gebruikt).