Verschillen
Dit geeft de verschillen weer tussen de geselecteerde revisie en de huidige revisie van de pagina.
Beide kanten vorige revisie Vorige revisie | |||
openwave:1.31:applicatiebeheer:instellen_inrichten:queries [2024/11/26 06:07] – ↷ Pagina verplaatst van openwave:1.31:applicatiebeheer:instellen_inrichten:queries naar openwave:1.32:applicatiebeheer:instellen_inrichten:queries Kars Gottschal | openwave:1.31:applicatiebeheer:instellen_inrichten:queries [Ongeldige datum] (huidige) – Externe bewerking (Ongeldige datum) 127.0.0.1 | ||
---|---|---|---|
Regel 1: | Regel 1: | ||
+ | ====== Queries ====== | ||
+ | {{tag> | ||
+ | Portaal // | ||
+ | Screenidentifiers: | ||
+ | * MDLC_getQueriesList.xml | ||
+ | * MDDC_getQueryDetail.xml | ||
+ | |||
+ | De SQL-statements van deze tabel worden gebruikt: | ||
+ | * om opschriften of staaf- of taartdiagrammen te genereren voor tegels | ||
+ | * om bepaalde scherminformatie in detailschermen per blok (on)zichtbaar te maken | ||
+ | * om inhoud van schermattributen in detailschermen zoals labels of actions, context-afhankelijk te maken | ||
+ | * om blokken tekst in te voegen in een document gemaakt vanuit een sjabloon. | ||
+ | * om resultsets te genereren ten behoeve van merge bij documentsjablonen | ||
+ | |||
+ | Voor querybeheer moet de inlogger beheerrechten hebben: tbmedewerker.dnbeheerniveau = 99 (of hoger). | ||
+ | Alle kolommen en knoppen zijn dan toegankelijk. | ||
+ | |||
+ | Een aantal query' | ||
+ | De waarde van het systeem-aanvinkvakje kan niet worden gewijzigd met OpenWave. Aangevinkt betekent dat bij database-updates van OpenWave de bijbehorende query gewijzigd kan worden. Door gebruikers aangemaakte query' | ||
+ | |||
+ | Aan de query worden de volgende eisen gesteld: | ||
+ | * EN de query moet met ' | ||
+ | * EN er mag GEEN puntkomma (';' | ||
+ | |||
+ | <adm example> | ||
+ | Een voorbeeld van een query is: | ||
+ | <code sql> | ||
+ | select | ||
+ | ' | ||
+ | from vwfrmomgorkestrator_adv | ||
+ | where trim(dvadviesbehandelaar) = trim(: | ||
+ | </ | ||
+ | |||
+ | Deze query geeft het aantal openstaande adviezen, waarvoor de inlogger de behandelaar is. | ||
+ | </ | ||
+ | |||
+ | Bij query' | ||
+ | * :keyaccount zal worden vervangen door tbmedewerkers.dvcode van de inlogger | ||
+ | * {id} wordt: | ||
+ | * vervangen met de dnkey van tbomgvergunning of tbhandhavingen of tbmilinrichtingen of tbovvergunningen of tbmilvergunningen wanneer de query gebruikt wordt op een zaak- of inrichtingsportaal als tegelopschrift | ||
+ | * vervangen met de dnkey van de kaart die hoort bij de basistabel van het detailscherm van waaruit de query wordt aangeroepen als onderdeel van schermattributen | ||
+ | * vervangen met de dnkey van de kaart van de tabel waaruit een document wordt gecreëerd. | ||
+ | |||
+ | |||
+ | OpenWave heeft zelf een aantal functies op de database gedefinieerd - zoals fn_ddmaandjjjj() - die gebruikt kunnen worden in allerlei queries. Zie: [[openwave: | ||
+ | |||
+ | De query heeft in de kolom dvcode een unieke, maar editbare, identifier, waarmee de query kan worden aangeroepen. | ||
+ | |||
+ | Tot slot KAN het evalueren van een query aan rechten worden gekoppeld. | ||
+ | Dat wordt per query geregeld met de velden // | ||
+ | |||
+ | De kijkrechten op de modules: | ||
+ | * Omgevingszaken: | ||
+ | * Handhavingen: | ||
+ | * APV/ | ||
+ | * Objecten/ | ||
+ | * Milieu/ | ||
+ | |||
+ | ====Common table expressie WITH gebruik in queries==== | ||
+ | WITH mag gebruikt worden in queries waarbij het volgende geldt: | ||
+ | * de query moet beginnen met WITH | ||
+ | * in de gehele query mag NIET de substring //update// of //insert// of //delete// of //merge// voorkomen. | ||
+ | * haakjes (of) mogen alleen voor de syntax gebruikt worden: dus niet //select d1logic val**)**1// en ook niet: //where lower(dvsectie) = ' | ||
+ | * na het sluithaakje van de with expressie begint de query met //select// | ||
+ | * er mag GEEN puntkomma (';' | ||
+ | |||
+ | <adm example> | ||
+ | with const as (select d1logic val1 | ||
+ | from tbinitialisatie where lower(dvsectie) = ' | ||
+ | select case | ||
+ | when (SELECT val1 FROM const) = ' | ||
+ | then to_char(coalesce(ddadvadvies, | ||
+ | else to_char(coalesce(ddadvdatering, | ||
+ | | ||
+ | from vwfrmadviezen | ||
+ | where dnkeyomgvergunningen = {id} | ||
+ | and case | ||
+ | when (SELECT val1 FROM const) = ' | ||
+ | then ((ddadvadvies is not null) or (ddvervallen is not null)) | ||
+ | else ((ddadvdatering is not null) or (ddvervallen is not null)) | ||
+ | end | ||
+ | order by 1 LIMIT 4 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Queries voor tegelopschrift ===== | ||
+ | Het resultaat van een query (dus de evaluatie van het select-statement) mag in dit geval maar uit één kolom bestaan.\\ | ||
+ | De aanroep van het SQL-statement vindt plaats via de tegeldefinitie van de tegel waarop het dynamische opschrift moet verschijnen door het vullen van de kolom // | ||
+ | Een voorbeeld van een dynamisch tegelopschrift is de waarde // | ||
+ | |||
+ | Die parameter {id} kan gebruikt worden bij tegels op de zaakportals (dus niet bij opening of beheer). Deze wordt vervangen door de primary key van het betreffende zaakportaal (de identifier die opgenomen is in de URL van de portaalpagina). | ||
+ | Indien de resultaat set uit meerdere regels bestaat, zal OpenWave deze aan elkaar plakken gescheiden door een puntkomma, zodat elke regel ook een regel op de tegel wordt. | ||
+ | |||
+ | Met HTML-code kan die éne resultaatkolom van een query toch in twee regels op een tegel getoond worden door op de gewenste plek bijvoorbeeld <br> in te voegen. Bovendien kunt u ook andere HTML-code gebruiken bijvoorbeeld kleur: | ||
+ | |||
+ | <code sql> | ||
+ | | ||
+ | '<p style=" | ||
+ | | | '< | ||
+ | | | '< | ||
+ | | | to_char(ddfataledatum,' | ||
+ | | | case when ddingetrokken is not null | ||
+ | then '< | ||
+ | | ||
+ | '< | ||
+ | end | ||
+ | from vwfrmomgvergunningen | ||
+ | where dnkeyomgvergunning = {id} | ||
+ | </ | ||
+ | |||
+ | Het resultaat als tegelopschrift is bijvoorbeeld: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Wanneer een query niet valide SQL-code gebruikt zal het programma - bij gebruik voor tegelopschrift - het resultaat vervangen door ' | ||
+ | |||
+ | <adm example Voorbeeld belang snelheid> | ||
+ | Dynamische tegelkopschriften kunnen het uitschrijven van een portaal behoorlijk vertragen.\\ | ||
+ | |||
+ | De volgende query zal traag zijn | ||
+ | <code sql> | ||
+ | SELECT | ||
+ | ' | ||
+ | where (trim(dvibbcodemw) = trim(: | ||
+ | or trim(dvcodeaccountman) = trim(: | ||
+ | </ | ||
+ | maar onderstaande query geeft eenzelfde soort resultaat, maar dan in een fractie van de tijd | ||
+ | <code sql> | ||
+ | SELECT | ||
+ | CASE | ||
+ | WHEN count(*) < 5 THEN ' | ||
+ | ELSE ' | ||
+ | END opschrift | ||
+ | FROM (select a.dnkey from tbomgvergunning a | ||
+ | inner join tbinbehandelingbij b | ||
+ | on (a.dnkey = b.dnkeyomgvergunningen and b.dlactief = ' | ||
+ | where (trim(b.dvcodemedewerker) = trim(: | ||
+ | and a.ddbesluitdatum is null | ||
+ | and a.ddblokkering is null | ||
+ | and a.ddingetrokken is null | ||
+ | limit 5) as c | ||
+ | </ | ||
+ | |||
+ | In het beheerportaal bij de definitie van de portalen (portalnames) staat (sinds versie 1.30.1) onderaan het detailschem van een portaaldefinitie een knop waarmee de duur van het uitvoeren van de dynamische tegelopschriften voor dat portaal kan worden gemeten. | ||
+ | </ | ||
+ | |||
+ | ===== Queries voor tonen van een diagram als tegelopschrift ===== | ||
+ | Het gaat hierom dat de query een JSON-string genereert die OpenWave via de charts.js library rendert naar een staaf-, lijn- of taartdiagram.\\ | ||
+ | Zie hiervoor [[openwave: | ||
+ | |||
+ | ===== Query' | ||
+ | |||
+ | <code xml> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <column value=" | ||
+ | </ | ||
+ | |||
+ | Zie [[openwave: | ||
+ | In de tags van een blok van een detailscherm kan (hoeft dus niet) de tag < | ||
+ | |||
+ | De bijbehorende query wordt geëvalueerd. De uitkomst van de query moet 1 (het blok is NIET zichtbaar) of 0 (WEL zichtbaar) zijn. | ||
+ | Voorbeeld: | ||
+ | |||
+ | <code sql> | ||
+ | select case when (dlmappenhyperlink = ' | ||
+ | where dnkey = (select dnkeyrechten from tbmedewerkers where trim(dvcode) = trim(: | ||
+ | </ | ||
+ | |||
+ | Indien wordt verwezen naar een niet bestaande query of het element is leeg of indien error bij evaluatie of uitkomst is <> 1 dan beschouwt het programma de uitkomst van de query als 0 (het blok is wel zichtbaar). | ||
+ | |||
+ | Indien in de aangeroepen query gebruik wordt gemaakt van de variabele {id} dan moet een tweede parameter worden toegevoegd aan de functie query() bestaande uit de string %keypointer%. Zie voorbeeld hieronder bij Query' | ||
+ | |||
+ | |||
+ | ===== Query' | ||
+ | |||
+ | Vooralsnog wordt een queryaanroep ondersteunt bij de tags label, edit, backcolor, fontcolor, visible en action en filter. | ||
+ | |||
+ | |||
+ | ==== Label ==== | ||
+ | |||
+ | Een query kan worden gebruikt om de inhoud van de tag label contextgevoelig te maken. | ||
+ | |||
+ | Voorbeeld: wanneer in de schermkolomdefinitie van een detailscherm staat //< | ||
+ | |||
+ | Indien de contextgevoeligheid is gebaseerd op andere informatie uit de kaart die getoond wordt (de query zal dan bestaan uit select x from y where dnkey = {id}) dan moet een tweede parameter %keypointer% meegegeven worden: | ||
+ | |||
+ | Zie de voorbeelden hieronder bij [[openwave: | ||
+ | |||
+ | ==== Visible ==== | ||
+ | |||
+ | Een query kan worden gebruikt om een kolom contextgevoelig in het scherm op te nemen. In de schermkolomdefinitie (zowel voor kolommen van een lijst- als die voor het detailscherm) kan tag < | ||
+ | |||
+ | Een query kan worden gebruikt om de inhoud van de tag contextgevoelig de waarde true of false te geven. Voorbeeld: wanneer in de schermkolomdefinitie van een detailscherm staat < | ||
+ | |||
+ | De query zal dan bestaan uit zoiets als select case when x then ' | ||
+ | Indien de query niet valide is, dan wordt de tag gevuld met ' | ||
+ | |||
+ | Er bestaat een systeemquery met dvcode = // | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | De query kijkt voor de betreffende inlogger naar de waarde van de kolom tbomgrechten.dlbomgbevgezedt. | ||
+ | |||
+ | |||
+ | ==== Edit ==== | ||
+ | |||
+ | Een query kan worden gebruikt om de tag //edit// contextgevoelig de waarde true of false te geven. | ||
+ | |||
+ | Voorbeeld: wanneer in de schermkolomdefinitie van een detailscherm staat //< | ||
+ | |||
+ | De query zal dan bestaan uit zoiets als //select case when x then ' | ||
+ | Indien de query niet valide is, dan wordt het attribuut //edit// gevuld met ' | ||
+ | |||
+ | Er bestaat een systeemquery met dvcode = // | ||
+ | |||
+ | ==== Backcolor / Fontcolor ==== | ||
+ | |||
+ | Een query kan worden gebruikt om de tags backcolor en fontcolor contextgevoelig de waarde true of false te geven. | ||
+ | Het resultaat van de query moet gevuld zijn met standaard html colorname (https:// | ||
+ | |||
+ | ==== Action ==== | ||
+ | |||
+ | Een action kan in een schermkolomdefinitie worden gekoppeld aan een schermknop. Bijvoorbeeld een knop achter de kolom OLO-nummer in de omgevingsdetailkaart waarmee het OLO-loket met de juiste aanvraag wordt geopend afhankelijk van het OLO-nummer op de kaart: Of een knop die een PDOK-kaart opent op basis van de coördinaten van het bijbehorende locatie adres. | ||
+ | Die action is dus contextgevoelig. | ||
+ | |||
+ | === Voorbeeld 1: ga naar OLO-loket op juiste aanvraagnummer === | ||
+ | De URL daartoe is: '' | ||
+ | |||
+ | Waarbij op de plaats van de vraagtekens een valide OLO-aanvraagnummer moet worden gevuld. | ||
+ | Dat lossen we op door: | ||
+ | * een knop te definiëren op het detailscherm van de omgevingszaak met een action waarin bovengenoemde URL wordt gedefinieerd | ||
+ | * in de URL een queryverwijzing te maken teneinde het juiste OLO-aanvraagnummer op te halen | ||
+ | * een query te maken die het gevraagde OLO-nummer retourneert. | ||
+ | |||
+ | De knop kan als volgt worden gedefinieerd: | ||
+ | |||
+ | <code xml> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Een action die begint met de functie // | ||
+ | |||
+ | <code sql> | ||
+ | select dvlvoaanvraagnr from tbomgvergunning where dnkey = {id} | ||
+ | </ | ||
+ | |||
+ | Aangezien in de query de variabele {id} is opgenomen die vervangen moet worden door de dnkey van de betreffende omgevingszaak, | ||
+ | |||
+ | Stel het OLO-nummer is ' | ||
+ | |||
+ | === Voorbeeld 2: ga naar ruimtelijke plannen op grond van adresgegevens === | ||
+ | De URL daartoe is: '' | ||
+ | Waarbij op de plaats van de xxxx de tekst ' | ||
+ | |||
+ | Dat lossen we op door: | ||
+ | * een knop te definiëren op het detailscherm van het locatie adres met een action waarin bovengenoemde URL wordt gedefinieerd | ||
+ | * in de URL een queryverwijzing te maken teneinde de tekst ' | ||
+ | * in de URL een queryverwijzing te maken teneinde de tekst ' | ||
+ | * een query te maken die de gevraagde postcode informatie retourneert | ||
+ | * een query te maken die het gevraagde huisnummerinformatie retourneert. | ||
+ | |||
+ | De knop kan als volgt worden gedefinieerd: | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | In de URL is het postcodegedeelte opgenomen door een verwijzing naar een query met dvcode = locatie_postcode. Die query ziet er als volgt uit: | ||
+ | |||
+ | <code sql> | ||
+ | select ' | ||
+ | </ | ||
+ | |||
+ | Aangezien in de query de variabele {id} is opgenomen die vervangen moet worden door de dnkey van de betreffende locatie (tbperceeladressen), | ||
+ | |||
+ | In de URL is het huisnummergedeelte opgenomen door een verwijzing naar een query met dvcode = locatie_huisnr. Die query ziet er als volgt uit: | ||
+ | |||
+ | <code sql> | ||
+ | select ' | ||
+ | </ | ||
+ | |||
+ | Aangezien in de query de variabele {id} is opgenomen die vervangen moet worden door de dnkey van de betreffende locatie (tbperceeladressen), | ||
+ | |||
+ | Stel de postcode van de locatiekaart waarvandaan de knop wordt aangesproken = 1074XK en het huisnummer = 41, dan zal een URL geopend worden met: | ||
+ | |||
+ | < | ||
+ | |||
+ | === Voorbeeld 3 Open een PDOK-kaart op basis van een coördinatenpaar === | ||
+ | |||
+ | De URL van bijvoorbeeld het x, y punt (168875, | ||
+ | < | ||
+ | |||
+ | De action: | ||
+ | |||
+ | <code html> | ||
+ | |||
+ | De query // | ||
+ | |||
+ | ==== Filter ==== | ||
+ | |||
+ | Een query kan worden gebruikt om de inhoud van de tag filter contextgevoelig te maken. | ||
+ | |||
+ | Voorbeeld: wanneer bij een processtap een extra invoerkolom is gedefinieerd van type dropdown, dan wordt de bijbehorende query voor het dropdownlijstje in het beheer bij de definitie van de procestap gedefinieerd. Deze wordt bij het binnenhalen van een proces vervolgens gekopieerd naar de tabel tbtermijnbewstappen om de kolom dvinvoerdropd aldaar met een dropdowwnlijstje te kunnen vullen. Om nu - dynamisch - het juiste dropdownlijstje te krijgen is de kolom dvinvoerdropd in de schermkolomdefinitie van het detailscherm van een processtap als volgt gedefinieerd (inclusief contextgevoelige zichtbaarheid en label): | ||
+ | |||
+ | <code xml> | ||
+ | <column value=" | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== Nullable ==== | ||
+ | |||
+ | Een query kan worden gebruikt om de inhoud van de tag nullable contextgevoelig te maken. | ||
+ | |||
+ | ===== Query' | ||
+ | |||
+ | Zie ook kopje **Invoegen tekstblokken op basis van een query-aanroep naar tbqueries** bij [[openwave: | ||
+ | De query wordt in het documentsjabloon wordt aangeroepen door met de merge-codering//< | ||
+ | |||
+ | Bijvoorbeeld: | ||
+ | |||
+ | <adm warning> | ||
+ | De hier gebruikte merge-codering zal niet door de spellingschecker heenkomen, voor een goede werking zal het sjabloon daarom opgeslagen moeten zijn zonder spellingschecker! | ||
+ | </ | ||
+ | |||
+ | Param1 wordt opgezocht in de kolom dvcode van tbqueries. Die query wordt geëvalueerd waarbij de string {id} in de query - indien aanwezig - eerst wordt vervangen door de waarde van param2. Param2 is dus optioneel. | ||
+ | |||
+ | Param2 zal meestal gevuld worden met de dnkey van de kaart van waaruit het document wordt gecreëerd. In het sjabloon wordt dit opgegeven door param2 één van de volgende waardes te geven (er zijn geen andere mogelijkheden voor param2): | ||
+ | * : | ||
+ | * : | ||
+ | * : | ||
+ | * : | ||
+ | * : | ||
+ | * : | ||
+ | * : | ||
+ | * : | ||
+ | |||
+ | ==== Voorbeeld 1: invoegen tekst uit query zelf ==== | ||
+ | <adm example Invoegen tekst uit query> | ||
+ | De verwijzing in het sjabloon kan zijn: //< | ||
+ | |||
+ | De query uit tbqueries waarnaar wordt verwezen via apvoverig_tkstblk1 kan zijn: | ||
+ | |||
+ | <code sql> | ||
+ | select case when (select dvcodesoortovverg from tbovvergunningen where dnkey = {id}) = ' | ||
+ | then ' | ||
+ | else '':: | ||
+ | end | ||
+ | </ | ||
+ | </ | ||
+ | Hetgeen betekent dat indien het zaaktype van de APV/Overige vergunning waar vandaan het document wordt gecreëerd van het soort ' | ||
+ | |||
+ | ==== Voorbeeld 2: invoegen tekst uit de tabel tekstblokken via de query ==== | ||
+ | <adm example Invoegen tekst uit tekstblokken> | ||
+ | <code sql> | ||
+ | select dvtekstblok from tbtekstblokken where lower(dvcode) = | ||
+ | case when (select dvcodesoortovverg from tbovvergunningen where dnkey = {id}) = ' | ||
+ | then ' | ||
+ | when (select dvcodesoortovverg from tbovvergunningen where dnkey = {id}) = ' | ||
+ | | ||
+ | else ' | ||
+ | end | ||
+ | </ | ||
+ | </ | ||
+ | Hetgeen betekent dat indien het zaaktype van de APV/Overige vergunning waar vandaan het document wordt gecreëerd van het soort ' | ||
+ | |||
+ | Indien soort = ' | ||
+ | |||
+ | Zie voor invoegen plaatjes op basis van query onder Kopje: //Invoegen plaatjes op basis van een query-aanroep naar tbqueries die verwijst naar tbimages// bij [[openwave: | ||
+ | | ||
+ | ===== Query' | ||
+ | De inhoud van de kolommen van de formqueries en childqueries uit de definitie document- en emailsjablonen (beheer) kan ook bestaan uit een verwijzing naar een query in deze tabel tbqueries.\\ | ||
+ | Hierdoor hoeft een query die in meerdere sjablonen gebruikt wordt maar eenmalig te worden gedefinieerd. De opmaak van de sjablonen wijzigt hierdoor niet. In tbqueries kan bovendien een select statement ingevoerd worden van onbeperkte grootte.\\ | ||
+ | Zie het kopje //formquery en childquery-verwijzingen naar tbqueries// bij [[openwave: | ||
+ | |||
+ | |