Voorbeelden van alternatieve statussen in grafiekuitdrukkingen

Deze voorbeelden bevatten praktische tips voor het gebruik van alternatieve statussen door QlikView Developers en/of extreme QlikView Power-Users. Deze voorbeelden bevinden zich in het bestand: ‘Alternate States Functionality.qvw’

Selecties tussen statussen synchroniseren

De volgende uitdrukkingen kunnen in een enkele grafiek worden gebruikt:

count({$} DISTINCT [Factuurnummer])

count({State1} DISTINCT [Factuurnummer])

count({State2} DISTINCT [Factuurnummer])

Er is een probleem met deze methode: de QlikView Developer moet de selecties dupliceren (keuzelijsten en meervoudige keuzelijsten) voor alle drie de statussen zodat de eindgebruiker de juiste selecties voor de verschillende statussen kan maken. In veel situaties zal de QlikView Developer een reeks 'gewone' selecties voor alle statussen tot zijn beschikking willen hebben. Zo kan de eindgebruiker de context instellen voor de verschillende grafieken en vervolgens kan hij gebruikmaken van specifieke selecties om zo de verschillen tussen statussen weer te geven. Set-analyse kan worden gebruikt voor statussen om bepaalde selecties tussen statussen consistent te houden.

count({State1<Year = $::Year, Month = $::Month>} DISTINCT [Factuurnummer])

count({State2<Year = $::Year, Month = $::Month>} DISTINCT [Factuurnummer])

De QlikView Developer houdt de selecties Year en Month in State1 en State2 synchroon aan elkaar in de status default. De QlikView Developer kan elementen toevoegen aan de ingestelde modificaties als dit nodig is om nog meer velden consistent te houden tussen statussen.

Set-operatoren

Er kunnen set-operatoren (+, *, -, /) met statussen worden gebruikt. De volgende uitdrukkingen zijn geldig en tellen de afzonderlijke factuurnummers in de status default of in State1.

Voorbeelden:  

count({$ + State1} DISTINCT [Factuurnummer])
telt de afzonderlijke factuurnummers in de verenigde status <default> en State1.

count({1 - State1} DISTINCT [Factuurnummer])
telt de afzonderlijke factuurnummers die niet de status State1 hebben.

count({State1 * State2} DISTINCT [Factuurnummer])
telt de afzonderlijke factuurnummers in de status <default> en State1.

Opmerking: Wees voorzichtig bij een dergelijk gebruik van set-operatoren. In sommige situaties is het resultaat anders dan verwacht. Dit komt omdat de selecties in een bepaalde status een reeks gegevens genereren die mogelijk niet geheel compatibel is met de reeks(en) waarmee deze reeks wordt gecombineerd. Dit geldt vooral als de complexiteit van het gegevensmodel toeneemt.

Impliciete definities voor veldwaarden

Een andere manier om set-operatoren te gebruiken is met de elementfuncties P() en E() Deze functies zijn alleen beschikbaar binnen set-uitdrukkingen.

Voorbeelden:  

count({$<[Factuurnummer] = p({State1} [Factuurnummer])>} DISTINCT [Factuurnummer])
Deze uitdrukking telt de afzonderlijke factuurnummers met de status <default> en baseert zich daarbij op de factuurnummers die mogelijk beschikbaar zijn in State1.

Deze is bijna, maar niet helemaal gelijk aan de volgende uitdrukking:

count({$<[Factuurnummer] = State::[Factuurnummer]>} DISTINCT [Factuurnummer])

Het verschil tussen de uitdrukkingen is dat in de eerste uitdrukking de mogelijke waarden voor factuurnummers van State1 in de status default worden gezet. In de tweede uitdrukking worden de geselecteerde waarden van State1 in de status default gezet. Als de gebruiker geen factuurnummers in State1 heeft geselecteerd, worden er geen waarden van factuurnummers in de status default geplaatst.

Set-operatoren kunnen het best worden gebruikt in set-modificaties De volgende uitdrukking zoekt naar de mogelijk samenvallende factuurnummers van State1 en State2 en wijzigt deze waarden in de factuurnummers in de status default.

Voorbeelden:  

count({$<[Factuurnummer] = p({State1} [Factuurnummer]) * p({State2} [Factuurnummer])>} DISTINCT [Factuurnummer])
De uitdrukking voor het zoeken naar samenvallende factuurnummers in status <default> en State1 is:

count({$<[Factuurnummer] = p({$} [Factuurnummer]) * p({State1} [Factuurnummer])>} DISTINCT [Factuurnummer])

Deze uitdrukking mag verwarrend lijken omdat deze gebruikmaakt van een status (<default> in dit geval) in zowel de elementfunctie als in de set-ID. Houd in gedachte dat de elementfunctie p($) de mogelijke waarden retourneert in de status default. De set-ID of status-ID {$} wordt gewijzigd door het resultaat van de elementfuncties. Eventuele factuurselecties die zich momenteel in de status default bevinden, worden overschreven door de waarden van de samenvallende elementfuncties.

Er dient te worden opgemerkt dat de bovenstaande uitdrukking niet volledig juist is omdat deze er niet in slaagt de gewone selecties tussen de status default en State1 te synchroniseren. Hieronder bevindt zich een uitdrukking die daar wel in slaagt:

Voorbeelden:  

count({$<[Factuurnummer] = p({$} [Factuurnummer]) * p({State1<Year = $::Year, Month = $::Month>} [Factuurnummer])>} DISTINCT [Factuurnummer])

Net als eerder reeds het geval was, kan de QlikView Developer velden toevoegen aan de modificatie om selecties consistent te houden tussen verschillende statussen.