Probleem: Hoe zet je in Cognos 8.4 verschillende kolommen onder elkaar
ERP databases hebben vaak klanttabellen waarin de adresregels verdeeld zijn over meerdere kolommen. Dit zien we bijvoorbeeld in de GOSALES database, die als instructiedatabase meegeleverd wordt met Cognos 8.4. De tabel RETAILER_SITE bevat de kolommen RTL_Address1 en RTL_Address2.
Ik zie regelmatig klanttabellen waarin wel zes kolommen zijn gereserveerd voor de adresinformatie. Dat is veel en het is wel duidelijk dat in een dergelijke situatie een aantal kolommen vaak leeg zal blijven. Afhankelijk van het tabelontwerp zal zo’n lege kolom ofwel een NULL waarde bevatten ofwel een spatie.
Ook wanneer je op zo’n tabel gaat rapporteren wil je dat het er netjes uitziet en dan zet je graag de adresgegevens op verschillende regels onder elkaar, in één kolom. Vang je dan ook nog de NULL waarden en/of spaties weg, dan zie je ook de lege regels niet meer en dat ziet er helemaal goed uit.
Impromptu
In Cognos Impromptu 7 is dit relatief eenvoudig te bereiken.
Zet de eerste adresregel op het rapport en rechtsklik op de kolom waarin je deze regel hebt opgenomen. Selecteer vervolgens Data definition (Excuses voor het Engels, in Impromptu 7 werk ik alleen maar Engelstalig).
Voer daar als definitie in: adresregel1 +if(adresregel2 is not missing and adresregel2 <>’ ‘) then (char(13)+ adresregel2) else (‘ ‘)+ if(adresregel3 is not missing and adresregel3<>’ ‘) then (char(13)+ adresregel3) else (‘ ‘) en zo verder voor elke adresregel die je wilt toevoegen. Zie de afbeelding hieronder:
Druk nu op OK. Je ziet dat de regels nog niet onder elkaar staan. Om dat te bereiken moet je nog eens rechtsklikken in dezelfde kolom. Selecteer ditmaal in het popup menu ‘Properties’ en vervolgens ‘Layout’. Vink de radiobutton aan bij ‘Multiline with word wrap’. Als je nu op OK drukt, dan zie je het gewenste resultaat.
Cognos 8.4
Je kun dit in Cognos 8.4 ook bereiken, maar daar is het iets ingewikkelder. Selecteer uit de werkset van de invoegbare objecten een queryberekening en sleep die het rapport op. Geef als naam ‘Adresregels’ op en voer dezelfde expressie in als hierboven:
adresregel1 +if(adresregel2 is not missing and adresregel2 <>’ ‘) then (char(13)+ adresregel2) else (‘ ‘)+ if(adresregel3 is not missing and adresregel3<>’ ‘) then (char(13)+ adresregel3) else (‘ ‘) etc.
Draai je nu het rapport dan zul je wederom zien dat de regels nog niet onder elkaar staan. En probeer je dat nu te bereiken op de manier waarop dat in Impromtu gaat, dan kun je heel lang zoeken, maar een ‘Multiline with word wrap’ is nergens te vinden.
De truc die je moet toepassen is de volgende:
Sleep van de werkset invoegbare objecten een ‘Vermelding in tekst met opmaak’ (‘Rich text item’ in het Engels) op het rapport. Zoek bij de eigenschappen van dit object onder HTML-bron naar het brontype. Selecteer hier ‘Rapportexpressie’. In de regel daaronder kun je via de ellipsbutton de rapportexpressie invullen. Kies hier van het tabblad query’s de kolom ‘Adresregels’ die je eerder hebt gevuld.
Voer nu het rapport uit, en je ziet dat de regels nu wel netjes onder elkaar staan.
De queryberekening Adresregels wil je nu niet meer op het rapport zien. Je moet hem verbergen. Dit doe je als volgt: Selecteer de kolom Adresregels. Selecteer onder Eigenschappen – kolomlijst onder het kopje Conditioneel: ‘Variabele weergeven’. Dubbelklik hierop en maak een nieuwe variabele aan van het type Booleaans. Noem hem Verberg en laat Weergeven voor Ja aangevinkt staan.. Geef als expressiedefinite op: 1 = 0. De kolom zal niet getoond worden op het rapport.
Een probleem dat vergelijkbaar is met bovenstaande kom je tegen als je in een eenvoudig tekstitem verschillende regels onder elkaar wilt zetten. Dit gaat ook niet zonder meer goed: als je in het invoerscherm ‘Regel 1’ invoert en dan een <Enter> geeft omdat je op de volgende regel ‘Regel 2’ wilt invoeren, dan wordt de dialoog afgesloten en heb je slechts ‘Regel 1’ als inhoud van je tekstitem.
Ga daarom als volgt te werk: Plaats het tekstitem op je rapport en ga naar de eigenschappen van het tekstitem. Wijzig het brontype in ‘Rapportexpressie’ en als rapportexpressie vul je dan de gewenste regels in, elk afgesloten met een <Enter>. De expressie als geheel moet wel omsloten worden door enkele of dubbele aanhalingstekens. Je krijgt dan bijvoorbeeld het volgende:
“Een
Twee
Drie”
Voer je dit rapport uit, dan staan ook hier de regels netjes onder elkaar.

