Het toepassen van DLA (designer) in een MS-Access, VB of ASP ontwikkeltraject

Maat: px
Weergave met pagina beginnen:

Download "Het toepassen van DLA (designer) in een MS-Access, VB of ASP ontwikkeltraject"

Transcriptie

1 Het toepassen van DLA (designer) in een MS-Access, VB of ASP ontwikkeltraject By Bert Dingemans, bert.dingemans@hetnet.nl www :

2 Inhoudsopgave Het toepassen van DLA (designer) in MS-Access, VB en ASP ontwikkeltraject... 1 Inhoudsopgave... 2 Inleiding... 3 Biebcase... 3 DLA designer... 3 DLA... 3 Lagen... 3 Methodische stappen... 4 Notatiewijzen... 5 Implementeren van het bedrijfsdomein... 9 Transformatie naar MS-Access Formulier en servicelaag Eventslaag Domein Object laag Transformatie naar Visual Basic Formulier en servicelaag Eventslaag Domein object laag ConnectionManager Transformatie naar ASP COM Object ASP Pagina s Tot slot... 23

3 Inleiding In de afgelopen periode+ben ik betrokken geweest bij een project waar een Drie Lagen Architectuur is toegepast. In dit traject is de Case tool DLA designer gebruikt. Tijdens dit project rees bij mij de vraag. Hoe kan een drie lagen architectuur in verschillende ontwikkelomgevingen toegepast worden. Reden om dit in de vorm van een onderzoek uit te werken. Er is gekozen voor een drietal omgeven MS-Access, Visual Basic en ASP en een COM object. In dit onderzoek zijn de Drie Lagen Architectuur (DLA) en Merode het uitgangspunt is geweest. In dit document wil ik ingaan op de ervaringen en keuzes welke relevant zijn geweest voor dit onderzoek. Hierbij moet met klem opgemerkt worden dat de keuzen zoals genomen niet perse de juiste keuzes geweest zijn. Dit document moet dan ook meer gezien worden als het beginpunt van een discussie waarin het toepassen van de DLA als uitgangspunt dient. Naast het beschrijven van het toepassen van de Merode (DLA) methode voor ontwerp en implementatie wordt beschreven hoe relevante onderdelen zijn toegepast in ofwel de DLA designer ofwel een van de drie ontwikkelomgevingen. Als het wenselijk is worden deze voorbeelden in de tekst van het document opgenomen. Is de omvang van een voorbeeld te omvangrijk of verstoort het de opbouw van het document dan wordt het voorbeeld als bijlage opgenomen. Belangrijke reden om dit document op te stellen is om te laten zien dat het toepassen van DLA in een software ontwikkeltraject duidelijk voordelen biedt. Het toepassen van een werkwijze vanwege de werkwijze, is niet voldoende voor DLA om succesvol te zijn. De DLA moet zichzelf kunnen handhaven in een ontwikkeltraject en de professional in het ontwikkeltraject voordelen bieden. Daarnaast moet DLA geen keurslijf zijn, iedere professional heeft een eigen werkwijze om tot een eindproduct te komen. DLA kan een hulpmiddel zijn om tot een beter eindproduct te komen met een geringere inspanning. Biebcase De Biebcase wordt gebruikt als voorbeeld. Het is een relatief eenvoudig voorbeeld wat iedereen kent. Een bibliotheek waar mensen lid van kunnen worden, die boeken kunnen lenen en reserveringen kunnen maken van boeken. In de beschrijving van de methode Merode zal duidelijk worden welk gedrag belangrijk is in een bibliotheek voorbeeld. DLA designer DLA designer is een CASE tool van de competentie groep Modelgedreven Systeem Ontwikkeling van IMN. Deze CASE tool ondersteunt de verschillende aspecten van de DLA zoals beschreven in de volgende paragraaf. In de biebcase is deze CASE tool ingezet als hulpmiddel. In dit document zullen de voorbeelden steeds geënt zijn op de DLA designer. De DLA designer is te downloaden van de DLA Designer homepage ( DLA DLA is een Object Georiënteerde ontwerpmethode voor informatica toepassingen. De methode bestaat uit een viertal onderdelen. Lagen Zoals de naam al zegt is de DLA een architectuur die uit drie lagen bestaat. Wat is nu een laag? Een laag is een implementatie van inkapseling. In een laag bevinden zich bepaalde logica en entiteiten. Iedere laag communiceert alleen maar met de eerste laag die onder deze laag ligt. Hierdoor is het dan ook niet nodig dat een laag kennis heeft over structuren en gedrag zoals dit in onderliggende lagen voorkomt. Alleen de eerste laag is in deze relevant. De lagen in DLA zijn van onder naar boven: Bedrijfsdomeinlaag Gebruikerslaag Presentatielaag Bedrijfsdomeinlaag Gebruikerslaag In de bedrijfsdomeinlaag worden die entiteiten opgenomen die statisch van aard zijn. Voor de case geldt bijvoorbeeld dat er gewerkt wordt met leden, titels en uitleningen. Deze worden dan ook beschreven in de bedrijfsdomeinlaag. Omdat DLA een OO methode is zullen hier met name de objecttypen beschreven worden. Objecttypen bestaan uit een beschrijving van eigenschappen of attributen en uit gedrag of methoden. Met methoden verandert men de toestand (eigenschappen) van een object. Binnen organisaties wordt op verschillende manieren naar objecten gekeken. Bij de uitleenbalie is andere informatie nodig dan bijvoorbeeld de ledenadministratie. In de gebruikerslaag worden deze verschillende views op de objecten gemodelleerd

4 Presentatielaag De verschillende views zoals deze ontstaan in de gebruikerslaag moeten gepresenteerd worden. Bijvoorbeeld in schermen en rapporten van een computertoepassing. Dit wordt afgehandeld in de presentatielaag. Voor de biebcase zijn er bijvoorbeeld meerdere invoer- en bewerkschermen voor data-entry. Maar ook rapportages behoren tot de presentatielaag. In de paragraaf over de realisatie in de drie ontwikkelomgevingen wordt ingegaan hoe deze lagen zijn vertaald in een Powerbuilder Sybase toepassing. Methodische stappen Om tot een ontwerp van een softwareproduct te komen kunnen een aantal stappen gevolgd worden. Met behulp van deze stappen is het mogelijk om tot een compleet OO ontwerp te komen van het te realiseren (deel) systeem. Deze stappen moeten veelal gezien worden als een richtlijn. Ook hierin geldt weer dat iedere professional een eigen werkwijze heeft. Het volgen van de stappen zal voor iemand nieuw in DLA structuur bieden. Een ervaren ontwerper zal veelal een eigen werkwijze hebben waarmee hij/zij tot een ontwerp komt. In onderstaande tabel worden de stappen beschreven. Stap Identificeer object- en gebeurtenistypen Samenstellen Object Gebeurtenis tabel Vervaardigen van ER diagram of ED diagram Volgorde beperkingen in Rolstructuren Informatiebeperkingen Identificeren van services Omschrijving Geef een beschrijving welke objecten en gebeurtenissen voorkomen in het deelsysteem dat geanalyseerd wordt. Voor de case zijn bijvoorbeeld het objecttype Lid en Titel relevant. Daarnaast zijn gebeurtenistypen te onderkennen. Een gebeurtenis verandert de toestand van een of meer objecten. Denk bijvoorbeeld aan de gebeurtenissen Inschrijven, Reserveren en Uitlenen. Is een lijst van objecten en gebeurtenissen opgesteld dan kan aangegeven worden welk effect een gebeurtenis op één of meerdere objecten heeft. Dit wordt aangegeven met drie tekens BXE. De B geeft het begin van een object aan, een X een wijziging en een E het einde van een object. De gebeurtenis Aanvraag_wordt_vervuld zal het einde van een Aanvraag object betekenen (E) en een wijziging van een Kandidaat object (de eigenschap beschikbaar veranderd) Vervolgens wordt aangegeven wat de relaties zijn tussen de verschillende objecten. Zo hoort bijvoorbeeld een externe kandidaat altijd bij een inhuurbureau. De relatie tussen deze objecten is dan Werkt_voor. Door het uitwerken van relaties is te zien welke objecten kennis moeten hebben van andere objecten door er op één of ander manier naar te verwijzen. Met behulp van een ER diagram is het mogelijk de verschillende relaties in kaart te brengen. Uit de object gebeurtenis tabel is al gebleken dat een object een levensloop heeft die begint, wijzigt en eindigt. Binnen deze levensloop zijn beperkingen aan te brengen. Deze beperkingen zijn relevant omdat hiermee bepaald kan worden wat de volgende fase in het leven van een object is. In de case kan bijvoorbeeld een exemplaar pas uitgeleend worden als deze geclassificeerd is. Naast beperkingen in de volgorde zijn er ook beperkingen te onderkennen op het gebied van gegevens. Te denken valt hierbij aan attributen die slechts een bepaalde waarde aan kunnen nemen. Maar ook bepaalde precondities voor een methode zijn hier te modelleren. In de case is een informatiebeperking bijvoorbeeld dat een lid niet mdeer dan vijf boeken mag lenen. Services geven de mogelijkheid om gegevens te representeren aan gebruikers van het systeem. Ook kunnen services dienen om gegevens naar het systeem toe te sturen. Dit gebeurt door vanuit de service één of meerdere gebeurtenissen aan te roepen. Deze services bewerkstelligen de inkapseling van de daadwerkelijke structuur van methoden en gebeurtenissen. Bijvoorbeeld het invoerscherm voor reserveren in de case is gebaseerd op een service. In deze service wordt slechts een gedeelte van de eigenschappen van het object aanvraag getoond.

5 Creeren van een datamodel in een ADT Specificeren van methoden en gebeurtenissen In het datamodel worden de attributen en methoden van de verschillende objecten beschreven. Hiermee wordt het ontwerp gecompleteerd. In het datamodel worden bijvoorbeeld de gegevenstypen van de attributen beschreven In de methoden wordt aangegeven wat de toestandsverandering is van een object. Een methode kan naast het wijzigen van de toestand ook het leven van een object beginnen of eindigen. Een gebeurtenis zorgt ervoor dat er een inkapseling plaatsvindt voor de services naar de methoden. Een services weet ten slotte niet wat de structuur is van de onderste laag. Een gebeurtenis zal dan ook één of meerdere methoden van één of meerdere objecten aanroepen Zo zal de gebeurtenis Uitlenen na reserveren vier methoden aanroepen één die het leven van een Titel, Lid, Reservering en Uitlening wijzigt. In de DLA designer zijn de methodische stappen van DLA samengebracht in een scherm. Dit scherm biedt een stappenplan voor een ontwerper om te komen tot een compleet DLA objectmodel. In onderstaande figuur een voorbeeld van dit scherm. Notatiewijzen ER diagram en ED Diagram Een ER diagram is er op gericht de objecttypen en de relaties tussen de verschillende objecttypen in beeld te brengen. Dit wordt gedaan door objecttypen als een rechthoekje weer te geven met daarin de naam van het objecttype. Een relatie wordt weergegeven als een lijn tussen twee objecten. Deze lijn heeft de naam van de relatie. In het voorbeeld van bijvoorbeeld de relatie te zien door waarbij de objecttypen lid en uitlening betrokken zijn. Aan de uiteinden van de lijn zijn symbolen opgenomen waarmee te zien is wat de multipliciteit van een relatie is. Zo is het in de genoemde relatie bijvoorbeeld zo dat een resource medewerker meerdere aanvragen in behandeling heeft, terwijl een aanvraag altijd bij slechts één resourcemedewerker in behandeling is. De volgende symbolen worden gebruikt in een ER diagram. Open rondje. De multipliciteit is 0 of 1. Dat betekent dat slechts een entiteit in de relatie mag voorkomen Gesloten rondje. De multipliciteit is 1. Dat betekent dat slechts een entiteit in de relatie moet voorkomen

6 Open rondje en een driehoekje De multipliciteit is 0 tot meer. Dat betekent dat er meerdere entiteiten in de relatie mogen voorkomen, echter dit is optioneel. Gesloten rondje en een driehoekje De multipliciteit is 1 tot meer Dat betekent dat er een of meerdere entiteiten in de relatie moeten voorkomen. In de figuur is een ER-diagram als voorbeeld opgenomen. Object gebeurtenis tabel In de object gebeurtenis tabel wordt een matrix opgesteld waarbij op de verticale as alle gebeurtenissen getoond worden en op de horizontale as alle objecten. In de matrix wordt door middel van een drietal karakters aangegeven hoe een object bij een bepaalde gebeurtenis betrokken is. B (begin) betekent dat als een object op basis van dit karakter betrokken is bij deze gebeurtenis, hierdoor een nieuw object van dit type gecreëerd wordt. X (wijzig) houdt in dat een object door deze gebeurtenis wijzigt E (einde) door deze gebeurtenis eindigt het leven van een object. In onderstaande afbeelding is een voorbeeld te zien van de Object Gebeurtenis tabel zoals deze is geïmplementeerd in de biebcase.

7 Deze object-gebeurtenistabel kan gebruikt worden om in een later stadium rollen en methoden voor de verschillende combinaties van gebeurtenissen en objecten te genereren. In het proces scherm van DLA is een knop opgenomen generate methods and roles welke dit geautomatiseerd uitvoert. Rolstructuren Met behulp van rolstucturen is de levensloop van objecttypen te beschrijven. Zo kan een aanvraag in PLATO pas vervuld zijn als er een nieuwe aanvraag is binnengekomen. Rolstructuren kunnen het beste gezien worden als een boom waarbij de naam van het objecttype als wortel fungeert. Vanuit deze wortel wordt de boom vervolgens van links naar rechts en van boven naar beneden gelezen. In de figuur is een voorbeeld van de titel opgenomen. Hieronder volgt een toelichting

8 Het leven van een titel begint met de gebeurtenis opnemen. De volgende fase is de body van het leven waarbij de toestand van de aanvragen meerdere keren gewijzigd kan worden bijvoorbeeld in uitlenen en verlengen. Het leven van een object eindigt door het schrappen van een titel. In een zijn de volgende rollen te onderkennen Elementaire bewerking (de eindpunten van de boom die de toestand aanpassen) Sequentie de stappen volgen elkaar sequentieel op (opnemen.. titel body.. schrappen) Iteratie (*) het een of meerdere keren uitvoeren van een stap zoals de titel body. De titel body is in deze de iteratie Selectie (0) een stap bestaat uit de keuze van twee of meer stappen. In dit voorbeeld de keuzen in titel body. Die bestaat uit een groot aantal keuzen. Producten Is het DLA proces uitgevoerd in één of meerdere stappen dan is er een object model beschikbaar. Dit objectmodel bestaat uit een aantal producten. Deze producten kunnen gebruikt worden in de realisatiefase van een softwareontwikkelingstraject. Ze bestaan uit de volgende onderdelen. Vanzelfsprekend bestaan deze producten naast de diagrammen als ER Diagram en rolstructuur. Deze diagrammen maken duidelijk wat de verbanden zijn tussen de verschillende te onderscheiden entiteiten. Services beschrijven hoe de presentatielaag van de DLA gegevens van en naar de gebruikerslaag zendt. In een service is met name de parameterdefinitie van belang. Daarnaast wordt aangegeven of een service gegevens verstrekt aan de presentatielaag of gegevens bewerkt. Een gegevensverstrekkende service bestaat uit het verstrekken van gegevens naar de presentatielaag. In de biebcase bestaat er bijvoorbeeld een verstrekkende service geef_titels welke een lijst van alle actieve titels geeft. De service kan naast verstrekken ook gegevens vragen bijvoorbeeld als slechts een gedeelte van alle objecten getoond moet worden. In de case is er een service geef_titel welke de eigenschappen van een specifiek object titel toont. Hierbij is het noodzakelijk dat opgegeven wordt welk object getoond moet worden. Dit wordt gedaan met behulp van de object identifier. Gebeurtenissen geven een beeld van wat optreedt in de werkelijkheid van een gebruikersgroep. Een gebeurtenis vertaalt dit event in een aantal methode aanroepen op één of meerdere objecten. Methoden veranderen de toestand van een object. Deze toestandverandering heeft een drietal verschijningsvormen: Er wordt een nieuw object van het objecttype gecreëerd. De waarden van de objecteigenschappen worden veranderd. In het voorbeeld kan een lid verhuizen de eigenschappen adres en woonplaats veranderen hierdoor. De laatste verschijningsvorm is dat een object van een bepaald type verdwijnt of eindigt. In de object-gebeurtenis tabel is aangegeven welke gebeurtenis de verschillende verschijningsvormen initieert

9 ADT geeft een beschrijving van de statische eigenschappen van de verschillende objecttypen. Statisch zijn bijvoorbeeld de afzonderlijke objecten, hun eigenschappen en voor een groot deel de relaties tussen deze verschillende objecten. Het ADT is het product dat samen met de methoden het bedrijfsdomein beschrijft. Deze producten zijn in detail beschreven met behulp van de DLA methode. In het voorbeeldproject zijn al de ze gegevens ingevoerd in de DLA designer. De designer beschikt over een repository welke beschikbaar is in de verschillende fasen van het ontwikkeltraject. In dit hoofdstuk is een summiere beschrijving gegeven van het ontwikkelproces van DLA. De volgende stap is de transformatie van een object model naar een structuur in één of meerdere ontwikkelomgevingen. #afbreekpunt# Implementeren van het bedrijfsdomein De eerste stap te zetten om te komen tot een werkende toepassing is het implementeren van het bedrijfsdomein in een relationele database. In deze case kiezen we voor MS-Access als database. Rede om voor MS-Access te kiezen is dat voor het werken met een MS-Access database geen zware hardware eisen gesteld worden en dat deze database op vrijwel iedere computer beschikbaar is. Daarnaast bevat MS-Access alle relationele eigenschappen benodigd voor deze case. Alvorens in te gaan op de daadwerkelijke scripts wil ik ingaan op de transformatieregels om van een object georiënteerd Merode model te komen naar een relationeel datamodel. Bij de transformatie spelen de volgende entiteiten een rol Object, een object is te implementeren met behulp van een tabel in een relationele database. Echter in de object orientatie heeft een object identiteit. Dat moet in het relationele model toegevoegd worden. Daarom is het mogelijk (en eigenlijk noodzakelijk) om in het object model een object identifier te kiezen. Deze kan dan dienen als primaire sleutel in het relationele model. Enkelvoudige overerving kan bereikt worden door aan het overervende object de primaire sleutel van het super object op te nemen en vervolgens een view te creëren die de beide (of meerdere) tabellen met elkaar combineert. Eigenschap, de eigenschap kan in het relationele model worden opgenomen als kolom. Verder is het mogelijk om, zeker als met een view gewerkt wordt) afgeleide eigenschappen te definiëren. Daarnaast kan het domein van een eigenschap eenvoudig getransformeerd worden naar een relationele database. In MS-Access is het niet mogelijk om met standaardwaarden te werken. Dit zal in de case dan ook geïmplementeerd moeten worden in de methoden. Associatie, associaties kunnen verwerkt worden door referentiele beperkingen op te leggen. Vooral de 1 op N en 0 op N associaties zijn op deze wijze te implementeren. 1 op 1 en 0 op 1 associaties kunnen bereikt worden door een combinatie van foreign key constrains en unieke indexering Methode, methoden kunnen niet in de relationele database van MS-Access geïmplementeerd worden. Hierop wordt bij de specifieke ontwikkelomgeving omschrijving ingegaan. Gebeurtenis, gebeurtenissen kunnen niet in de relationele database van MS-Access geïmplementeerd worden. Deze komen bij de specifieke ontwikkelomgeving omschrijving aan de orde. Service services kunnen niet in de relationele database van MS-Access geïmplementeerd worden. Hierop wordt bij de specifieke ontwikkelomgeving omschrijving ingegaan. In onderstaande source code een afleiding van het script zoals dit door de DLA designer gegenereerd wordt. Echter bij de DLA designer wordt met behulp van een ODBC connectie deze opdracht naar MS-Access gestuurd. Deze listing is dan ook alleen bedoeld als voorbeeld CREATE TABLE EXEMPLAAR ( aanschafdatum DateTime, druk Char( 50), exemplaarid Integer NOT NULL CONSTRAINT exemplaar PRIMARY KEY, rolstatus Char( 10), status Char( 2) NOT NULL, titelid Integer NOT NULL, deletedmark Integer ) CREATE TABLE LID ( aantal_reserveringen Integer, aantal_uitleningen Integer, actuele_reserveringen Integer, actuele_uitleningen Integer*, adres Char( 25) NOT NULL, geboortedatum DateTime, inschrijfdatum DateTime, lidid Integer NOT NULL CONSTRAINT lid PRIMARY KEY, naam Char( 25) NOT NULL, status Char( 2) NOT NULL, telefoon Char( 20)

10 , woonplaats Char( 25) NOT NULL, deletedmark Integer ) CREATE TABLE RESERVERING ( lidid Integer NOT NULL, reserveerdatum DateTime, resid Integer NOT NULL CONSTRAINT reservering PRIMARY KEY, status Char( 2) NOT NULL, titelid Integer NOT NULL, deletedmark Integer ) CREATE TABLE TITEL ( aantal_reserveringen Integer, aantal_uitleningen Integer, actuele_reserveringen Integer, actuele_uitleningen Integer, categorie Char( 10), isbn Char( 15), naamtitel Char( 99) NOT NULL, status Char( 2) NOT NULL, statusrol Char( 10), titelid Integer NOT NULL CONSTRAINT titel PRIMARY KEY, deletedmark Integer ) CREATE TABLE UITLENING ( aantalverlengingen Integer, exemplaarid Integer NOT NULL, inleverdatum DateTime, lidid Integer NOT NULL, status Char( 2) NOT NULL, uitleendatum DateTime, uitleningid Integer NOT NULL CONSTRAINT uitlening PRIMARY KEY, verwinleverdatum DateTime, deletedmark Integer ) ALTER Table EXEMPLAAR ADD constraint exemplaar_titel_fk FOREIGN KEY (titelid) REFERENCES TITEL (titelid) ALTER Table RESERVERING ADD constraint reservering_lid_fk FOREIGN KEY (lidid) REFERENCES LID (lidid) ALTER Table RESERVERING ADD constraint reservering_titel_fk FOREIGN KEY (titelid) REFERENCES TITEL (titelid) ALTER Table UITLENING ADD constraint uitlening_lid_fk FOREIGN KEY (lidid) REFERENCES LID (lidid) In het script is te zien hoe als eerste de tabellen gedefinieerd worden. In de tabellen worden zoveel mogelijk de eigenschappen van de kolommen opgenomen, zoals verplicht of niet verplicht en of het een primaire sleutel is. Met de alter table instructies worden de 1 op N associaties uit het object model vertaald naar foreign key constraints. De 1 op 1 associaties en 0 op 1 associaties moeten nu met de hand aangemaakt worden. Daarnaast is te zien dat bij elke tabel een kolom deletedmark toegevoegd is. Bij Merode wordt ervan uitgegaan dat als het leven van een object eindigt deze niet verdwijnt maar blijft bestaan met een einde status. Dit is bijvoorbeeld voor bestuurlijke informatie handig. Voor het gemak wordt een deletedmark gebruikt. Ook zou het mogelijk zijn te controleren op de einde statussen. Echter als deze statussen veranderen dan kan dit problemen geven. Op zich is dit een eenvoudig object model en een eenvoudige transformatie. Echter voor andere databases zoals SQL server zijn er scripts beschikbaar die veel meer transformaties en detaillering mogelijk maken. Het nu geimplementeerde bedrijfsdomeinmodel geldt als uitgangspunt voor de te bouwen voorbeeld applicaties in MS-Access VB en ASP. Het eindresultaat van de bedrijfsdomein generatie is te vinden in onderstaande afbeelding

11 #afbreekpunt# Transformatie naar MS-Access Nu kan begonnen worden met de implementatie van de drie lagen in MS-Access. Hierbij wordt gebruik gemaakt van de formulieren en klasse modulen. De formulieren geven de gebruiker de mogelijkheid om gegevens te bewerken, bekijken en toe te voegen. De klasse modulen zorgen ervoor dat de gegevens vanuit de database naar de formulieren komen en de gewijzigde gegevens naar de database worden weggeschreven. Voordeel van deze werkwijze is dat een optimale inkapseling mogelijk is. De formulieren maken gebruik van de servicelaag en deze laag zorgt ervoor dat de gegevens uit de database gepresenteerd worden op een wijze welke voor de bewerking van de specifieke gebeurtenis van de gebruiker relevant is. Bijvoorbeeld het verwerken van de gebeurtenis Uitlenen_na_reserveren heeft betrekking op in totaal vijf objecten in de onderste laag. Te weten: Lid Titel Reservering Exemplaar Uitlening Hierbij kan het zo zijn dat voor het ene klasse er een nieuw object aangemaakt wordt terwijl voor de andere klasse een object verdwijnt. Bij uitlenen_na _reserveren wordt een uitlening aangemaakt, een reservering verdwijnt en van de andere drie objecten veranderd de toestand van één of meer eigenschappen. In de source code voorbeelden werken we van de bovenste laag naar beneden naar de lagere lagen. Hierbij wordt uitgegaan van de volgende opzet van de klasse modulen. We nemen hierbij het de gebeurtenis uitlenen_na_reserveren. In de voorbeeldtoepassing van MS-Access is trouwens in het start formulier een spy opgenomen. Hiermee is te zien hoe de verschillende gebeurtenissen vertaald worden naar een SQL opdracht voor de database.

12 Formulier en servicelaag Bij het openen van het formulier uitlenen na reserveren wordt ervoor gezorgd dat de keuzelijsten met invoervak die bij het openen gevuld zijn ook daadwerkelijk gevuld worden met de gewenste data. Dat wordt uitgevoerd in het form_open event van het formulier. Deze bevat de onderstaande source code. Er wordt een object aangemaakt van de klasse module servicelayer en deze zorgt ervoor dat de keuzelijsten gevuld worden met de juiste keuzeopties. Hierbij is te zien dat de inkapseling optimaal is, omdat er geen informatie zichtbaar wordt van de structuur van de lagen en de servicelaag zelf. Private Sub Form_Open(Cancel As Integer) Set objservice = ServicesLayer objservice.fillctrlgeef_leden lidid objservice.fillctrlgeef_titels titelid End Sub De methode van het servicelaag object voor het vullen van een besturingselement is voor vrijwel alle besturingselementen hetzelfde. We werken in dit voorbeeld een methode uit. Soms wordt het vullen van een keuzelijst uitgesteld tot meer informatie beschikbaar is. In het formulier uitlenen na reserveren is dit bijvoorbeeld het geval voor de reservering het geval. Deze is afhankelijk van de lid gegevens die pas bekend zijn na het kiezen van een lid. Dit wordt dan ook in de afterupdate van lidid gevuld. Het formulier voor uitlenen na reserveren is te zien in onderstaande afbeelding Sub FillCtrlGeef_Leden(objCtrl As Control) objctrl.rowsource = Geef_Leden objctrl.boundcolumn = 1 End Sub Private Function Geef_Leden() As String Dim strsql As String strsql = "SELECT LID.lidid, LID.naam, LID.woonplaats, LID.geboortedatum FROM LID WHERE LID.deletedmark=0 " Geef_Leden = strsql

13 Het vullen van een besturingselement in de servicelaag bestaat uit twee methoden. De eerste fungeert als een interface naar een formulier en zorgt ervoor dat het besturingselement een SQL string als rowsource krijgt en er wordt ingesteld wat de datakolom is. Vanzelfsprekend zijn hier ook andere eigenschappen van het besturingselement (zoals aantal kolommen) in te stellen. In de tweede methode wordt de SQL string opgebouwd. Dit kan dynamisch plaatsvinden of statisch. Bij een dynamische werkwijze kan er bijvoorbeeld gedacht worden aan het ophalen van een SQL statement uit een of meerdere tabellen in de database. Zijn alle gegevens ingevoerd en de gebruiker drukt op de OK knop dan worden de gegevens via de lagen naar de database gestuurd. De source code voor het formulier en de service laag zie je in onderstaande listing Private Sub OkPB_Click() If objservice.executeevent("uitlenen_na_reserveren", Me.Controls) = True Then DoCmd.Close End If End Sub Function ExecuteEvent(strEvent As String, objcontrols As Controls) As Boolean Dim blnretvalue As Boolean Select Case strevent. Case Uitlenen_na_reserveren blnretvalue = objevent.uitlenen_na_reserveren(objcontrols) Case "Uitschrijven" blnretvalue = objevent.uitschrijven(objcontrols) Case "Verdwijnen_tijdens_lenen" blnretvalue = objevent.verdwijnen_tijdens_lenen(objcontrols) Case "Verdwijnen_uit_bibliotheek" blnretvalue = objevent.verdwijnen_uit_bibliotheek(objcontrols) Case "Verkopen" blnretvalue = objevent.verkopen(objcontrols) Case "Verlengen" blnretvalue = objevent.verlengen(objcontrols) Case "Weggooien" blnretvalue = objevent.weggooien(objcontrols) End Select ExecuteEvent = blnretvalue De source code is redelijk recht toe recht aan. Het formulier roept de executeevent methode van de servicelaag aan en geeft als parameter de naam van het event en de controls collectie mee. Deze controls collectie wordt gebruikt als een container van velden en waarden die in een lagere laag gebruikt wordt om de SQL statements op te bouwen. In de executeevent methode van de servicelaag is een select case statement opgenomen dat ervoor zorgt dat dat het juiste event in de eventlaag wordt aangeroepen. Met namen omdat dit soort zaken door de DLA designer gegenereerd kan worden is het toevoegen of verwijderen van events tijdens een iteratief ontwikkelproces bijzonder eenvoudig. Eventslaag In de eventslaag zorgt de methode uitlenen_na_reserveren voor een aantal zaken. De belangrijkse zijn: Het afhandelen van een database transactie, omdat meerdere objecten in de database bewerkt worden bestaat er een mogelijkheid dat één van de SQL bewerkingen mislukt. Als dit gebeurt moeten en bewerkingen op de andere objecten teruggedraaid worden. Anders zou een deel van de gegevens wel gewijzigd zijn en een ander deel niet. Het verzorgen van het aanroepen van de methoden op de domein objecten die betrokken zijn bij dit event. Function Uitlenen_na_reserveren(objControls As Controls) As Boolean Dim blnretvalue As Boolean Dim objwrk As Workspace Set objwrk = DBEngine.Workspaces(0) objwrk.begintrans

14 blnretvalue = (objexemplaar.uitlenen_na_reserveren(objcontrols) And _ objtitel.uitlenen_na_reserveren(objcontrols) And _ objlid.uitlenen_na_reserveren(objcontrols) And _ objreservering.uitlenen_na_reserveren(objcontrols) And _ objuitlening.uitlenen_na_reserveren(objcontrols)) If blnretvalue = False Then objwrk.rollback Else objwrk.committrans End If Set objwrk = Nothing Uitlenen_na_reserveren = blnretvalue In de source code is te zien hoe de transactie ingesteld wordt en gecommit als alle object methoden de waarde True retourneren en een rollback uitvoert als één of meerdere methoden false retourneren. Ook is hier goed te zien hoe de controls collectie als container gebruikt wordt voor de communicatie tussen de verschillende lagen. Domein Object laag uitlening object Function Uitlenen_na_reserveren(objControls As Controls) As Boolean Dim blnretvalue As Boolean Dim strsql As String Dim strstatus As String Dim strcurrentstatus As String objcontrols(stridentifier) = GetSQLIdentifier(strTable, stridentifier) DefaultInitialValues objcontrols strstatus = "UU" blnretvalue = DefaultValidation(objControls) If blnretvalue = False Then Uitlenen_na_reserveren = blnretvalue Exit Function End If strcurrentstatus = GetCurrentStatus(strTable, stridentifier, objcontrols(stridentifier)) If strcurrentstatus <> "Null" Then MsgBox "Uitlening bestaat al" Uitlenen_na_reserveren = False Exit Function End If strsql = "INSERT INTO UITLENING" strsql = strsql & " ( deletedmark, status, exemplaarid, lidid, uitleendatum, uitleningid, verwinleverdatum ) VALUES ( 0, " & Set2SQL(strStatus) & " " strsql = strsql & ", " & Set2SQL(objControls("exemplaarid")) strsql = strsql & ", " & Set2SQL(objControls("lidid")) strsql = strsql & ", " & Set2SQL(objControls("uitleendatum")) strsql = strsql & ", " & Set2SQL(objControls("uitleningid")) strsql = strsql & ", " & Set2SQL(objControls("verwinleverdatum")) strsql = strsql & " ) " ExecuteSQL strsql Uitlenen_na_reserveren = blnretvalue End function reservering object Function Uitlenen_na_reserveren(objControls As Controls) As Boolean

15 Dim blnretvalue As Boolean Dim strsql As String Dim strstatus As String Dim strcurrentstatus As String strstatus = "RU" blnretvalue = DefaultValidation(objControls) If blnretvalue = False Then Uitlenen_na_reserveren = blnretvalue Exit Function End If strcurrentstatus = GetCurrentStatus(strTable, stridentifier, objcontrols(stridentifier)) If strcurrentstatus <> "RA" Then MsgBox "Reservering bestaat niet" Uitlenen_reserveren = False Exit Function End If strsql = "UPDATE RESERVERING" strsql = strsql & " SET deletedmark= 1, status= " & Set2SQL(strStatus) & " " strsql = strsql & " WHERE " & stridentifier & "= " & Set2SQL(objControls(strIdentifier)) ExecuteSQL strsql Uitlenen_na_reserveren = blnretvalue Titel of Lid object Function Uitlenen_na_reserveren(objControls As Controls) As Boolean Dim strsql As String strsql = "UPDATE LID SET actuele_uitleningen = actuele_uitleningen+1" strsql = strsql & ", aantal_uitleningen = aantal_uitleningen+1" strsql = strsql & ", actuele_reserveringen = actuele_reserveringen-1" strsql = strsql & " WHERE " & stridentifier & " = " & objcontrols(stridentifier) ExecuteSQL strsql Uitlenen_na_reserveren = True De source code van de object methoden hebben allemaal een zelfde opbouw. Allereerst worden een aantal validaties uitgevoerd. De DefaultValidation voert de validaties uit die betrekking hebben op de eigenschappen van het object en dus altijd geldend zijn. In deze toepassing is de validatie op Niet null kolommen een default validatie. Voordat de SQL opdracht uitgevoerd wordt moet deze check gedaan worden om te voorkomen dat de database inconsistent wordt. Vanzelfsprekend zijn er meerdere domein validaties mogelijk voor de eigenschappen die algemeen geldend zijn. Bijvoorbeeld de keuze uit een lijst van waarden of een bepaalde picture voor de invoer. In deze voorbeeldtoepassing is dit niet van toepassing. Vervolgens worden een aantal specifieke methode validaties uitgevoerd. Bijvoorbeeld bij de methode van het reservering object, waar gekeken wordt wat de huidige status van het object is. Als de reservering niet actief is (status RA) dan heeft het sluiten van de reservering weinig zin. Na de validatie wordt een SQL statement opgebouwd Dit statement bestaat uit een INSERT of een UPDATE statement. Een delete komt niet voor omdat Merode dit ontmoedigt. Bij de opbouw van het SQL statement wordt handig gebruik gemaakt van de Controls collectie afkomstig van het formulier. Hier worden alleen die controls opgevraagd die voor de desbetreffende object methode van belang is. Zo zou het zelfs mogelijk kunnen zijn dat op het scherm meer informatie getoond wordt dan voor het verwerken van de object methoden vereist zijn. In de toepassing met ASP worden de verschillen tussen de formulieren duidelijk gemaakt. Men zou kunnen denken dat deze werkwijze extra werk is ten opzichte van de normale werkwijze in MS-Access waarbij de formulieren rechtstreeks aan een tabel of query gekoppeld worden. Toch heeft deze werkwijze een aantal voordelen die niet mogelijk zijn bij een rechtstreeks koppeling aan een tabel of query. Vanuit een formulier kunnen over meerdere tabellen updates of deletes uitgevoerd worden. Zelfs is het mogelijk, zoals in het uitlenen_na_reserveren event, dat een insert, update en pseudo delete tegelijkertijd uitgevoerd worden.

16 Een ander voordeel is dat gebruik gemaakt wordt van een CASE tool die de source code van de services, events, methoden en database definitie voor je aanmaakt. Aanpassingen en uitbreidingen worden alleen in de CASE tool aangebracht. De overstap van MS-Access naar Visual Basic wordt bijzonder eenvoudig. Een VB toepassing kan vrijwel gelijk opgezet worden als de MS-Access toepassing. #afbreekpunt# Transformatie naar Visual Basic De transformatie van de bibliotheekcase heeft veel overeenkomsten met de MS-Access applicatie. Zo wordt er gewerkt met formulieren die samenwerken met class modules die de gegevens van en naar de database brengen. Echter er zijn een aantal kleine verschillen. Bij MS-Access is de connectie met de database in vergaande mate geïntegreerd. Het opgeven van een tabel of query naam als recordsource van een formulier is voldoende om de gegevens uit deze tabel op het formulier weergegeven te krijgen. In Visual Basic is dit niet standaard aanwezig maar moet het zelf geprogrammeerd worden. Hiertoe wordt gebruik gemaakt van het ADODB com object dat de koppeling met een database mogelijk maakt. Daarnaast wordt geen gebruik gemaakt van de Controls collectie maar van het recordset object dat in ADODB gebruikt wordt. Onderstaande afbeelding geeft een idee van de opzet. Duidelijk is dat de werkwijze erg veel lijkt op die van MS-Access, alleen het ADO object komt tussen de database en de lagenobjecten te liggen. Formulier en servicelaag In dit artikel gaan we niet in op de opzet van menu s en formulieren zoals in VB gebruikelijk is. De wizards van VB genereren source code die geod toegankelijk is. We gaan in dit artikel alleen in op die onderdelen die voor een drie lagen toepassing relevant zijn. Voor de voorbeeld toepassing wordt gebruik gemaakt van het event verlengen. Het geeft weer hoe gegevens gekoppeld kunnen worden, afhankelijk van besturingselementen die al ingevoerd zijn. Het formulier ziet er uit als onderstaande afbeelding. In onderstaande source code wordt een aantal methoden van het formulier verlengen getoond die een illustratie vormen van de werkwijze van het formulier. Zoals gezegd wordt de communicatie tussen de verschillende classe modulen en formulieren niet verzorgd door de controls collectie maar door een recordset object. Het recordset object bevat krachtige mogelijkheden om ervoor te zorgen dat de gegevens uit de database op eenvoudige wijze getoond en bewerkt worden in een formulier. In het form load event worden de gegevens die niet afhankelijk zijn van reeds ingevoerde data opgevraagd uit de servicelaag. In het change event van lidid wordt ervoor gezorgd dat het uileningid besturingselement gevuld wordt met keuzeopties die betrekking hebben op het lid. Dus alleen die uitleningen die betrekking hebben op het gekozen lid. In het click event van de ok button wordt ervoor gezorgd dat het recordset object met de naam van het bijbehorende event naar de service laag gebracht wordt voor verdere bewerking. Private Sub Form_Load() Set objservice = New ServicesLayer cmdok.enabled = False

17 With titelid Set.RowSource = objservice.geef_titels.boundcolumn = "titelid".listfield = "naamtitel" End With With lidid Set.RowSource = objservice.geef_leden.boundcolumn = "lidid".listfield = "naam" End With End Sub Private Sub lidid_change() With uitleningid Set.RowSource = objservice.geef_uitlening_bij_lid(lidid.boundtext).boundcolumn = "uitleningid".listfield = "naamtitel" End With End Sub Private Sub cmdok_click() If objservice.executeevent("verlengen", objrs) Then Unload Me Else MsgBox GetErrorMessage() End If End Sub In de servicelaag is de opzet van de gegevensverstrekkende services eenvoudiger dan in de MS-Access applicatie. Dat is mogelijk omdat er gewerkt kan worden met het recordset object als container voor de gegevens. Als voorbeeld wordt de source code van de geef_titels methode getoond. Voor de connectie met de database wordt gebruik gemaakt van een onnactiemanager. Het statement objcon.openrecordset is een voorbeeld van deze connectiemanager. We komen later uitgebreid terug op de connectionmanager. Van de executeevent methode van de servicelaag wordt geen beschrijving gegeven omdat deze precies hetzelfde is als die in MS-Access. Function Geef_Titels() As Recordset Dim strsql As String Dim objrs As Recordset strsql = "SELECT TITEL.titelid, TITEL.naamtitel, TITEL.isbn FROM TITEL WHERE TITEL.deletedmark=0 " Set objrs = objcon.getrecordset(strsql) Set Geef_Titels = objrs Eventslaag In de eventslaag wordt per object de bijbehorende methode aangeroepen. Verder wordt het afhandelen van de transactie voor de database afgehandeld. Hiervoor wordt weer gebruik gemaakt van de connectiemanager. De source code van het verlengen event toont de opzet van de transactie en het aanroepen van de object methoden. Function Verlengen(objRS As Recordset) As Boolean Dim blnretvalue As Boolean

18 objcon.begintrans blnretvalue = (objexemplaar.verlengen(objrs) And objtitel.verlengen(objrs) And objlid.verlengen(objrs) And objuitlening.verlengen(objrs)) If blnretvalue = False Then objcon.rollbacktrans Else objcon.committrans End If Verlengen = blnretvalue Domein object laag In de class modules van de domein objecten wordt ervoor gezorgd dat de gegevens uit het recordset object gehaald worden en vertaald worden naar een SQL statement ten behoeve van een Insert of update statement. Ook hier wordt slechts één methode getoond omdat de overeenkomst met de MS-Access toepassing groot is. De opbouw is: Uitvoeren van default validaties van de eigenschappen Methode specifieke validaties uitvoeren Opbouwen van het SQL statement Uitvoeren van het SQL statement Ook voor het uitvoeren van het SQL statement wordt gebruik gemaakt van de connectiemanager Function Verlengen(objRS As Recordset) As Boolean Dim blnretvalue As Boolean Dim strsql As String Dim strstatus As String Dim strcurrentstatus As String strcurrentstatus = objcon.getcurrentstatus(strtable, stridentifier, objrs.fields(stridentifier)) strstatus = strcurrentstatus blnretvalue = DefaultValidation(objRS) If blnretvalue = False Then Verlengen = blnretvalue Exit Function End If strsql = "UPDATE UITLENING SET status = " & Set2SQL(strStatus) & " " strsql = strsql & ", " & " verwinleverdatum= " & Set2SQL(objRS.Fields("verwinleverdatum")) strsql = strsql & ", " & " aantalverlengingen= " & Set2SQL(objRS.Fields("aantalverlengingen")) strsql = strsql & " WHERE " & stridentifier & "= " & Set2SQL(objRS.Fields(strIdentifier)) objcon.executesql strsql Verlengen = blnretvalue ConnectionManager In Visual Basic wordt de connectie met databases veelal verzorgt door een ADO com object. Dit object heeft een zeer eenvoudige opzet maar biedt toch alle flexibiliteit die men als ontwikkelaar wenst. Echter voor een aantal aspecten, zoals het werken met transacties vond ik het fijner om een klasse module te maken die een als een interface over het ADO object heen ligt. Zo is het met deze klasse mogelijk om eenmalig in te loggen op de database en een globaal object van de connectiemanager te gebruiken voor alle interactie met de database. In de listing is te zien hoe het mogelijk is eenmalig in te loggen bijvoorbeeld via een inlog formulier naar de database,. In dit voorbeeld wordt niets gedaan met de gebruikersnaam en het wachtwoord. Echter de werking zal duidelijk zijn, de opzet van

19 makeconnection is zo opgezet dat het eenvoudig uitgebreid kan worden. Bijvoorbeeld de controle om te kijken of het inloggen gelukt is. Voor het werken met transacties wordt gebruik gemaakt van een instance variabel die bepaald of een transactie gezet moet worden. Dit vindt plaats in de methode begintrans. Zodra de eerste executesql wordt uitgevoerd wordt de transactie ook gezet. Het bleek dat er een probleem ontstond bij een commit als er geen begintrans gezet was, wat logisch is. In dit voorbeeld wordt gebruik gemaakt van het statement execute van het ADODB object. Veelal kan ook gewerkt worden met OpenRecordset als het statement een select statement bevat. Als laatste methode is te zien hoe de connectie met de database verbroken wordt en het adodb object vernietigt wordt. Door gebruik te maken van de connectiemanager is het versturen van SQL statements eenvoudig. Daarnaast is het erg eenvoudig om te wijzigen van Database, bijvoorbeeld van MS-Access naar SQL server. Ook het overstappen nar stored procedures in plaats van statements is eenvoudig. Dit is mogelijk door het werken met een meerlagen architectuur. De bovenste lagen hoeven geen kennis te hebben van de implementatie op de onderliggende lagen. Private objadoconnection As ADODB.Connection Private blnbegintrans As Boolean Private blntransactionset As Boolean Function MakeConnection(strUser As String, strpassword As String) As Boolean Set objadoconnection = New Connection objadoconnection.cursorlocation = aduseclient objadoconnection.open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=D:\Biebcase\biebcase.mdb;" MakeConnection = True Sub BeginTrans() blnbegintrans = True blntransactionset = False End Sub Sub CommitTrans() If blntransactionset = True Then objadoconnection.committrans End If blnbegintrans = False End Sub Function ExecuteSQL(strSQL As String) As Boolean strsql = strsql + ";" MsgBox strsql If blnbegintrans = True Then objadoconnection.begintrans blntransactionset = True blnbegintrans = False End If objadoconnection.execute strsql ExecuteSQL = True Function KillConnection() ObjAdoConnection.Close Set objadoconnection = Nothing KillConnection = True

20 Transformatie naar ASP Nu er een Visual Basic toepassing bestaat voor de bibliotheek case is de overstap naar een ASP toepassing met een Biebcase COM object klein. Hiertoe wordt de Visual Basic applicatie gekopieerd en aangepast. Zo worden de formulieren uit de toepassing verwijderd en worden een aantal aanpassingen aangebracht zodat alleen de servicelaag, de eventslaag, de domeinobjecten en de connectiemanager overblijven. De interface wordt geimplementeerd in HTML pagina s met een aantal ASP pagina s voor de verwerking van de aanroepen naar de servicelaag. In onderstaande afbeelding is te zien hoe de lagen gebruikt worden. COM Object In het com object is ervoor gezorgd dat de servicelaag de enige laag is die een publieke interface heeft. Alle andere object zijn private. Dit maakt de inkapseling van de onderste lagen compleet. Ze zijn niet eens zichtbaar als het COM object gebruikt wordt. Echter er zijn hierdoor wel een aantal kleine aanpassingen noodzakelijk aan de servicelaag. Zo is het noodzakelijk dat de makeconnection en killconnection van de connectionmanager vanuit de servicelaag aangeroepen kunnen worden. Zie onderstaande listing van de servicelaag. Sub MakeConnection(strName As String, strpassword As String) Set objcon = New ConnectionManager objcon.makeconnection strname, strpassword End Sub Daarnaast moet er iets veranderd worden aan de manier waarop de fouten afgehandeld worden. In de Visual Basic applicatie is het mogelijk om met een MessageBox te melden wat de foutmelding is. Met een COM object en ASP pagina s is dat niet mogelijk. Het COM object draait namelijk op een server en de gebruiker zit achter een client. De message moet dan ook vanuit de servicelaag met behulp van een functie teruggegeven worden aan de ASP pagina. In onderstaande listing de uitwerking van deze methode van de servicelaag. Function GetError() As String GetError = GetErrorMessage() Natuurlijk moet de foutafhandeling in de onderste laag ook aangepast worden met een seterror functie in plaats van de aanroep van een msgbox. Deze aanpassing is triviaal. Verder zijn er geen noemenswaardige wijzigingen nodig aan de VB source code. ASP Pagina s De ASP pagina s bestaan per methode uit twee pagina s een zorgt ervoor dat er een invulformulier getoond wordt, de ander zorgt ervoor dat de gegevens ingevuld in het formulier naar het COM object worden gebracht. Was het eenvoudig om keuzelijsten te gebruiken in een VB toepassing en deze na het wijzigen van een waarde aan te passen, in een ASP pagina met de standaard HTML controls is dit lastiger. Daarom is er in de ASP toepassing voor gekozen zo minimaal mogelijk te werken met keuzelijsten zonder dat dit de werking van de Biebcase toepassing beperkt. Dit bleek goed mogelijk door in de keuzelijst combinaties van waarden te nemen. In de afbeelding is het uitleen formulier te zien. Hier is te zien hoe exemplaar en titelgegevens gecombineerd zijn in een keuzelijst. Door dit te doen is het werken met keuzelijsten die van elkaar afhankelijk zijn tot een minimum beperkt.

21 De source code van dit formulier en het gekoppelde formulier voor de bewerking is hieronder te vinden. In de source code van het formulier is te zien hoe er een connectie wordt gemaakt met het Biebcase com object. Van dit object worden twee gegevensverstrekkende services aangeroepen. Een met een lijst van leden, en een met een lijst van exemplaren, waarbij de titel van het exemplaar ook getoond wordt. Omdat gebruik gemaakt wordt van de recordset als container object is de achterliggende SQL opdracht niet zichtbaar in de Recordset op de HTML pagina. Het is hierdoor dus mogelijk om in de onderste lagen alsnog veranderingen aan te brengen, bijvoorbeeld in de wijze van opslag van de tabellen. De gegevens van de recordset worden met behulp van response.write weggeschreven naar de HTML pagina die opgebouwd wordt. Hierdoor is aan de gegenereerde HTML pagina niet te zien wat de onderliggende source code is. <HTML> <link REL="stylesheet" TYPE="text/css" href="biebcase.css"> <HEAD> <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> <TITLE></TITLE> </HEAD> <BODY> <% dim objbiebcase dim objrs set objbiebcase = Server.CreateObject("Biebcase.Serviceslayer") objbiebcase.makeconnection "", "" %> <FORM action="uitlenen.asp" id=form1 method=post name=form1> <H1 align=center>uitlenen</h1> <P> <TABLE> <tr> <td>lid</td> <td><select name="lidid" size="1" id="lidid" style="height: 22px; WIDTH: 158px"> <% set objrs = objbiebcase.geef_leden While not objrs.eof Ressponse.Write("<option value=" & chr(34) & _

22 objrs.fields("lidid") & chr(34) & _ ">" & objrs.fields("naam") & "</option>") objrs.movenext() Wend set objrs = Nothing %> </select> </td> </tr> <tr> <td>exemplaar</td> <td><select name="exemplaarid" size="1" id="exemplaarid" style="height: 22px; WIDTH: 300px"> <% set objrs = objbiebcase.geef_actieve_exemplaren("ei") While not objrs.eof Response.Write("<option value=" & chr(34) & _ objrs.fields("exemplaarid") & _ chr(34) & ">" & objrs.fields("exemplaartitel") & _ "</option>") objrs.movenext() Wend set objrs = Nothing %> </select> </td> </tr>.. </TABLE></P> <% objbiebcase.killconnection set objbiebcase = nothing %> <P> </P></FORM> </BODY> </HTML> In het ASP formulier dat aangeroepen wordt als op de opslaan knop gedrukt wordt is alleen ASP code opgenomen. Deze code zorgt ervoor dat er een recordset en een eventnaam naar de methode executeevent van de servicelaag gestuurd wordt. Omdat we zo spaarzaam mogelijk zijn omgegaan met de keuzelijsten is het nodig om een aantal gegevens expliciet met een Geef_ methode op te vragen, in deze methode is dat met de methode Geef_titel_bij_exemplaar. Is de recordset compleet dan wordt een ASP hulp procedure aangeroepen die ervoor zorgt dat de juiste form controls gekoppeld worden aan de juiste field properties van de recordset. Vervolgens wordt het executeevent aangeroepen die ervoor zorgt dat de gegevens worden opgeslagen in de database. Is er een fout opgetreden dan wordt met de hulp procedure aangeroepen die de geterror methode van de servicelaag op correcte wijze toont op een HTML pagina. <%@ Language=VBScript %> <!--#INCLUDE FILE="funclib.asp" --> <% dim objbiebcase dim objrs dim objrshlp dim lidid dim exemplaarid Set objbiebcase = CreateObject("Biebcase.Serviceslayer") objbiebcase.makeconnection "", "" set objrs = Server.CreateObject("adodb.recordset") set objrs = objbiebcase.geef_uitlening(0) exemplaarid = Request.Form("exemplaarid") set objrshlp = objbiebcase.geef_titel_bij_exemplaar(exemplaarid) objrs.addnew objrs.fields("titelid") = objrshlp.fields("titelid") set objrshlp = nothing Call ProcessFields(objRS)

Het toepassen van een gelaagde architectuur

Het toepassen van een gelaagde architectuur Het toepassen van een gelaagde architectuur Bijlagen Bert Dingemans www.via-nova-architectura.org August 2007 1 Bijlage 1: SQL-script als voorbeeld CREATE TABLE EXEMPLAAR ( aanschafdatum DateTime, druk

Nadere informatie

Kenmerken van DLArchitect

Kenmerken van DLArchitect Kenmerken van DLArchitect Bert Dingemans, e-mail : bert@dla-os.nl www : http://www.dla-os.nl 1 Inhoud KENMERKEN VAN DLARCHITECT... 1 INHOUD... 2 INLEIDING... 3 ARCHITECTUUR... 3 Merode... 3 Methode en

Nadere informatie

Sparse columns in SQL server 2008

Sparse columns in SQL server 2008 Sparse columns in SQL server 2008 Object persistentie eenvoudig gemaakt Bert Dingemans, e-mail : info@dla-os.nl www : http:// 1 Content SPARSE COLUMNS IN SQL SERVER 2008... 1 OBJECT PERSISTENTIE EENVOUDIG

Nadere informatie

Toegepaste notatiewijzen DLA software

Toegepaste notatiewijzen DLA software Toegepaste notatiewijzen DLA software Bert Dingemans info@dla-architect.nl Inleiding In de DLA Software wordt gebruik gemaakt van een aantal notatiewijzen voor het opstellen van een object- en procesmodel.

Nadere informatie

Een Data Driven toepassing op basis van Visual Objects en SQL Server

Een Data Driven toepassing op basis van Visual Objects en SQL Server Een Data Driven toepassing op basis van Visual Objects en SQL Server Door Bert Dingemans www.dla-architect.nl Inleiding In voorgaande artikelen heb ik een aantal onderwerpen belicht die ten grondslag liggen

Nadere informatie

NHibernate als ORM oplossing

NHibernate als ORM oplossing NHibernate als ORM oplossing Weg met de SQL Queries Wat is ORM? ORM staat in dit geval voor Object Relational Mapping, niet te verwarren met Object Role Modeling. ORM vertaalt een objectmodel naar een

Nadere informatie

Dynamiek met VO-Script

Dynamiek met VO-Script Dynamiek met VO-Script Door Bert Dingemans DLA Ontwerp & Software bert@dla-architect.nl Inleiding Op de SDGN nieuwsgroep voor Visual Objects ontstond laatst een draad van berichten over de nieuwe libraries

Nadere informatie

Fun met webparts in ASP.Net

Fun met webparts in ASP.Net Fun met webparts in ASP.Net Deel 2:User controls en Webparts door Bert Dingemans, e-mail : info@dla-os.nl www : http:// 1 Inhoudsopgave FUN MET WEBPARTS IN ASP.NET... 1 DEEL 2:USER CONTROLS EN WEBPARTS...

Nadere informatie

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. SQL manipulatietaal We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: INSERT : toevoegen van gegevens DELETE : verwijderen van gegevens UPDATE : wijzigen van gegevens

Nadere informatie

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd. BASISINSTRUCTIES SQL SQL : Structured Query Language is een taal gericht op het ondervragen van een relationele database en die aan veel klassieke databasemanagementsystemen kan worden gekoppeld. SQL is

Nadere informatie

Canonieke Data Modellering op basis van ArchiMate. Canonieke Data Modellering op basis van Archimate Bert Dingemans

Canonieke Data Modellering op basis van ArchiMate. Canonieke Data Modellering op basis van Archimate Bert Dingemans Canonieke Data Modellering op basis van ArchiMate Canonieke Data Modellering op basis van Archimate Bert Dingemans Abstract Modelleren op basis van de open standard ArchiMate is een goed uitgangspunt voor

Nadere informatie

6. Het maken van een database

6. Het maken van een database 6. Het maken van een database 6.1. Inleiding In hoofdstuk 5 heb je de oefendatabase gemaakt doormiddel van een script. In dit hoofdstuk ga je zelf een database maken en deze vullen met tabellen. Hiervoor

Nadere informatie

Access voor beginners - hoofdstuk 25

Access voor beginners - hoofdstuk 25 Access voor beginners - hoofdstuk 25 Handleiding van Auteur: OctaFish Oktober 2014 Werken met Klassemodules Tot nu toe heb ik in de cursus Access veel gewerkt met formulieren, en met procedures en functies.

Nadere informatie

Archimate risico extensies modelleren

Archimate risico extensies modelleren Archimate risico extensies modelleren Notatiewijzen van risico analyses op basis van checklists versie 0.2 Bert Dingemans 1 Inleiding Risico s zijn een extra dimensie bij het uitwerken van een architectuur.

Nadere informatie

DATAMODELLERING ER DIAGRAM

DATAMODELLERING ER DIAGRAM DATAMODELLERING ER DIAGRAM Inleiding In dit whitepaper wordt de datamodelleervorm ER diagram beschreven. Deze modelleervorm staat in verhouding tot een aantal andere modelleervormen. Wil je een beeld krijgen

Nadere informatie

Tools voor canonieke datamodellering Bert Dingemans

Tools voor canonieke datamodellering Bert Dingemans Tools voor canonieke datamodellering Tools voor canonieke datamodellering Bert Dingemans Abstract Canonieke modellen worden al snel omvangrijk en complex te beheren. Dit whitepaper beschrijft een werkwijze

Nadere informatie

Technisch Ontwerp W e b s i t e W O S I

Technisch Ontwerp W e b s i t e W O S I Technisch Ontwerp W e b s i t e W O S I WOSI Ruud Jungbacker en Michael de Vries - Technisch ontwerp Website Document historie Versie(s) Versie Datum Status Omschrijving / wijzigingen 0.1 20 nov 2008 Concept

Nadere informatie

Naam project Lost And Found Animals Lokaal gehost Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50%

Naam project Lost And Found Animals Lokaal gehost Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50% Naam project Lost And Found Animals Url Lokaal gehost Groepsleden Percentage van het totaal geleverde werk 1 Cindy Jansen 50% 2 Eline Steyvers 50% 1. Beveiliging in de toepassing Naam gebruiker Wachtwoord

Nadere informatie

Systeemontwikkeling, Hoofdstuk 4, Tabellen maken in MS Access 2010

Systeemontwikkeling, Hoofdstuk 4, Tabellen maken in MS Access 2010 4 Tabellen maken in MS Access In dit hoofdstuk starten we met de bouw van ons informatiesysteem met de belangrijkste bouwstenen: de tabellen. 4.1 Starten met MS Access Als je het programma Microsoft Access

Nadere informatie

MA!N Rapportages en Analyses

MA!N Rapportages en Analyses MA!N Rapportages en Analyses Auteur Versie CE-iT 1.2 Inhoud 1 Inleiding... 3 2 Microsoft Excel Pivot analyses... 4 2.1 Verbinding met database... 4 2.2 Data analyseren... 5 2.3 Analyses verversen... 6

Nadere informatie

DATAMODELLERING BASIS UML KLASSEMODEL

DATAMODELLERING BASIS UML KLASSEMODEL DATAMODELLERING BASIS UML KLASSEMODEL Inleiding In dit whitepaper wordt de datamodelleervorm basis UML klassemodel beschreven. Deze modelleervorm staat in verhouding tot een aantal andere modelleervormen.

Nadere informatie

Secure Application Roles

Secure Application Roles Secure Application Roles Beheer de toegang tot de database 1. Inleiding Het realiseren van geautoriseerde toegang tot een database lijkt eenvoudig. Echter, vaak blijkt dat dezelfde combinatie van gebruikersnaam

Nadere informatie

Informatie & Databases

Informatie & Databases Informatie Wat is informatie en waaruit het bestaat? Stel op een kaart staat het getal 37 geschreven. Wat kun je dan zeggen van het cijfer 37? Niets bijzonders, toch? Alleen dat het een getal is. Gaat

Nadere informatie

Technische nota AbiFire Rapporten maken via ODBC

Technische nota AbiFire Rapporten maken via ODBC Technische nota AbiFire Rapporten maken via ODBC Laatste revisie: 23 januari 2018 Inhoudsopgave 1 Inleiding... 2 2 Systeeminstellingen in AbiFire... 3 2.1 Aanmaken extern profiel... 3 2.2 Toewijzing extern

Nadere informatie

Een interactie dictionary in ASP.Net

Een interactie dictionary in ASP.Net Een interactie dictionary in ASP.Net Bert Dingemans http://www.dla-os.nl bert@dla-architect.nl 1 Een interactie dictionary in ASP.NET Inleiding Binnen veel informatiesystemen zijn data dictionaries niet

Nadere informatie

Het omzetten van een ER-diagram naar SQL

Het omzetten van een ER-diagram naar SQL Het omzetten van een ER-diagram naar SQL Huub de Beer Eindhoven, 4 juni 2011 Omzetting ER-diagram naar SQL in twee stappen 1: ER-Diagram relationeel model Onderwerp van hoofdstuk 3 Entiteittype relatie,

Nadere informatie

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1 DATAMODEL SQL Middelbare School Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1 INHOUDSOPGAVE 1. Informatiedomein 3 1.1 Informatiedomein 3 1.2 Toepassingen 3 2.

Nadere informatie

SQL datadefinitietaal

SQL datadefinitietaal SQL datadefinitietaal We kunnen er het schema van de database mee bepalen: metadata toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: CREATE : toevoegen van metagegevens DROP : verwijderen

Nadere informatie

Eindtoets. Opgaven. 1 Gegeven is het domeinmodel van figuur 1. Domeinmodel voor betalingen. Eindtoets I N T R O D U C T I E.

Eindtoets. Opgaven. 1 Gegeven is het domeinmodel van figuur 1. Domeinmodel voor betalingen. Eindtoets I N T R O D U C T I E. Eindtoets I N T R O D U C T I E Deze eindtoets is bedoeld als voorbereiding op het tentamen. Het is belangrijk dat u de eindtoets pas probeert te maken op het moment dat u denkt klaar te zijn met de tentamenvoorbereiding.

Nadere informatie

Verslag. Projectteam: 107 Datum: 16 oktober 2008 Project leden: Lennard Fonteijn Harish Marhe Nicoletta Saba Turgay Saruhan Robin Tummers

Verslag. Projectteam: 107 Datum: 16 oktober 2008 Project leden: Lennard Fonteijn Harish Marhe Nicoletta Saba Turgay Saruhan Robin Tummers Verslag SE Projectteam: 107 Datum: 16 oktober 2008 Project leden: Lennard Fonteijn Harish Marhe Nicoletta Saba Turgay Saruhan Robin Tummers In dit verslag zullen wij een beschrijving geven, over welke

Nadere informatie

Data Definition Language

Data Definition Language Data Definition Language We gaan hier dezelfde database gebruiken als in de vorige les. Nu gaan we deze echter maken met behulp van DDL gedeelte van SQL. Om in het SQL deel van Microsoft Access te komen

Nadere informatie

Na bestudering van dit hoofdstuk, moet je tot het volgende in staat zijn:

Na bestudering van dit hoofdstuk, moet je tot het volgende in staat zijn: 5. De oefendatabase 5.1. Inleiding In de volgende hoofdstukken ga je oefenen / werken met SQL. Om te kunnen oefenen heb je natuurlijk wel een database nodig. In dit hoofdstuk wordt besproken hoe je deze

Nadere informatie

Formulieren maken met Dreamweaver CS 4/CS 5

Formulieren maken met Dreamweaver CS 4/CS 5 Formulieren maken met Dreamweaver CS 4/CS 5 In deze handleiding leer je om een formulier en elementen die je binnen een formulier kunt gebruiken, te ontwerpen met Dreamweaver. Het uitgangspunt is dat dit

Nadere informatie

Zonnepanelen Hoe krijg je de data op je website?

Zonnepanelen Hoe krijg je de data op je website? Zonnepanelen Hoe krijg je de data op je website? Beste website-bezoeker, Omdat ik al heel wat vragen kreeg over het gedeelte zonne-energie op mijn website, heb ik besloten om de werkwijze die ik gevolgd

Nadere informatie

Les 15 : updaten van gegevens in de database (deel2).

Les 15 : updaten van gegevens in de database (deel2). Les 15 : updaten van gegevens in de database (deel2). In de volgende reeks lessen zal alle vorige leerstof uitgebreid aan het bod komen. Zie ook de vorige lessen en documenten om informatie op te zoeken

Nadere informatie

Macro s. 4.2 Een macro maken

Macro s. 4.2 Een macro maken 4.2 Een macro maken Een macro is een reeks van commando s die u kunt maken en die een programma uitvoeren. Wanneer u de macro in zijn geheel uitvoert, dan worden de acties opeenvolgend uitgevoerd. Elk

Nadere informatie

3.4 Een Hoofd/subformulier maken zonder de hulp van de wizard.

3.4 Een Hoofd/subformulier maken zonder de hulp van de wizard. 3.4 Een Hoofd/subformulier maken zonder de hulp van de wizard. U kunt natuurlijk ook zonder een wizard een hoofd/subformulier maken. U heeft dan meer vrijheid in het ontwerp. In grote lijnen dient u dan

Nadere informatie

Koppeling met een database

Koppeling met een database PHP en MySQL Koppeling met een database 11.1 Inleiding In PHP is het eenvoudig om een koppeling te maken met een database. Een database kan diverse gegevens bewaren die met PHP aangeroepen en/of bewerkt

Nadere informatie

Automatische Overgangen instellen

Automatische Overgangen instellen Automatische Overgangen instellen In i-reserve is het mogelijk gestandaardiseerde e-mails te verzenden. Gestandaardiseerde mails zijn gebaseerd op e-mail templates, deze mails kunnen gekoppeld worden aan

Nadere informatie

Databases - Inleiding

Databases - Inleiding Databases Databases - Inleiding Een database is een verzameling van een aantal gegevens over een bepaald onderwerp: een ledenbestand van een vereniging, een forum, login gegevens. In een database worden

Nadere informatie

Offective > CRM > Vragenlijst

Offective > CRM > Vragenlijst Offective > CRM > Vragenlijst Onder het menu item CRM is een generieke vragenlijst module beschikbaar, hier kunt u zeer uitgebreide vragenlijst(en) maken, indien gewenst met afhankelijkheden. Om te beginnen

Nadere informatie

ACCEPETEREN RESERVERING

ACCEPETEREN RESERVERING E-mail Templates In i-reserve is het mogelijk gestandaardiseerde e-mails te verzenden. Het verzenden van dergelijke mails kan volledig worden geautomatiseerd: u maakt dan gebruik van zogenaamde automatische

Nadere informatie

Elfde-Liniestraat 24 3500 Hasselt Schooljaar 2009-2010 TINFO POKER GAME Oracle Scripts

Elfde-Liniestraat 24 3500 Hasselt Schooljaar 2009-2010 TINFO POKER GAME Oracle Scripts Elfde-Liniestraat 24 3500 Hasselt Schooljaar 2009-2010 TINFO POKER GAME Oracle Scripts Studenten: Peter Asnong Rik Broens Tom De Keyser Daan Gielen Kris Gregoire Koen Olaerts Toon Wouters Inhoudsopgave

Nadere informatie

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel:

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel: Eenvoudig voorbeeld. Er wordt verondersteld dat er met VS 2008 EXPRESS gewerkt wordt. Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel: (Sommige schermafdrukken zijn afkomstig

Nadere informatie

Hoofdstuk 4: Nieuwe objecten

Hoofdstuk 4: Nieuwe objecten Programmeren in Microsoft Visual Basic 2010 Express, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Vespucci College, Marnix Gymnasium Rotterdam, december 2011 Hoofdstuk

Nadere informatie

Powerpoint presentatie College 5 Gilbert van Lierop & Farshad Salamat

Powerpoint presentatie College 5 Gilbert van Lierop & Farshad Salamat Powerpoint presentatie College 5 Gilbert van Lierop & Farshad Salamat Wat is een database? Een verzameling van georganiseerde data Een database bestaat uit applicaties, SQL en het DBMS Watis eendbms? EenDBMS

Nadere informatie

DATAMODELLERING DATA MAPPING MODEL

DATAMODELLERING DATA MAPPING MODEL DATAMODELLERING DATA MAPPING MODEL Inleiding In dit whitepaper wordt de datamodelleervorm data mapping model beschreven. Deze modelleervorm staat in verhouding tot een aantal andere modelleervormen. Wil

Nadere informatie

Auteur Arjaan den Ouden Datum 4 december 2013 Status Definitief Versie 1.0

Auteur Arjaan den Ouden Datum 4 december 2013 Status Definitief Versie 1.0 Auteur Arjaan den Ouden Datum 4 december 2013 Status Definitief Versie 1.0 Behoudens uitzondering door de wet gesteld, mag zonder schriftelijke toestemming van de rechthebbende op het auteursrecht van

Nadere informatie

6.3 VBA Syntax Instructie. Wij gaan de Visual Basic Editor opnieuw openen, om de instructie die wij zojuist getypt hebben, nader te bekijken.

6.3 VBA Syntax Instructie. Wij gaan de Visual Basic Editor opnieuw openen, om de instructie die wij zojuist getypt hebben, nader te bekijken. 6.3 VBA Syntax Wij gaan de Visual Basic Editor opnieuw openen, om de instructie die wij zojuist getypt hebben, nader te bekijken. Klik te tab Hulpmiddelen voor databases Klik in het groepsvak Macro op

Nadere informatie

Genereren van een webapplicatie op basis van DLA

Genereren van een webapplicatie op basis van DLA Genereren van een webapplicatie op basis van DLA ir Bert Dingemans DLA Ontwerp en Software info@dla-architect.nl Inleiding Bij het ontwikkelen van maatwerk software loopt men al snel tegen het probleem

Nadere informatie

Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren

Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren Om eens wat ervaring op te doen met de Windows Azure Marketplace heb ik een publieke en gratis databron gekozen

Nadere informatie

INSTALLATIE EXCHANGE CONNECTOR

INSTALLATIE EXCHANGE CONNECTOR HANDLEIDING INSTALLATIE EXCHANGE CONNECTOR INSTALLATIE EXCHANGE CONNECTOR 0 0 HANDLEIDING INSTALLATIE EXCHANGE CONNECTOR INSTALLATIE EXCHANGE CONNECTOR HANDLEIDING datum: 10-08-2018 1 Inleiding... 1 2

Nadere informatie

Handleiding dashboard. 3WA SaaS platform

Handleiding dashboard. 3WA SaaS platform Handleiding dashboard 3WA SaaS platform 151021 versie 1.0.2 Inhoud Inloggen... 3 Menu... 4 Algemeen... 5 Beginscherm... 5 Toevoegen widget aan dashboard... 5 Overige functionaliteiten bij widgets... 8

Nadere informatie

6.2 VBA Syntax. Inleiding Visual Basic

6.2 VBA Syntax. Inleiding Visual Basic 6.2 VBA Syntax Wij gaan de Visual Basic Editor opnieuw openen, om de instructie die wij zojuist getypt hebben, nader te bekijken. Klik te tab Hulpmiddelen voor databases Klik op Maken Macro s en Code -

Nadere informatie

Een eerste applicatie

Een eerste applicatie Een eerste applicatie 2.1 Inleiding Programmeren in Visual Basic.NET doe je niet alleen door regels met code te schrijven. Je begint met het ontwerpen van een venster in de design mode met allerlei controls,

Nadere informatie

Werken met Recordsets (deel 1)

Werken met Recordsets (deel 1) Werken met Recordsets (deel 1) Al een aantal keren heb ik aangegeven dat ik het in de cursus zou gaan hebben over het koppelen van een Front-end database aan een Backend middels Recordsets. En daar ga

Nadere informatie

Handleiding helpdesk. Datum: 08-10-2014 Versie: 1.0 Auteur: Inge van Sark

Handleiding helpdesk. Datum: 08-10-2014 Versie: 1.0 Auteur: Inge van Sark Datum: 08-10-2014 Versie: 1.0 Auteur: Inge van Sark Inhoudsopgave Inhoudsopgave... 2 1. Beheer helpdesk... 3 1.1. Settings... 3 1.2. Applicaties... 4 1.3. Prioriteiten... 5 1.4. Gebruik mailtemplates...

Nadere informatie

Trainingsomschrijving ACCESS 97 / 2000 / 2003NL

Trainingsomschrijving ACCESS 97 / 2000 / 2003NL Module 1 Inleiding Module 2 Ontwerpen van tabellen Module 3 Relationele databases en queries Module 4 Formulieren en rapporten Module 5 Geav. formulieren en rapporten Module 6 Macro s en menu s Module

Nadere informatie

In het CMS is het mogelijk om formulieren aan te maken. Voorafgaand een belangrijke tip:

In het CMS is het mogelijk om formulieren aan te maken. Voorafgaand een belangrijke tip: FORMULIEREN In het CMS is het mogelijk om formulieren aan te maken. Voorafgaand een belangrijke tip: belangrijk Importeer formulierdata uit een CSV-bestand precies zoals verderop beschreven. 1. Gedrag

Nadere informatie

AFO 139 Automatische export

AFO 139 Automatische export AFO 139 Automatische export 139.1 Inleiding Vubis Smart beschikt over de mogelijkheid om volledig automatisch beschrijvingen te exporteren naar bestanden op de server. Andere bibliotheken (ongeacht of

Nadere informatie

Hoofdstuk 7: Werken met arrays

Hoofdstuk 7: Werken met arrays Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, januari 2004 Hoofdstuk 7: Werken met arrays 7.0 Leerdoel

Nadere informatie

DATAMODELLERING BEGRIPPENBOOM

DATAMODELLERING BEGRIPPENBOOM DATAMODELLERING BEGRIPPENBOOM Inleiding In dit whitepaper wordt de datamodelleervorm begrippenboom inclusief de begrippenlijst beschreven. Deze modelleervorm staat in verhouding tot een aantal andere modelleervormen.

Nadere informatie

[TOETS SQL INLEIDING]

[TOETS SQL INLEIDING] 2011 ROC ter AA afdeling T&T Team ICT Toets SQL Inleiding Duur: 100 minuten Hulpmiddelen: Alleen Pen en Papier Er is één voorblad en vijf opgaven pagina s. Normering: Deel I: 14 punten (7x2 Deel II: 10

Nadere informatie

Variabelen en statements in ActionScript

Variabelen en statements in ActionScript Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer

Nadere informatie

Technische nota AbiFire5 Rapporten maken via ODBC

Technische nota AbiFire5 Rapporten maken via ODBC Technische nota AbiFire5 Rapporten maken via ODBC Laatste revisie: 29 juli 2009 Inhoudsopgave Inleiding... 2 1 Installatie ODBC driver... 2 2 Systeeminstellingen in AbiFire5... 3 2.1 Aanmaken extern profiel...

Nadere informatie

Foutcontrole met Javascript

Foutcontrole met Javascript Foutcontrole met Javascript Pol Van Dingenen Yannick Van Hauwe INLEIDING Het controleren van de gegevens die ingevuld zijn in formulieren is heel erg belangrijk. In de praktijk is enkel en alleen controle

Nadere informatie

PHP-OPDRACHT SITE BOUWEN

PHP-OPDRACHT SITE BOUWEN PHP-OPDRACHT SITE BOUWEN PERIODE 4 LEERJAAR 1 Opleiding: Duur: Applicatieontwikkelaar 1 onderwijsperiode (4-8 weken) Voorkennis: Basiscursus PHP 5.4 Victor Peters (978 90 125 8499 9) Basiscursus XHTML,

Nadere informatie

Toon TITEL, JAAR en PLATVORM van GAMES die voor het jaar 2000 uitkwamen op Nintendo 64

Toon TITEL, JAAR en PLATVORM van GAMES die voor het jaar 2000 uitkwamen op Nintendo 64 Klas Veldnaam Datatype Lengte KLASNAAM Short Text 3 Characters JONGENS Number Integer MEISJES Number Integer Lessen Veldnaam Datatype Lengte KLASNAAM Short Text 3 Characters DOCCODE Short Text 3 Characters

Nadere informatie

Hoofdstuk 9: Menu s toevoegen

Hoofdstuk 9: Menu s toevoegen Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, maart 2005 Hoofdstuk 9: Menu s toevoegen 9.0 Leerdoel

Nadere informatie

Van een ER-diagram naar een database specificatie in SQL

Van een ER-diagram naar een database specificatie in SQL Van een ER-diagram naar een database specificatie in SQL Huub de Beer Eindhoven, 4 juni 2011 Inhoudsopgave 1 Inleiding 1 2 Van een ER-diagram naar het relationele model 1 3 Van relationeel model naar SQL

Nadere informatie

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd. SQL Inleiding relationele databases DBMS DataBase Management System!hiërarchische databases.!netwerk databases.!relationele databases.!semantische databases.!object oriënted databases. Relationele databases

Nadere informatie

case: toestandsdiagrammen

case: toestandsdiagrammen Hoofdstuk 13 case: toestandsdiagrammen In dit hoofdstuk wordt het maken van de eerste versie van de toestandsdiagrammen voor het boodschappensysteem van Hans en Jacqueline uitgewerkt. 13.1 Vind klassen

Nadere informatie

Ontwerp van Informatiesystemen

Ontwerp van Informatiesystemen 1ste bach HIB Ontwerp van Informatiesystemen Prof. Verelst Q www.quickprinter.be uickprinter Koningstraat 13 2000 Antwerpen 112 2,50 Online samenvattingen kopen via www.quickprintershop.be Table of Contents

Nadere informatie

Handleiding competitie.nevobo.nl

Handleiding competitie.nevobo.nl De competitiewebsite, welke via http://competitie.nevobo.nl/ te bereiken is, wordt steeds belangrijker in de volleybalcompetities van de Nevobo. In dit document vindt u informatie over de werking van deze

Nadere informatie

Dynamische gebruikersbeslissingen in SAP Workflow

Dynamische gebruikersbeslissingen in SAP Workflow Dynamische gebruikersbeslissingen in SAP Workflow Inleiding Een gebruikersbeslissing in een SAP Workflow definitie biedt de mogelijkheid om een optiescherm aan de gebruiker aan te bieden. Hiermee kan de

Nadere informatie

DATAMODELLERING ARCHIMATE DATA- & APPLICATIEMODELLERING

DATAMODELLERING ARCHIMATE DATA- & APPLICATIEMODELLERING DATAMODELLERING ARCHIMATE DATA- & APPLICATIEMODELLERING Inleiding In dit whitepaper wordt de datamodelleervorm ArchiMate data- & applicatiemodellering beschreven. Deze modelleervorm staat in verhouding

Nadere informatie

Handleiding. CardAccess Database Utility CA4000. Aanvullende informatie. Versie: 1.0

Handleiding. CardAccess Database Utility CA4000. Aanvullende informatie. Versie: 1.0 Handleiding CardAccess Database Utility CA4000 Aanvullende informatie Versie: 1.0 Algemene informatie Wijzigingen voorbehouden. Kijk op onze support site http://support.aras.nl/ voor actueel nieuws en

Nadere informatie

Access. Module 0. Access, versie 97 (UK) Nummer: 012 (11062002) The Courseware Company

Access. Module 0. Access, versie 97 (UK) Nummer: 012 (11062002) The Courseware Company Access Module 0 Access, versie 97 (UK) Nummer: 012 (11062002) Niets van deze uitgave mag verveelvoudigd worden en/of openbaar worden gemaakt door middel van druk, fotokopie, microfilm of op welke andere

Nadere informatie

Handleiding Reinder.NET.Tasks.SQL versie 2

Handleiding Reinder.NET.Tasks.SQL versie 2 Handleiding Reinder.NET.Tasks.SQL versie 2 Reinder Stolte Tramstraat 33 8771RR Nijland Inhoudsopgave 1 Algemeen... 2 2 Installeren en configureren... 3 3 Taken instellen... 4 3.1 Taskname (Taaknaam) verplicht

Nadere informatie

Hoofdstuk 4: Nieuwe objecten

Hoofdstuk 4: Nieuwe objecten Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, maart 2001 Hoofdstuk 4: Nieuwe objecten 4.0 Leerdoel

Nadere informatie

Instructie Beheren Cases

Instructie Beheren Cases Instructie Beheren Cases Om een vraag in te dienen met betrekking tot de werking van de software kunt u gebruik maken van onze portal. U gaat dan een Case aanmaken. Aanmaken Case Om een nieuwe case aan

Nadere informatie

VAN HET PROGRAMMEREN. Inleiding

VAN HET PROGRAMMEREN. Inleiding OVERZICHT VAN HET PROGRAMMEREN Inleiding Als je leert programmeren lijkt het nogal overweldigend om die eerste stappen te doorworstelen. Er zijn dan ook heel wat programmeertalen (Java, Ruby, Python, Perl,

Nadere informatie

DrICTVoip.dll v 2.1 Informatie en handleiding

DrICTVoip.dll v 2.1 Informatie en handleiding DrICTVoip.dll v 2.1 Informatie en handleiding Nieuw in deze versie : Koppeling voor web gebaseerde toepassingen (DrICTVoIPwebClient.exe) (zie hoofdstuk 8) 1. Inleiding Met de DrICTVoIP.DLL maakt u uw software

Nadere informatie

Systeemontwikkeling, Hoofdstuk 6, Query s, macro s en rapporten in MS Access 2010

Systeemontwikkeling, Hoofdstuk 6, Query s, macro s en rapporten in MS Access 2010 6. Query s, macro s en rapporten In dit hoofdstuk zetten we de puntjes op de i. Alle processen zullen in de aangemaakte formulieren met de gebruikersmenu s van de secretaris, penningmeester en wedstrijdsecretaris,

Nadere informatie

Een website maken met databasetoegang.

Een website maken met databasetoegang. Hoofdstuk 5 Een website maken met databasetoegang. In dit hoofdstuk gaan we het weblog dat je in hoofdstuk 4 hebt gemaakt verder uitbreiden. Een belangrijk onderdeel wordt toegevoegd aan de applicatie,

Nadere informatie

Mijn eerste ADO.NET applicatie

Mijn eerste ADO.NET applicatie Hoofdstuk 2 Mijn eerste ADO.NET applicatie ADO staat voor ActiveX Database Objects. Dit is een verzameling klassen die onderdeel uitmaken van het.net framework, waarmee je verbinding kunt maken met een

Nadere informatie

Query SQL Boekje. Fredrik Hamer

Query SQL Boekje. Fredrik Hamer Query SQL Boekje Query SQL Boekje Fredrik Hamer Schrijver: Fredrik Hamer Coverontwerp: Fredrik Hamer ISBN: 9789402162103 Fredrik Hamer Inhoudsopgave A. Aanhef bepalen 17 Aantal 18 Aantal dagen tussen

Nadere informatie

Handleiding voor de applicatiebeheerder van Business Assistent

Handleiding voor de applicatiebeheerder van Business Assistent Handleiding voor de applicatiebeheerder van Business Assistent Wijzigingsgeschiedenis Versie Datum Omschrijving Status 0.1 02-10-2014 Eerste opzet van het installatie Concept document. 0.2 14-10-2014 Lezerscorrectie

Nadere informatie

ideal Betaal Formulier (Ondersteund o.a. ideal, MisterCash, Direct E-Banking en Credit Card)

ideal Betaal Formulier (Ondersteund o.a. ideal, MisterCash, Direct E-Banking en Credit Card) Script: Versie: 0.5 Licentie: ideal Betaal Formulier (Ondersteund o.a. ideal, MisterCash, Direct E-Banking en Credit Card) Gratis te gebruiken door (erkende) goede doelen. 200,00 excl. BTW voor aanschaf

Nadere informatie

Release notes:

Release notes: Applicatie: Alle Module: Algemeen (geen specifieke module) 62528 Statuslogs - contactpersoon - medewerker koppelingen Gecorrigeerde functionaliteit Voor de verschillende status logs is de medewerker /

Nadere informatie

Object Oriented Programming

Object Oriented Programming Object Oriented Programming voor webapplicaties Door Edwin Vlieg Waarom OOP? Basis uitleg over OOP Design Patterns ActiveRecord Model View Controller Extra informatie Vragen OOP Object Oriented Programming

Nadere informatie

Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet.

Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet. Hoofdstuk 2 Een ASP.NET applicatie met ADO.NET opzetten In dit hoofdstuk ga je een eenvoudige website opzetten, waarbij je een aantal gegevens uit een database ophaalt. Je moet je kennis van ADO.NET dus

Nadere informatie

Werken op afstand via internet

Werken op afstand via internet HOOFDSTUK 12 Werken op afstand via internet In dit hoofdstuk wordt uitgelegd wat er nodig is om op afstand met de ROS artikel database te kunnen werken. Alle benodigde programma s kunnen worden gedownload

Nadere informatie

AFO 142 Titel Aanwinsten Geschiedenis

AFO 142 Titel Aanwinsten Geschiedenis AFO 142 Titel Aanwinsten Geschiedenis 142.1 Inleiding Titel Aanwinsten Geschiedenis wordt gebruikt om toevoegingen en verwijderingen van bepaalde locaties door te geven aan een centrale catalogus instantie.

Nadere informatie

Algemeen. Beschrijving LA5 Systeembeheer. Administratieve applicaties voor tankstation en oliehandel. versie 5.2

Algemeen. Beschrijving LA5 Systeembeheer. Administratieve applicaties voor tankstation en oliehandel. versie 5.2 versie 5.2 Administratieve applicaties voor tankstation en oliehandel 1 Inleiding 2 Eerste keer opstarten 3 Beheren administraties 4 Kopieren rechten 1 6 Beheren groepen 7 Beheren gebruikers 10 Gebruikersrechten

Nadere informatie

SQL STATEMENTS. Deze kolom kan grote stukken tekst aan en is bedoeld om tekst erin de plaatsen. Geheel getal, bijvoorbeeld 8, 63, 835 NUMERIC

SQL STATEMENTS. Deze kolom kan grote stukken tekst aan en is bedoeld om tekst erin de plaatsen. Geheel getal, bijvoorbeeld 8, 63, 835 NUMERIC Aantekeningen IRDB Vak: IRDB > Infrma1ca Rela1nele DataBase Onderstaande database scripts zijn gebaseerd p PstgreSQL. Standaarden Schrijf SQL wrden al1jd in hfdlefers, k al werkt het met kleine lefers;

Nadere informatie

Kies File>New>Blank Page>PHP. Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site

Kies File>New>Blank Page>PHP. Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site Kies File>New>Blank Page>PHP Je kunt eventueel nog een stylesheet koppelen. Definieer nu eerst een site! Dat betekent: Site>New Site Geef de site een passende naam. Kies ook de juiste map voor de webdocumenten.

Nadere informatie

Project Woningcorporaties Open Source Initiatief Gebruikers handleiding: Verkoop

Project Woningcorporaties Open Source Initiatief Gebruikers handleiding: Verkoop Project Woningcorporaties Open Source Initiatief Gebruikers handleiding: Verkoop Datum uitgave: 27-01-2009 Deze handleiding is specifiek geschreven voor de verkoop afdeling. Gebruikers handleiding Project

Nadere informatie

TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise

TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise Inhoudsopgave 1. Voorbereiding... 4 2. Web Service Connector tool configuratie... 5 3. TaskCentre taak voor het aanmaken van

Nadere informatie

Hoofdstuk: 1 Principes van databases

Hoofdstuk: 1 Principes van databases DBSQLF Databases en SQL Hoofdstuk: 1 Principes van databases aant Css: 4 732 blz 9 1.1 Doel ve database - om op het juiste moment op de juiste plaats de juiste gegevens beschikbaar te hebben richten we

Nadere informatie