- de tweede deelparameter is de veldnaam van de foreign-key kolom uit de koppeltabel naar de codetabel
- de derde deelparameter is de veldnaam van de primary key van de codetabel
- de vierde deelparameter is een veldnaam uit de codetabel of view die getoond kan worden in het aanvinkscherm. Mag leeg zijn
- de vijfde deelparameter is een veldnaam uit de codetabel of view die getoond moet worden in het aanvinkscherm. Mag NIET leeg zijn
- de zesde deelparameter is optioneel en bevat - indien gevuld - een veldnaam uit de codetabel of view die een moduleletter bevat. Mag dus leeg zijn.
- de zevende deelparameter is optioneel en bevat - indien gevuld - een veldnaam uit de codetabel of view die gevuld kan zijn met een vervaldatum. Indien gevuld dan zijn de vervallen items niet zichtbaar in het keuzelijstscherm
- de achtste deelparameter is optioneel en bevat een extra where clausule met kolommen uit de codetabel/view die aan de query die ten grondslag aan de keuzelijst wordt toegevoegd. Bijvoorbeeld substr(dvcode,1,1) = 'R' of dnminwaarde > 40
- de negende parameter is optioneel en bevat een verwijzing naar tbqueries (dvcode). Indien gevuld dan zal OpenWave de codetabel tonen volgens die select-query. Die query moet aan een aantal eisen voldoen:
- Er moet een kolomnaam zijn met de naam id, waarvan de inhoud bij koppelen overgenomen wordt in de kolom aangeduid in de tweede deelparameter van param3 (de veldnaam van de foreign-key kolom uit de koppeltabel naar de codetabel)
- Er moet een kolom zijn met de naam multiselect waarvan de waarde T of F moet zijn.
- Er moet een kolom zijn met de naam dnkey waarvan de inhoud een primary key van de codetabel is.
- Er moet een kolomnaam zijn met als naam de inhoud van vijfde deelparameter van param3 en deze kolom moet een gevulde waarde hebben.
- Indien de vierde deelparameter van param3 gevuld is, dan moet er een kolomnaam zijn met als naam de inhoud van vierde deelparameter van param3.
- De query kan gebruik maken van de variable {id} die on the fly wordt gevuld met de waarde van %keyparent% (dus met de primary key van de parenttabel)
- param4: de code uit tbsysstandardtable die verwijst naar de kaart waar de betreffende tabel in is gedefinieerd.
De selectie van rijen op die codetabel wordt beïnvloed door:
- Indien de zevende deelparameter van param3 is gevuld met de kolomnaam van een datumveld dan gaat OpenWave er van uit dat het hier gaat om een vervaldatum en worden alleen die kaarten uit de codetabel getoond die niet vervallen zijn.
- De moduleletter (de derde deelparameter van param2 die verwijst naar kolomnaam van de parenttabel, en de zesde deelparameter van param3 die verwijst naar kolomnaam van de codetabel) wordt - indien beide deelparameters gevuld - om de rijen van de codetabel te filteren op de moduleletter van de parenttabel. Mogen dus leeg zijn. Let op de inhoud van de modulekolom van de parenttabel moet in dat geval gevuld zijn met één letter namelijk: W,A,O,I,H of E).
- De rijen van de codetabel kunnen aan nog een voorwaarde moeten voldoen indien de achtste deelparameter van param3 gevuld is met een statement dat gebruikt kan worden in de where clausule van de SQL die ten grondslag ligt aan het oproepen van de codetabelrijen.
- leeg of de waarde 0 dan zal OpenWave synchroniseren. Dat betekent dat op basis van de NIET aangevinkte rijen OpenWave kijkt of er rijen met foreign keys bestaan in de sysstandaardtabel (de koppeltabel) met een verwijzing naar zo'n niet aangevinkte rij. Zo ja dan worden deze verwijderd uit de koppeltabel. Vervolgens wordt gekeken of er aangevinkte rijen zijn in de codetabel die nog geen verwijzing hebben vanuit de standaardtabel. Zo ja worden op basis daarvan nieuwe kaarten aangemaakt in de syststandaardtabel (de koppeltabel) met gevulde foreign key naar de parenttabel en gevulde foreign key naar de codetabel.
- de waarde 1 dan zal OpenWave op basis van elk van de aangevinkte rijen een kaart aanmaken in de sysstandaardtabel (de koppeltabel) met gevulde foreign key naar de parenttabel en gevulde foreign key naar de codetabel.
voorbeeld koppelsysstandardrow zonder query-verwijzing
De knop Sjabloon koppelen aan sjabloongroepen is als volgt gedefinieerd bij de sysstandaartabel met code beheer_vwfrmkopdocaandocsoort:action = //startwizard// param1 = //koppelSysStandardRow// param2 = //%keyparent%;dvomschrijving;dvvantoepop;0// param3 = //tbdocumentsoorten;dnkeydocsoort;dnkey;;dvomschrijving;dvindelenin;ddvervaldatum;1=1// param4 = //beheer_vwfrmkopdocaandocsoort//Op grond hiervan toont OpenWave een lijstje uit tbdocumentssoorten (de sjabloongroepen) die de gebruiker nog aan aan- en uitvinken. De aangevinkte kaarten van deze codetabel worden overgenomen in tbkopdocaandocsoort. Tbkopdocaandocsoort is een dochtertabel van TbDocumenten (de sjablonen). Dus:
Tbdocumenten is de parentabel Tbkopdocaandocsoort is de koppeltabel Tbdocumentsoorten is de codetabelparam2
- de eerste deelparameter %keyparent% is de waarde van de primary key van tbdocumenten van de kaart waarvanuit de functie koppelsysstandardrow() wordt aangeroepen. Deze wordt in dit voorbeeld on the fly door OpenWave gevuld.
- de tweede deelparameter dvomschrijving is een veldnaam uit tbdocumenten waarvan de waarde gebruikt wordt in de koptekst boven de codetabellijst
- de derde deelparameter dvvantoepop is een veldnaam uit tbdocumenten die een moduleletter bevat (B,O,W,C,I,E of H) die gebruikt kan worden om de codetabel te filteren
- de vierde deelparameter 0 betrekent dat de aangevinkte kaarten uit de codetabel Tbdocumentsoorten worden overgenomen in tbkopdocaansoort en dat de niet aangevinkte kaarten juist worden verwijderd
- de eerste deelparameter tbdocumentsoorten geeft de naam van de codetabel
- de tweede deelparameter dnkeydocsoort is de naam van de foreign key-kolom uit tbkopdocaandocsoort richting tbdocumentsoorten
- de derde deelparameter dnkey is de naam van de primary key-kolom uit tbdocumentsoorten waar dnkeysocsoort naar verwijst
- de vierde deelparameter is leeg en worfdt dus niet gebruikt.
- de vijfde deelparameter dvomschrijving is een kolomnaam uit tbdocumentsoorten die getoond moet worden in de keuzelijst
- de zesde deelparameter dvindelenin is een kolomnaam uit tbdocumentsoorten waarop de waarde van de derde deelparameter van param2 wordt gefilterd
- de zevende deelparameter ddvervaldatum is een vervaldatumkolomnaam uit tbdocumentsoorten waarop wordt gefilterd (alleen geldige)
- de achtste deelparameter 1=1 is de extra where clausule waarop de lijst uit tbdocumentsoorten wordt gefilterd (in dit geval dus altijd true)
- de negende deelparameter is leeg. Dus Openwave construeerst zelf een lijst uit tbdocumentsoorten op grond van de andere deelparameters.
De query die OpenWave construeert ziet er als volgt uit - ervanuitgaande dat %keyparent% de waarde 100 geeft en de module in dvvantoepop de waarde W:
select b.dnkey as id, 'T' as multiselect,b.dnkey as dnkey, b.dvomschrijving from tbkopdocaandocsoort a inner join tbdocumentsoorten b on (a.dnkeydocsoort= b.dnkey) where a.dnkeydocument = 100 UNION select dnkey as id, 'F' as multiselect,dnkey as dnkey, dvomschrijving from tbdocumentsoorten where dnkey not in (select dnkeydocsoort from tbkopdocaandocsoort where dnkeydocument = 100) and (ddvervaldatum is null or ddvervaldatum >= fn_vandaag(0)) and 1 = 1 and instr('W',dvindelenin) > 0 order by dvomschrijvingDus eerst een opsomming met multiselect = T van alle documentsoorten die reeds in tbkopdocaandocsoort en vervolgens een opsomming met multiselect = F van alle documentsoorten die NIET in tbkopdocaandocsoort voorkomen (bij document met dnkey = 100).
voorbeeld koppelsysstandardrow met eigen query-verwijzing
Deze Query die OpenWave zelf construeert bij ontbreken van de negende deelparameter bij param3 mag de gebruiker ook zelf construeren en anders maken. Er moet dan een verwijzing in de negende deelparameter komen naar een query. Stel die query heet MijnEigenQuery dan is param3:tbdocumentsoorten;dnkeydocsoort;dnkey;;dvomschrijving;;;;Mijneigenquery
Deze query kan er dan op grond van bovenstaand voorbeeld als volgt uit zien:
select b.dnkey as id, 'T' as multiselect, b.dvomschrijving from tbkopdocaandocsoort a inner join tbdocumentsoorten b on (a.dnkeydocsoort= b.dnkey) where a.dnkeydocument = {id} UNION select dnkey as id, 'F' as multiselect,dnkey as dnkey, dvomschrijving from tbdocumentsoorten where dnkey not in (select dnkeydocsoort from tbkopdocaandocsoort where dnkeydocument = {id}) and (ddvervaldatum is null or ddvervaldatum >= fn_vandaag(0)) and dnkey > 1000Hierbij geldt dus:
- De primary key van tbdocumenten die on the fly wordt vervangen moet weergegegevn worden als {id}
- Er moet een kolom dlmultiselect zijn met waarde T of F
- Er moet een kolom dnkey zijn met de primary key van de codetabel (tbdocumentsoorten)