====== Scherminformatie voor standaard insert- en kopieer ====== {{tag>openwave:1.34:applicatiebeheer:functionaliteiten:applicatiebouw}} Bij de definitie van een [[stable:applicatiebeheer:instellen_inrichten:standardlist_standarddetail|standaardlijst]] (beheertegel //Tabellen Standaardapi//) kan bij de definitie van een insert-of kopieerknop een verwijzing staan naar een kaart in tbscreencolumns met daarin gedefinieerd de opmaak van een insertscherm voor de betreffende tabel. Die verwijzing staat bij de insertknopdefinitie als tweede parameter indien de action bij die insertknop is gedefinieerd als //startWizard// en de eerste parameter de waarde //insertSysStandardRow// heeft. Die verwijzing staat bij de kopieerknopdefinitie als tweede parameter indien de action bij die kopieerknop is gedefinieerd als //startWizard// en de eerste parameter de waarde //kopieerSysStandardRow// heeft. De kaart met de insert- of kopieerscherminformatie in tbscreencolumns heeft een naam (dvscreenfilename) met prefix 'MDWC_insert" en die eindigt op '.xml', waarbij het tussenliggende gedeelte bij voorkeur wordt gevuld met de tabelnaam waarop de insert gaat plaatsvinden. Het kopieer- en insertscherm mogen dezelfde zijn, maar hoeft niet!! De kolom tbscreencolumns.dvclassname heeft dezelfde waarde als die van de bijbehorende lijst (van daaruit wordt de insert of kopieer gedaan) en dvviewname heeft de naam van de tabel waarop de insert/kopieer wordt gedaan. De plaats en inhoud van de insert- of kopieerscherm kolommen worden, net als bij een lijst- of detailscherm, geregeld in het text-veld dvscreenxml met een xml-opmaak. Binnen de root-tag '''' wordt één blok '''' gedefinieerd en binnen het blok '''' worden vervolgens één of meer blokken '''' gedefinieerd.. Indien het gaat om een insert die plaatsvindt op een dochtertabel is de waarde van de foreign key al geregeld in de derde parameter van de definitie van de insertknop bij de standaardtabel. Bij een kopieeractie is die derde parameter de dnkey van de kaart die gekopieerd moet worden. De kolommen van de tabel waarop de insert plaatsvindt waarvoor geldt dat zij in de databasedefinitie: * als verplicht zijn gemarkeerd (not null) * maar geen defaultwaarde hebben * en geen foreign key zijn die kolommen __moeten__ in de xml-string worden opgenomen (de niet verplichte kolommen mogen natuurlijk ook). Voor een kopieeractie geldt dit niet (alle not null kolommen hebben een waarde op de te kopiëren kaart). De opmaak van het insert- en kopieerscherm (de xml) is hetzelfde als die van een detailscherm, waarbij: * echter geen blokken bestaan * op elke regel slechts één kolom kan voorkomen * de variabele %keyparent% desgewenst gebruikt kan worden in '''' * de variabele %keyaccount% desgewenst gebruikt kan worden in '''' * de variabele '%tagid(xxx)%' desgewenst gebruikt kan worden in ''''. LET OP de apostrofjes: deze horen erbij. Deze variabele wordt vervangen door een eerder gekozen waarde in de tagnaam xxx (meestal dus een veldnaam) * onderaan een extra tag kan worden toegevoegd * de tagnaam per definitie verwijst naar een veldnaam van de tabel waarop de insert wordt toegepast (dus NIET die van de view) **tenzij** de tagnaam begint met de tekst 'tag'. In dat geval interpreteert OpenWave deze tag als: deze tagnaam hoef niet aan de database te worden doorgegeven, is geen database-veldnaam. ==== Kopieren zonder invoerscherm ==== Sedert OpenWave versie 1.34 is het mogelijk om kopieerwizards automatisch uit te voeren zonder dat er een scherm wordt weergegeven. Om deze functionaliteit te gebruiken, moet de derde parameter – die normaal gezien enkel de verwijzing bevat naar de ''dnkey'' van de te kopiëren regel – worden uitgebreid. Dit gebeurt door een puntkomma //( ; )// toe te voegen, gevolgd door de waarde ''no_screen''. In de praktijk krijgt de parameter dan de volgende vorm: ''{id};no_screen'' Voor deze functionaliteit is het van belang dat een wizard enkel zonder invoerscherm kan worden uitgevoerd wanneer in de bijbehorende '''' geen blok aanwezig is met de tag: ''True'' ==== Voorbeeld ==== 1 tag 200 30 true true keuzelijst generalwithoutemptyline select 'W' id, 'W: Omgeving' omschrijving from tbportalnames where dlisbegin = 'T' union select 'H' id, 'H: Handhaving' omschrijving from tbportalnames where dlisbegin = 'T' union select 'O' id, 'O: APV/Overig' omschrijving from tbportalnames where dlisbegin = 'T' union select 'I' id, 'I: Info-Aanvragen' omschrijving from tbportalnames where dlisbegin = 'T' union select 'E' id, 'E: Milieu/gebruik' omschrijving from tbportalnames where dlisbegin = 'T' union select 'C' id, 'C: Horeca' omschrijving from tbportalnames where dlisbegin = 'T' false 2 dnkeyproducten 400 30 true true keuzelijst generalwithoutemptyline select a.dnkey id, a.dvproductcode | | ' - ' | | coalesce(a.dvproductoms,'') omschrijving from vwfrmkopproductenzaaktypes a where (a.ddvervallen is null or a.ddvervallen >= fn_vandaag(0)) and a.dvmoduleletter = '%tagid(tag)%' order by a.dvproductcode false 3 dnkeysubproducten 400 30 true true keuzelijst generalwithemptyline select a.dnkey id, a.dvsubproductcode | | ' - ' | | coalesce(a.dvsubproductoms,'') omschrijving from tbsubproducten a where (a.ddvervallen is null or a.ddvervallen >= fn_vandaag(0)) and a.dnkey in (select b.dnkeysubproducten from tbsubproductdef b where b.dnkeyproductdef in (select c.dnkeyproductdef from tbproducten c where c.dnkey = '%tagid(dnkeyproducten)%')) order by a.dvsubproductcode true 4 dnkeyproductklanten 300 30 true true keuzelijst generalwithoutemptyline select dnkey id, dvklantoms omschrijving from tbproductklanten where ddvervallen is null or ddvervallen >= fn_vandaag(0) false 5 dnkeyproductwerkpakketten 300 30 true true keuzelijst generalwithoutemptyline select dnkey id, dvwerkpakketoms omschrijving from tbproductwerkpakketten where ddvervallen is null or ddvervallen >= fn_vandaag(0) true 6 dvactiviteitcode 150 30 true false string true Weetniet