Het toepassen van een gelaagde architectuur

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

Zonnepanelen Hoe krijg je de data op je website?

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

Figuur 1 HTML-pagina opvragen

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

Het omzetten van een ER-diagram naar SQL

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

SQL datadefinitietaal

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

Access voor Beginners-Hoofdstuk 20

Elfde-Liniestraat Hasselt Schooljaar TINFO POKER GAME Oracle Scripts

Data Definition Language

Sparse columns in SQL server 2008

Werken met Recordsets (deel 1)

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

Bijlage 1. Access VBA code voor het maken van barrièrebestanden.

Een interactie dictionary in ASP.Net

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

Voorbeelden VBA Excel

PL/SQL. Declaraties van variabelen. Structuur PL/SQL is een blok-georiënteerde taal: Toekenningen

Een Multi-functioneel formulier

DBMS SQL. Relationele databases. Sleutels. DataBase Management System. Inleiding relationele databases. bestaan uit tabellen.

My CRUD functions. Hieronder ziet u een overzicht van de bestandenlijst en functies die we gemaakt hebben en gaan gebruiken.

Hoofdstuk 9: Menu s toevoegen

Mailing List Manager. Hoofdstuk 19

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

Orbis Software Debman4U Installatie Handleiding Debman4U v2.10

Content Management System

[TOETS SQL INLEIDING]

SQL.

Analyse KeyLock versie Door MartinJM

Access cursus - Hoofdstuk 19

Som Van Twee Getallen

Databases - Inleiding

Groepswerk Technieken voor Datamodellering

Van een ER-diagram naar een database specificatie in SQL

Oplossingen overzicht PHP. Oplossing KPN opgave, zonder testen van POST

Cursus Access - Hoofdstuk18

Dynamische Websites. Week 10

Flexibele oplossing om de eid kaart aan te spreken vanuit.net (en Delphi, Visual Basic, C++ etc)

Dit kan gebruikt worden in zowel een ASP.NET web applicatie als een desktop applicatie.

Navigatie is een belangrijk onderdeel van elke website. Er

Stel dat u 15 tellers nodig heeft. Dat kunt u een array van tellers als volgt declareren:

Correctievoorschrift VWO NederlandsNederl. Informatica. Tijdvak 1 Woensdag 17 mei uur. College-examen schriftelijk.

Bibliotheek in ProcessMaker

SQL INJECTIE Door Eoghain Verdonckt Beveiliging december 2013

Inleiding Visual Basic en VBA. Karel Nijs 2009/01

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

Foutcontrole met Javascript

Medical Intelligence in de praktijk

Fun met webparts in ASP.Net

6. Het maken van een database

Een sjabloon (in PHP template genaamd) bevat de volledige

Maak een pivot uit een Generic.List

Wiki on Wheels. -Wikipedia on your personal SQL server. Door Anton Kirschhock

Dynamische gebruikersbeslissingen in SAP Workflow

hoofdstuk 9 referentiële integriteit waarborgen overige constraints 9.1 Referentiële integriteit relationele databases 9.1

Integriteitsbewaking bij een relationele database

Handleiding configuratie en gebruik tekenmodule

Elementary Data Structures 3

Programmeren in Excel VBA. Karel Nijs 2010/09

DATAMODEL GAME EVENT DATABASE ELTON GONÇALVES GOMES V1-10

Whitepaper Implementatie contextafhankelijke opdrachtbalken in MS Excel

Hoofdstuk 5: Functies voor getallen en teksten

Secure Application Roles

Project PiggyBank 2014

Doe het zelf tooling. Met VBA

Programmeren in Excel VBA beginners. Karel Nijs 2010/09

Strings en string-functies

Pazaak PROJECTWERK. Opleidingsonderdeel Projecten Workshops I. Faculteit Bedrijf en Organisatie Valentin Vaerwyckweg GENT

1) Een sequentieel bestand schrijven

2 Specificatie In deze tabel staat voor welk crebotraject de leereenheid is gemaakt Crebotraject code: 95311

2 Specificatie In deze tabel staat voor welk crebotraject de leereenheid is gemaakt Crebotraject code: 95311

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

Informatica toets vwo 6 Databases

Zelftest DB2 for z/os basiscursus

Datum, Tijd en Timer-object

Zelftest Oracle basiscursus

voorbeeldexamen I-Tracks Databases and SQL Foundation Voorbeeldexamen DBSQLF Uitgave juni 2006

ASP.NET Test Jan Van Ryckeghem

Hoofdstuk 6: Zelf functies maken

Inhoud. Pagina 2 van 13

Data Handling Ron van Lammeren - Wageningen UR

Information Retrieval.

ASRemote WebService. Via deze webservice kunt u:

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

Correctievoorschrift HAVO Informatica. Tijdvak 1 Woensdag 9 mei uur. College-examen schriftelijk.

Hoofdstuk 4: Nieuwe objecten

Puzzelen met SQL DBA. De muzieklijst, deel 1. De tabellen De tabellen die we gaan gebruiken in deze puzzel zijn weergegeven in afbeelding 1.

Access voor beginners Hoofdstuk 19 (2)

Optimalisatie Blister-Design

VAN HET PROGRAMMEREN. Inleiding

De MySQL C API. Variabelen in C Functies in C Pointers in C

Informatica. Staatsexamen HAVO. Nederl. Tijdvak 1 Woensdag 23 mei uur. College-examen schriftelijk. Opgavenboekje

VB Magazine Online /08 1 / 6

PHP & MySQL. Studievaardigheden Jan van Rijn (j.n.van.rijn@liacs.leidenuniv.nl) LIACS, Universiteit Leiden

Vragen hoofdstuk 1: Resultaat

Uitbreidingen van het data acquisitie systeem

Datamodelleren en databases 2011

12. Meer dan één tabel gebruiken en sub-queries

Transcriptie:

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 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), 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) www.via-nova-architectura.org August 2007 2

, 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) www.via-nova-architectura.org August 2007 3

Bijlage 2: Sourcecode MS-Access Private Sub Form_Open(Cancel As Integer) Set objservice = ServicesLayer objservice.fillctrlgeef_leden lidid objservice.fillctrlgeef_titels titelid Private Sub OkPB_Click() If objservice.executeevent("uitlenen_na_reserveren", Me.Controls) = True Then DoCmd.Close Sub FillCtrlGeef_Leden(objCtrl As Control) objctrl.rowsource = Geef_Leden objctrl.boundcolumn = 1 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 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 " www.via-nova-architectura.org August 2007 4

Set objrs = objcon.getrecordset(strsql) Set Geef_Titels = objrs 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 Function Uitlenen_na_reserveren(objControls As Controls) As Boolean Dim blnretvalue As Boolean Dim objwrk As Workspace Set objwrk = DBEngine.Workspaces(0) objwrk.begintrans blnretvalue = (objexemplaar.uitlenen_na_reserveren(objcontrols) And _ objtitel.uitlenen_na_reserveren(objcontrols) And _ objlid.uitlenen_na_reserveren(objcontrols) And _ www.via-nova-architectura.org August 2007 5

objreservering.uitlenen_na_reserveren(objcontrols) And _ objuitlening.uitlenen_na_reserveren(objcontrols)) If blnretvalue = False Then objwrk.rollback Else objwrk.committrans Set objwrk = Nothing Uitlenen_na_reserveren = blnretvalue 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 strcurrentstatus = GetCurrentStatus(strTable, stridentifier, objcontrols(stridentifier)) If strcurrentstatus <> "Null" Then MsgBox "Uitlening bestaat al" Uitlenen_na_reserveren = False Exit Function strsql = "INSERT INTO UITLENING" www.via-nova-architectura.org August 2007 6

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 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 strcurrentstatus = GetCurrentStatus(strTable, stridentifier, objcontrols(stridentifier)) If strcurrentstatus <> "RA" Then MsgBox "Reservering bestaat niet" Uitlenen_reserveren = False Exit Function strsql = "UPDATE RESERVERING" strsql = strsql & " SET deletedmark= 1, status= " & Set2SQL(strStatus) & " " strsql = strsql & " WHERE " & stridentifier & "= " & Set2SQL(objControls(strIdentifier)) www.via-nova-architectura.org August 2007 7

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 Private Sub Form_Load() Set objservice = New ServicesLayer cmdok.enabled = False 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 Private Sub lidid_change() www.via-nova-architectura.org August 2007 8

With uitleningid Set.RowSource = objservice.geef_uitlening_bij_lid(lidid.boundtext).boundcolumn = "uitleningid".listfield = "naamtitel" End With Private Sub cmdok_click() If objservice.executeevent("verlengen", objrs) Then Unload Me Else MsgBox GetErrorMessage() Function Verlengen(objRS As Recordset) As Boolean Dim blnretvalue As Boolean objcon.begintrans blnretvalue = (objexemplaar.verlengen(objrs) And objtitel.verlengen(objrs) And objlid.verlengen(objrs) And objuitlening.verlengen(objrs)) If blnretvalue = False Then Else objcon.rollbacktrans objcon.committrans Verlengen = blnretvalue Function Verlengen(objRS As Recordset) As Boolean Dim blnretvalue As Boolean Dim strsql As String Dim strstatus As String Dim strcurrentstatus As String www.via-nova-architectura.org August 2007 9

strcurrentstatus = objcon.getcurrentstatus(strtable, stridentifier, objrs.fields(stridentifier)) strstatus = strcurrentstatus blnretvalue = DefaultValidation(objRS) If blnretvalue = False Then Verlengen = blnretvalue Exit Function 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 www.via-nova-architectura.org August 2007 10

Bijlage 3: Sourcecode Active Server Pages 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 Sub CommitTrans() If blntransactionset = True Then objadoconnection.committrans blnbegintrans = False Function ExecuteSQL(strSQL As String) As Boolean strsql = strsql + ";" MsgBox strsql If blnbegintrans = True Then objadoconnection.begintrans blntransactionset = True blnbegintrans = False www.via-nova-architectura.org August 2007 11

objadoconnection.execute strsql ExecuteSQL = True sourcecode uitleenformulier Function KillConnection() ObjAdoConnection.Close Set objadoconnection = Nothing KillConnection = True <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"> www.via-nova-architectura.org August 2007 12

<% set objrs = objbiebcase.geef_leden While not objrs.eof Ressponse.Write("<option value=" & chr(34) & _ 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> www.via-nova-architectura.org August 2007 13

ASP-hulp procedure <%@ 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) If objbiebcase.executeevent("uitlenen", objrs) = True then Response.Redirect("default.asp") else Call DisplayError(objBiebCase) end if objbiebcase.killconnection objrshlp.close objrs.close Set objbiebcase = Nothing %> www.via-nova-architectura.org August 2007 14