Uitbreidingen van het data acquisitie systeem

Maat: px
Weergave met pagina beginnen:

Download "Uitbreidingen van het data acquisitie systeem"

Transcriptie

1 juni 03 ECN-I Uitbreidingen van het data acquisitie systeem Een beschrijving van de databases die de uitvoer van het Wizcon data acquisitie systeem automatisch verder verwerken (vs1) G.P.J. Schoemakers

2 Verantwoording Het testen van SOFC s is grotendeels geautomatiseerd. Deze automatisering bestaat uit twee delen. Het eerste gedeelte is het binnenhalen van de data, het tweede gedeelte bestaat uit het verder verwerken van deze data. Dit rapport bevat de blauwdruk van het tweede gedeelte. Abstract For testing of SOFC components several installations have been build. These installations have been fitted with a data acquisition system that collects data continuously. The data is made available through one database per installation, which are kept on the local hard-drive. To make the data available for all users the databases are copied to a network-drive. Furthermore forms are available. Two forms are for use by the operators and one form shows the results of the current tests. Apart from that some actions have been implemented to insure the stability of the measuring system. 2 ECN-I

3 INHOUD LIJST VAN TABELLEN 5 LIJST VAN FIGUREN 5 SAMENVATTING 6 1. INLEIDING 7 2. SYSTEEM OPBOUW 9 3. WIZ0X Wiz Wiz CELGEGEVENS Tabellen Formulieren Macro s Afsluiten CelData Modules AlgemeneCelModule DeclaratieModule OmzettingModule QueryCelModule DATABACKUPCOMPACT Macro s Afsluiten ComprimeerBron DataBackUp Modules AlgemeneDataModule BeperkingDataModule ComprimeerDataModule DeclaratieModule KopieerModule OmzettingModule QueryDataModule IVCEL Formulieren Macro s Afsluiten Modules AlgemeneIVModule DeclaratieModule OmzettingModule LOOPCEL Macro s Afsluiten LopendeCelMaken Modules AlgemeneLoopModule DeclaratieModule KopieerModule 54 ECN-I

4 7.2.4 OmzettingModule QueryLoopModule LOPENDECEL Tabellen Formulieren Macro s Afsluiten Modules DeclaratieModule OmzettingModule StartCelModule 74 4 ECN-I

5 LIJST VAN TABELLEN Tabel 1 De structuur van macro 'Afsluiten'...15 Tabel 2 De structuur van macro 'CelData'...16 Tabel 3 De structuur van macro 'Afsluiten'...23 Tabel 4 De structuur van macro 'ComprimeerBron'...24 Tabel 5 De structuur van macro 'DataBackUp'...24 Tabel 6 De structuur van macro 'Afsluiten'...42 Tabel 7 De structuur van macro 'Afsluiten'...49 Tabel 8 De structuur van macro 'LopendeCelMaken'...49 Tabel 9 De structuur van macro 'Afsluiten'...70 LIJST VAN FIGUREN Figuur 1 Schematische weergave van de onderlinge verbanden tussen de verschillende typen databases...10 Figuur 2 Opbouw van de tabel GegevensCellen uit de database CelGegevens...13 Figuur 3 De weergave van het formulier InvoerCelgegevens uit de database CelGegevens.14 Figuur 4 De weergave van het formulier InvoerCelgegevens2 uit de database CelGegevens...15 Figuur 5 Weergave van het formulier IVgrafiek uit de database IVcel...39 Figuur 6 Opbouw van de tabel GegevensCellen uit de database LopendeCel...65 Figuur 7 Opbouw van de tabel SOxx uit de database LopendeCel...66 Figuur 8 Weergave van formulier 'LopendeCel' uit database 'LopendeCel'...66 ECN-I

6 SAMENVATTING Voor het meten en testen van SOFC s zijn er in het ET gebouw diverse opstellingen gebouwd. Het merendeel van deze opstellingen zijn gekoppeld aan een data acquisitie systeem (DAS) dat automatisch en continue meetgegevens verzameld. Deze gegevens worden voor de gebruikers beschikbaar gesteld in de vorm van één database per opstelling. De databases worden bewaard op de lokale C-schijf. Om de data voor gebruikers beschikbaar te stellen worden deze databases gekopieerd naar een netwerkschijf (XP-schijf). Tevens zijn voor de gebruikers formulieren beschikbaar. Twee formulieren voor gebruik door de operators en één formulier dat het verloop van de draaiende celtesten zichtbaar maakt voor geïnteresseerden. Verder zijn er enkele acties die de stabiliteit van het meetsysteem garanderen. 6 ECN-I

7 1. INLEIDING In het ET gebouw staan diverse opstellingen die gebruikt worden voor het testen van en het meten aan vast oxide brandstofcellen. Het merendeel van deze opstellingen is verbonden met een data acquisitie systeem. Dit systeem is verdeeld over twee computers. De uitvoer van het systeem bestaat uit databases, één database per opstelling. Deze databases bevatten alle gegevens die door het systeem zijn bijgehouden en bevinden zich op de lokale harde schijf. De databases worden gekopieerd naar een netwerkschijf om ze beschikbaar te maken voor de diverse gebruikers. Ook worden er bewerkingen uitgevoerd ten behoeve van de gebruikers. Dit om de data makkelijker toegankelijk te maken en uniform aan te bieden. Tevens worden er acties uitgevoerd om er voor te zorgen dat het data acquisitie systeem niet instabiel wordt door te grote data files. ECN-I

8 8 ECN-I

9 2. SYSTEEM OPBOUW Het data acquisitie systeem is verdeeld over twee computers. De software die op deze computers draait, genaamd Wizcon, gebruikt de aanduiding Wiz020 voor systeem 1 en Wiz030 voor systeem 2. De diverse uitbreidingen dienen zo veel mogelijk onafhankelijk te zijn van het systeem. Voor uitbreidingen die specifiek bedoeld zijn voor één systeem krijgen de toevoeging 020 of 030 mee. Wizcon geeft als uitvoer databases die volgens een vast stramien zijn opgebouwd. De naam van de database begint met de letters SO (van SOFC Opstelling) gevolgd door een volgnummer dat het nummer van de desbetreffende opstelling aangeeft. Deze nummers zijn voor Wiz tot en met 22. Voor Wiz030 zijn de nummers 01 tot en met 11. Deze databases worden verder brondatabases genoemd. De brondatabases bevatten allen een tabel genaamd Data waar de gemeten waarden in zijn opgeslagen. De brondatabases bevatten verder geen objecten. Elke keer dat Wizcon data toevoegt aan de brondatabases groeien deze. Indien de brondatabases blijven groeien verloopt het toevoegen van nieuwe data steeds moeizamer vanwege de toegenomen bestandsgrootte. Uiteindelijk vertoont Wizcon instabiel gedrag. Om dit te voorkomen dienen de brondatabases klein te blijven. Het gevolg hiervan is dat de permanente opslag van meetdata verzorgd wordt door andere databases. Deze databases worden verder in dit rapport back-updatabases genoemd. De gemeten data wordt periodiek overgeheveld naar de back-updatabases, waarna de brondatabases in grootte worden beperkt. De naam van de back-updatabases begint met de letters ET (van ETgebouw) gevolg door een volgnummer dat het nummer van de desbetreffende opstelling aangeeft. De back-updatabases bevatten een tabel waar de data uit de brondatabases in worden opgeslagen. De naam van deze tabel begint met de letters SO en wordt gevolgd door het nummer van de opstelling. Deze databases kunnen ook andere tabellen bevatten. Als de opstellingen zijn veranderd krijgt de oude tabel een nieuwe naam en wordt er een nieuwe tabel gemaakt met de standaard naam. Naast de genoemde tabellen kunnen deze back-updatabases ook ander objecten bevatten. De meetgegevens moeten nog beschikbaar worden gemaakt voor de gebruikers van de meetopstellingen. Dit wordt gedaan door de back-updatabases te kopiëren naar een netwerkschijf (de XP schijf) van waaruit de gebruikers de data kunnen benaderen. Deze gekopieerde databases worden in dit rapport aangeduid als doeldatabases. Deze doeldatabases zijn een exacte kopie van de back-updatabases. Meetgegevens worden ook bewerkt om deze makkelijker toegankelijk te maken en op een uniforme wijze aan gebruikers te presenteren. Tevens wordt er gebruikersgegevens opgeslagen en gekoppeld aan de relevante meetdata. De databases die deze bewerkte data en de gebruikersdata opslaan worden in dit rapport functiedatabases genoemd. Ook deze databases worden naar de XP schijf gekopieerd en heten dan doeldatabases. De databases die al deze functionaliteit verzorgen worden werkdatabases genoemd. ECN-I

10 ET20 t/m ET22 Meet opstellingen Wiz020 Wizcon data acquisitie software Brondatabases Werkdatabases Backupdatabases ET01 t/m ET11 Meet opstellingen Wiz030 Wizcon data acquisitie software Brondatabases Werkdatabases Backupdatabases Functiedatabases Netwerkschijf Doeldatabases Gebruikers Gebruikers Gebruikers Figuur 1 Schematische weergave van de onderlinge verbanden tussen de verschillende typen databases. 10 ECN-I

11 3. WIZ0X0 Er zijn twee wizcon systemen, Wiz020 en Wiz030. Beide systemen draaien op een aparte PC en voor beide systemen zullen op gezette tijden macro s van werkdatabases uitgevoerd moeten worden. Het uitvoeren van macro s wordt door het operating systeem (OS) verzorgd. Dit OS kent een functie genaamd Scheduler. Deze scheduler kan programma s (macro s) opstarten en bewaken op vastgestelde tijden en met regelmatige intervallen. 3.1 Wiz020 De database die in gebruik is om de uitvoer van Wiz020 af te handelen is : DataBackUpCompact De scheduler start de volgende macro s : DataBacKUp, elke dag om 07:00 uur ComprimeerBron, elke derde dag van de maand om 20:00 uur 3.2 Wiz030 De databases die in gebruik zijn om de uitvoer van Wiz030 af te handelen zijn : CelGegevens DataBackUpCompact IVcel LoopCel LopendeCel De scheduler start de volgende macro s : CelData, elke dag om 19:30 uur ComprimeerBron, elke derde dag van de maand om 20:00 uur DataBacKUp, elke dag om 06:30 uur LopendeCelMaken, elke dag om 07:00 uur ECN-I

12 12 ECN-I

13 4. CELGEGEVENS De database CelGegevens is een werkdatabase. Het doel van deze database is het opslaan en bijhouden van alle relevante gegevens van een cel. Voor de opslag van deze gegevens wordt een tabel gebruikt. De overige objecten van de database dienen ervoor om de gegevens makkelijker toegankelijker te maken en om gedeeltes van de invoer van nieuwe gegevens te vereenvoudigen. De database is voornamelijk bedoeld voor gebruik door de operators op het bordes. Deze database bevat : 1 tabel 0 queries 2 formulieren 0 rapporten 2 macro s 4 modules. 4.1 Tabellen De tabel in de database CelGegevens is : GegevensCellen In de tabel GegevensCellen zijn alle, voor het experiment, relevante gegevens opgeslagen van de reeds geteste cellen. Figuur 2 Opbouw van de tabel GegevensCellen uit de database CelGegevens De velden Opstellingnummer en Celnummer verwijzen naar het juiste experiment zodat de bijbehorende data kunnen worden geselecteerd. Oppervlak geeft het oppervlak aan van de kathode en daarmee het actieve celoppervlak van de cel. Deze waarde, in vierkante centimeters, wordt gebruikt in de berekening van de stroomdichtheid. Celcodering geeft het type cel aan dat is gebruikt gedurende het experiment. Om verder nog relevante opmerkingen over het experiment op te slaan is het veld Opmerkingen toegevoegd. De velden Kathode en Anode slaan gegevens op over het aantal keren dat de respectievelijke gazen al in gebruik zijn. 4.2 Formulieren De formulieren in de database CelGegevens zijn : InvoerCelgegevens InvoerCelgegevens2 ECN-I

14 Het formulier InvoerCelgegevens wordt gebruikt om op het bordes de ontbrekende data toe te voegen of om bestaande gegevens te veranderen. Figuur 3 De weergave van het formulier InvoerCelgegevens uit de database CelGegevens Het formulier heeft als bron voor de gebruikte gegevens de tabel GegevensCellen Verder bestaat het formulier uit diverse onderdelen. Als eerste een subformulier (een formulier in een formulier). In dit geval is de gele rand het formulier InvoerCelgegevens en het witte gedeelte het subformulier InvoerCelgegevens2. Een tweede onderdeel is een formuliermodule om diverse acties in goede banen te leiden. Als laatste onderdeel is er een kader ( Cel Keuze ) om de gegevens van de juiste opstelling te selecteren. De module, die is verbonden aan het hoofdformulier, is relatief eenvoudig. Option Compare Database Option Explicit Private Sub Form_Open(Cancel As Integer) ' Bij openen formulier Initialisatie ' Begin waarden goedzetten StartAlgemeen ' Bijwerken data Me.Kader1.Value = 1 ' Opstelling = 1 Kader1_AfterUpdate Private Sub Kader1_AfterUpdate() ' Na bijwerken kader 'Cel Keuze' Dim strsql As String ' SQL definieren (selecteer gegevens per opstelling) strsql = "SELECT * FROM GegevensCellen " & _ "WHERE (((Opstellingnummer)=" & Me.Kader1.Value & "));" Me.RecordSource = strsql ' Gebruiken voor formulier Me.OrderByOn = True ' Sorteren aan Me.OrderBy = "GegevensCellen.Celnummer DESC" ' Aflopend sorteren 14 ECN-I

15 Het subformulier InvoerCelgegevens2 wordt ingezet om de data per opstelling uit de tabel GegevensCellen weer te geven. Figuur 4 De weergave van het formulier InvoerCelgegevens2 uit de database CelGegevens De gegevens worden per opstelling (gekozen in het hoofdformulier) weergegeven. De gegevens in het veld Celnummer zijn tegen veranderen beveiligd. Dit veld en de velden Anode, Kathode en Oppervlak worden automatisch ingevuld, maar kunnen gewijzigd worden. 4.3 Macro s De macro s in de database CelGegevens zijn : Afsluiten CelData Macro s hebben acties en beschrijvingen. De acties geven aan wat de macro moet doen en de beschrijvingen geven een mogelijkheid om in de macro uitleg te geven over die actie Afsluiten De structuur van de macro afsluiten is weergegeven in Tabel 1. Tabel 1 De structuur van macro 'Afsluiten' Actie Beschrijving BerichtenInstellen Geen berichten Deze actie zorgt ervoor dat vensters die normaal gesproken om actie vragen van de gebruiker worden genegeerd. De macro wordt niet meer onderbroken. ProcedureUitvoeren AlgemeneCelModule, functie VerbreekVerbinding(), alle koppelingen verbreken Deze actie start een procedure die alle gekoppelde tabellen uit de database verwijdert ECN-I

16 Afsluiten Database afsluiten Deze actie sluit de database af CelData De structuur van de macro CelData is weergegeven in Tabel 2. Tabel 2 De structuur van macro 'CelData' Actie Beschrijving BerichtenInstellen Geen berichten Deze actie zorgt ervoor dat vensters die normaal gesproken om actie vragen van de gebruiker worden genegeerd. De macro wordt niet meer onderbroken. ProcedureUitvoeren DeclaratieModule, functie Initialisatie(), geeft startwaarde aan alle variabelen Deze actie start een procedure die de gebruikte variabelen de juiste waarde geeft ProcedureUitvoeren AlgemeneCelModule, functie StartAlgemeen(), data gegevenscellen bijwerken Deze actie werkt de data in de tabel GegevensCellen bij zodat deze bij de tijd zijn. MacroStarten Database afsluiten Deze actie sluit de database af 4.4 Modules De vier modules zijn : AlgemeneCelModule DeclaratieModule OmzettingModule QueryCelModule Modules zijn verzamelingen van stukjes programma die elk een eigen functionaliteit hebben. Deze programmacode is weergegeven als tekst AlgemeneCelModule Deze module heeft de volgende stukjes programmacode : 1. De functie StartAlgemeen roept diverse andere programmadelen aan in een gedefinieerde volgorde 2. De functie Verbreekverbinding verwijdert alle gekoppelde tabellen uit de database 3. De procedure KoppelenWiz0x0 koppelt de tabel Registraties uit de Wizcon database Wiz0x0 Option Compare Database Option Explicit ' Deze module verzorgt alle noodzakelijke instellingen bij opstart ' en past databases aan bij veranderingen Public Function StartAlgemeen() KoppelenWiz0x0 Bijwerken VerbreekVerbinding ' Koppelen van registraties ' Nieuwe data toevoegen ' Verbreek alle koppelingen 16 ECN-I

17 Public Function VerbreekVerbinding() For Teller = CurrentDb.TableDefs.Count - 1 To 0 Step -1 ' Alle tabellen controleren If CurrentDb.TableDefs(Teller).Attributes And dbattachedtable Then ' Als tabel is gekoppeld CurrentDb.TableDefs.Delete CurrentDb.TableDefs(Teller).Name ' Tabel verwijderen Teller = 0 Private Sub KoppelenWiz0x0() Dim str As String str = "Registraties" ' Tabel 'Registraties' van Wiz0x0 koppelen DoCmd.TransferDatabase aclink, "Microsoft Access", strwiz0x0, actable, str, str DeclaratieModule Deze module heeft de volgende stukjes programmacode : 1. De declaraties verzorgen de variabelen en constanten die nodig zijn binnen deze database. De hier gedeclareerde waarden zijn beschikbaar binnen de hele database. 2. De functie Initialisatie roept de initialisatie routines aan. Dit is nodig omdat de diverse initialisatie routines niet van buiten deze module kunnen worden aangeroepen. 3. De procedure InitialisatieBLN geeft de publieke variabelen blnso en blnet een startwaarde. 4. De procedure InitialisatieSchijf zet alle computerspecifieke verwijzingen goed. De keuze wordt bepaald door de waarde van consysteem. De mogelijkheden zijn Test (voor testen), 020 (voor Wiz020) en 030 (voor Wiz030). 5. De procedure RijCelVullen is bedoeld voor uitbreidingen. Option Compare Database Option Explicit ' Deze module verzorgt alle noodzakelijke declaraties die door de gehele database worden gebruikt Public Const conmax As Integer = 30 Public Const contabel As String = "Data" Public blnso(0 To conmax) As Boolean Public blnet(0 To conmax) As Boolean Public Teller As Integer Public strxpschijf As String Public strcschijf As String Public strgschijf As String Public strwizschijf As String Public strwiz0x0 As String Public strwiziv As String ' Aantal opstellingen ' Naam tabel in Wizcon output ' Rij met bestaande Wizcon databases ' Rij met bestaande BackUp databases ' Waarde gebruikt in For.. lussen ' Verwijzing naar XP directorie ' Verwijzing naar BackUp directorie ' Verwijzing naar Database directorie ' Verwijzing naar Wizcon directorie ' Verwijzing naar Wiz0x0 database ' Verwijzing naar WizIV database Dim RijCel(1 To 26) As String ECN-I

18 Const consysteem As String = "030" ' Bepaalt de waarde van verwijzingen naar schijven Public Function Initialisatie() InitialisatieBLN InitialisatieSchijf RijCelVullen ' Alle bln's initialiseren ' Schijfverwijzingen goedzetten ' Celnummers goedzetten Private Sub InitialisatieBLN() For Teller = 0 To conmax blnso(teller) = False blnet(teller) = False Teller = 0 ' Voor alle opstellingen ' Initialiseer blnso ' Initialiseer blnet Private Sub InitialisatieSchijf() Select Case consysteem ' Waarde van consysteem Case "test" ' Als "test" dan : ' worden de schijf strings goedgezet voor het test systeem strxpschijf = "C:\Data\XP\" strcschijf = "C:\Data\C\" strwizschijf = "C:\Data\WIZ\" strgschijf = "C:\Data\G\" ' en de database strings voor het test systeem strwiz0x0 = "C:\Data\wiz\Wiz030.mdb" strwiziv = "C:\Data\wiz\WizIV.mdb" Case "020" ' Als "020" dan : ' worden de schijf strings goedgezet voor Wiz020 strxpschijf = "\\ECNTS1\G_sofcxp\Wizcon\" strcschijf = "D:\Data\BackUp\" strwizschijf = "D:\Wizprj\Wiz020\Database\" ' en de database strings voor Wiz020 strwiz0x0 = "D:\Wizprj\Wiz020\Database\Wiz020.mdb" strwiziv = "D:\Wizprj\Wiz020\Addons\WizIV.mdb" Case "030" ' Als "030" dan : ' worden de schijf strings goedgezet voor Wiz030 strxpschijf = "\\ECNTS1\G_sofcxp\Wizcon\" strcschijf = "G:\BackUp\" strgschijf = "G:\Databases\" strwizschijf = "C:\Wizprj\Wiz030\Database\" ' en de database strings voor Wiz030 strwiz0x0 = "C:\Wizprj\Wiz030\Database\Wiz030.mdb" strwiziv = "C:\Wizprj\Wiz030\Addons\WizIV.mdb" End Select 18 ECN-I

19 Private Sub RijCelVullen() RijCel(1) = "A" RijCel(2) = "B" RijCel(3) = "C" RijCel(4) = "D" RijCel(5) = "E" RijCel(6) = "F" RijCel(7) = "G" RijCel(8) = "H" RijCel(9) = "I" RijCel(10) = "J" RijCel(11) = "K" RijCel(12) = "L" RijCel(13) = "M" RijCel(14) = "N" RijCel(15) = "O" RijCel(16) = "P" RijCel(17) = "Q" RijCel(18) = "R" RijCel(19) = "S" RijCel(20) = "T" RijCel(21) = "U" RijCel(22) = "V" RijCel(23) = "W" RijCel(24) = "X" RijCel(25) = "Y" RijCel(26) = "Z" OmzettingModule Deze module heeft de volgende stukjes programmacode : 1. De functie strwizdir geeft het volledige datapad van een brondatabase terug. 2. De functie strxpdir geeft het volledige pad van een doeldatabase op de XP schijf terug. 3. De functie strcdir geeft het volledige pad van een back-updatabase terug. 4. De functie strgdir geeft het volledige pad van een functie- of een werk-database terug. 5. De functie struitint geeft de stringwaarde van een integer terug. 6. De functie ETUitint geeft ET + stringwaarde integer terug 7. De functie SOUitint geeft SO + stringwaarde integer terug 8. De functie Uitvoer past de uitvoer van een schijfverwijzing naar wens aan. Option Compare Database Option Explicit ' Deze module verzorgt alle noodzakelijke omzettingen die door de hele database terugkomen Public Function strwizdir(naam As String) As String strwizdir = strwizschijf & Naam & ".mdb" ' Geeft een string met het juiste pad en de gekozen naam Public Function strxpdir(naam As String) As String ECN-I

20 strxpdir = strxpschijf & Naam & ".mdb" ' Geeft een string met het juiste pad en de gekozen naam Public Function strcdir(naam As String) As String strcdir = strcschijf & Naam & ".mdb" ' Geeft een string met het juiste pad en de gekozen naam Public Function strgdir(naam As String) As String strgdir = strgschijf & Naam & ".mdb" ' Geeft een string met het juiste pad en de gekozen naam Public Function struitint(nummer As Integer) As String struitint = CStr(Nummer) If Nummer < 10 Then struitint = "0" & struitint ' Zet integer om in string ' Als : geen voorloopnul ' Dan : voorloopnul toevoegen Public Function ETUitint(Nummer As Integer) As String ETUitint = "ET" & struitint(nummer) ' ET + nummer Public Function SOUitint(Nummer As Integer) As String SOUitint = "SO" & struitint(nummer) ' SO + nummer Public Function Uitvoer(Invoer As String, Tussen As String) As String Uitvoer = Left(Invoer, (Len(Invoer) - 4)) & Tussen & ".mdb" ' Invoer aanpassen met Tussen QueryCelModule Deze module heeft de volgende stukjes programmacode : 4. De procedure GaasTellersBijwerken zorgt ervoor dat de gaastellers de juiste waarde krijgen bij de volgende celtest. 5. De procedure CelNummersToevoegen vult bekende data in die voor de tabel GegevensCellen bedoeld zijn. 6. De procedure Bijwerken roept de andere procedures aan in een gedefinieerde volgorde. Option Compare Database 20 ECN-I

21 Option Explicit ' Deze module verzorgt alle acties voor het bijwerken en bijhouden van de data Private Sub GaasTellersBijwerken() Dim rstcellen As Object Dim fldanode As Object Dim fldkathode As Object Dim str As String Dim intanode As Integer Dim intkathode As Integer DoCmd.SetWarnings False ' Geen waarschuwingen weergeven str = "SELECT Opstellingnummer, Celnummer, Anode, Kathode FROM GegevensCellen " & _ "ORDER BY Opstellingnummer, Celnummer;" ' Selectie maken Set rstcellen = CurrentDb.OpenRecordset(str) ' Gegevens ophalen Set fldanode = rstcellen.fields("anode") Set fldkathode = rstcellen.fields("kathode") For Teller = 0 To conmax ' Voor alle opstellingen str = "Opstellingnummer = " & Teller ' Per opstelling bijwerken rstcellen.movelast ' Data ophalen Do While True rstcellen.findfirst str If rstcellen.nomatch Then Exit Do rstcellen.edit ' Lege velden vullen If IsNull(fldAnode.Value) Then fldanode.value = 1 If IsNull(fldkathode.Value) Then fldkathode.value = 1 rstcellen.update ' Data wegschrijven intanode = fldanode.value intkathode = fldkathode.value Exit Do Loop Do While True rstcellen.find str If rstcellen.nomatch Then Exit Do rstcellen.edit ' Lege velden vullen If IsNull(fldAnode.Value) Then fldanode.value = intanode + 1 If IsNull(fldkathode.Value) Then fldkathode.value = intkathode + 1 rstcellen.update ' Data wegschrijven intanode = fldanode.value intkathode = fldkathode.value Loop Teller = 0 Set fldkathode = Nothing Set fldanode = Nothing Set rstcellen = Nothing Private Sub CelNummersToevoegen() ECN-I

22 Dim strsql As String DoCmd.SetWarnings False ' Geen waarschuwingen weergeven strsql = "INSERT INTO GegevensCellen (Opstellingnummer, Celnummer, Oppervlak) " & _ "SELECT Choose([ExpID]-9,1,2,3,4,5,6,7,8,9,10,11) AS OpstelNr, " & _ "Registraties.ExpNr, " & _ "Choose([OpstelNr],81,10,10,16,10,100,81,100,100,100,100) AS Opp " & _ "FROM Registraties;" DoCmd.RunSQL strsql ' Nieuwe celnummers toevoegen Public Sub Bijwerken() CelNummersToevoegen GaasTellersBijwerken ' Nieuwe celnummers ' Tellers voor anode en kathode gazen bijwerken 22 ECN-I

23 5. DATABACKUPCOMPACT Deze database voert vijf functies uit. De eerste functie is het kopiëren van de nieuw gegenereerde data naar back-updatabases. Hierdoor wordt alle data per opstelling bewaard in één back-updatabase. De tweede functie is het beperken van de door Wizcon geproduceerde brondatabases. Indien deze databases te groot worden neemt het dumpen van de data naar deze brondatabases veel tijd in beslag. Uiteindelijk wordt Wizcon door de grote datafiles instabiel. De derde functie bestaat uit het kopiëren van deze back-updatabases naar een netwerkschijf zodat ze beschikbaar komen voor de gebruikers. De vierde functie is het beperken van twee Wizcon logfiles. Als deze te groot worden verminderd de betrouwbaarheid van het systeem. De vijfde functie bestaat uit het periodiek comprimeren van de datafiles. Deze database bevat : 0 tabellen 0 queries 0 formulieren 0 rapporten 3 macro s 7 modules. 5.1 Macro s De drie macro s in de database DataBackupCompact zijn : Afsluiten ComprimeerBron DataBackUp Macro s hebben acties en beschrijvingen. De acties geven aan wat de macro moet doen en de beschrijvingen geven een mogelijkheid om in de macro uitleg te geven over die actie Afsluiten De structuur van de macro afsluiten is weergegeven in Tabel 1. Tabel 3 De structuur van macro 'Afsluiten' Actie Beschrijving BerichtenInstellen Geen berichten Deze actie zorgt ervoor dat vensters die normaal gesproken om actie vragen van de gebruiker worden genegeerd. De macro wordt niet meer onderbroken. ProcedureUitvoeren AlgemeneDataModule, functie VerbreekVerbinding(), alle koppelingen verbreken Deze actie start een procedure die alle gekoppelde tabellen uit de database verwijdert Afsluiten Database afsluiten Deze actie sluit de database af ComprimeerBron De structuur van de macro ComprimeerBron is weergegeven in Tabel 2. ECN-I

24 Tabel 4 De structuur van macro 'ComprimeerBron' Actie Beschrijving BerichtenInstellen Geen berichten Deze actie zorgt ervoor dat vensters die normaal gesproken om actie vragen van de gebruiker worden genegeerd. De macro wordt niet meer onderbroken. ProcedureUitvoeren DeclaratieModule, functie Initialisatie(), geeft startwaarde aan alle variabelen Deze actie start een procedure die de gebruikte variabelen de juiste waarde geeft ProcedureUitvoeren AlgemeneDataModule, functie StartAlgemeen(), controle en linken Deze actie start een serie van procedures die controleren welke brondatabases bestaan. De tabellen van deze databases worden dan gekoppeld voor verder gebruik. ProcedureUitvoeren ComprimeerDataModule, functie Comprimeer(), bron en backupdatabases comprimeren Deze actie zorgt ervoor dat de bron en de backupdatabases allen gecomprimeerd worden ProcedureUitvoeren BeperkingDataModule, functie BeperkStatus(), de tabel Status uit Wiz0x0 in grootte beperken. Deze actie beperkt de grootte van de tabel, anders zou deze oneindig groeien en uiteindelijk instabiliteit verzorgen ProcedureUitvoeren BeperkingDataModule, functie BeperktblStatus(), de tabel tblstatus uit WizIV in grootte beperken. Deze actie beperkt de grootte van de tabel, anders zou deze oneindig groeien en uiteindelijk instabiliteit verzorgen MacroStarten Database afsluiten Deze actie sluit de database af DataBackUp De structuur van de macro DataBackUp is weergegeven in Tabel 5. Tabel 5 De structuur van macro 'DataBackUp' Actie Beschrijving BerichtenInstellen Geen berichten Deze actie zorgt ervoor dat vensters die normaal gesproken om actie vragen van de gebruiker worden genegeerd. De macro wordt niet meer onderbroken. ProcedureUitvoeren DeclaratieModule, functie Initialisatie(), geeft startwaarde aan alle variabelen Deze actie start een procedure die de gebruikte variabelen de juiste waarde geeft ProcedureUitvoeren AlgemeneDataModule, functie StartAlgemeen(), controle en linken Deze actie start een serie van procedures die controleren welke brondatabases bestaan. De tabellen van deze databases worden dan gekoppeld voor verder gebruik. ProcedureUitvoeren QueryDataModule, functie TransportData(), toevoegen data aan backup en beperken originele datahoeveelheid Deze actie start een procedure die voor elke gekoppelde tabel twee query s uitvoerd. De eerste transporteert data van bron naar backupdatabase, de tweede beperkt de datatot maximaal vijftig dagen. ProcedureUitvoeren KopieerModule, functie Transport(), kopiëren van de databases naar de XP schijf Deze actie start een procedure die backupdatabases kopieert naar doeldatabases. MacroStarten Database afsluiten Deze actie sluit de database af 24 ECN-I

25 5.2 Modules De zeven modules zijn : AlgemeneDataModule BeperkingdataModule ComprimeerDataModule DeclaratieModule KopieerModule OmzettingModule QueryDataModule Modules zijn verzamelingen van stukjes programma die elk een eigen functionaliteit hebben. Deze programmacode is weergegeven als tekst AlgemeneDataModule Deze module heeft de volgende stukjes programmacode : 7. De functie StartAlgemeen roept diverse andere programmadelen aan in een gedefinieerde volgorde. 8. De procedure BestaatSO controleert of de brondatabases bestaan. 9. De procedure BestaatET controleert of de back-updatabases bestaan. 10. De procedure KoppelenSO maakt een gekoppelde tabel aan voor elke brondatabase die bestaat als die een brontabel met meetgegevens heeft. 11. De procedure KoppelenET maakt een gekoppelde tabel aan voor elke back-updatabase die bestaat. Als de back-uptabel niet bestaat wordt deze aangemaakt en gekoppeld. Als de backupdatabase niet bestaat en de brondatabase wel, dan wordt er een back-updatabase aangemaakt met een juiste tabel. Deze tabel wordt alsnog gekoppeld. 12. De functie VerbreekVerbinding verwijdert alle gekoppelde tabellen uit de database. Option Compare Database Option Explicit ' Deze module verzorgt alle noodzakelijke instellingen bij opstart ' en past databases aan bij veranderingen Public Function StartAlgemeen() VerbreekVerbinding BestaatSO BestaatET KoppelenSO KoppelenET ' Verbreek alle koppelingen ' blnso : welke database bestaat ' blnet : welke backup bestaat ' Koppelingen naar SO databases maken ' Koppelingen naar backup databases maken Private Sub BestaatSO() On Error GoTo Foutafhandeling ' Als er een fout optreedt For Teller = 0 To conmax ' Voor alle opstellingen blnso(teller) = True ' Database bestaat FileLen (strwizdir(souitint(teller))) ' Bepaal bestandsgrootte van database Teller = 0 Exit Sub Foutafhandeling: ' Verlaat procedure ECN-I

26 ' Dit gedeelte wordt uitgevoerd als er een fout optreedt If Err = 53 Then ' Indien fout : kan het bestand niet vinden blnso(teller) = False ' Dan : database bestaat niet Resume ' Ga verder met de volgende Else ' Anders : Dim intfoutnummer As Integer intfoutnummer = Err Err.Clear Err.Raise intfoutnummer ' Geef de juiste foutmelding Private Sub BestaatET() On Error GoTo Foutafhandeling For Teller = 0 To conmax blnet(teller) = True FileLen (strcdir(etuitint(teller))) Teller = 0 ' Als er een fout optreedt ' Voor alle opstellingen ' Backup database bestaat ' Bepaal bestandsgrootte van database Exit Sub ' Verlaat procedure Foutafhandeling: ' Dit gedeelte wordt uitgevoerd als er een fout optreedt If Err = 53 Then ' Indien fout : kan het bestand niet vinden blnet(teller) = False ' Dan : backup database bestaat niet Resume ' Ga verder met de volgende Else ' Anders : Dim intfoutnummer As Integer intfoutnummer = Err Err.Clear Err.Raise intfoutnummer ' Geef de juiste foutmelding Private Sub KoppelenSO() On Error GoTo Foutafhandeling ' Als er een fout optreedt Dim strso As String For Teller = 0 To conmax ' Voor alle opstellingen If blnso(teller) = True Then ' Als database bestaat strso = SOUitint(Teller) ' Dan : maak een koppeling DoCmd.TransferDatabase aclink, "Microsoft Access", strwizdir(strso),,contabel, strso& "IN" Exit Sub ' Verlaat procedure Foutafhandeling: ' Dit gedeelte wordt uitgevoerd als er een fout optreedt If Err = 3011 Then ' Indien fout : tabel bestaat niet blnso(teller) = False ' Dan : beweer dat database niet bestaat Resume ' Ga verder met de volgende Else ' Anders : Dim intfoutnummer As Integer 26 ECN-I

27 intfoutnummer = Err Err.Clear Err.Raise intfoutnummer ' Geef de juiste foutmelding Private Sub KoppelenET() On Error GoTo Foutafhandeling ' Als er een fout optreedt Dim objdatabase As Object Dim stret As String Dim strso As String For Teller = 0 To conmax ' Voor alle opstellingen stret = ETUitint(Teller) strso = SOUitint(Teller) If blnet(teller) = True Then ' Als backup database bestaat ' Dan : maak een koppeling DoCmd.TransferDatabase aclink, "Microsoft Access", strcdir(stret),, strso, strso & "UIT" ElseIf blnso(teller) = True Then ' Als database bestaat, maar backup database niet ' Dan : maak backup database Set objdatabase = CreateDatabase(strCdir(ETUitint(Teller)), dblangdutch) Set objdatabase = Nothing ' En kopieer de nieuwe datatabel (via de huidige database) naar de backup DoCmd.TransferDatabase acimport, "Microsoft Access", strwizdir(strso),, contabel, strso DoCmd.TransferDatabase acexport, "Microsoft Access", strcdir(stret),, strso, strso CurrentDb.TableDefs.Delete strso ' En maak een nieuwe koppeling DoCmd.TransferDatabase aclink, "Microsoft Access", strcdir(stret),, strso, strso & "UIT" Exit Sub ' Verlaat procedure Foutafhandeling: ' Dit gedeelte wordt uitgevoerd als er een fout optreedt If Err = 3011 Then ' Indien fout : tabel bestaat niet ' Dan : kopieer de nieuwe datatabel (via de huidige database) naar de backup DoCmd.TransferDatabase acimport, "Microsoft Access", strwizdir(strso),, contabel, strso DoCmd.TransferDatabase acexport, "Microsoft Access", strcdir(stret),, strso, strso CurrentDb.TableDefs.Delete strso ' En maak een nieuwe koppeling DoCmd.TransferDatabase aclink, "Microsoft Access", strcdir(stret),, strso, strso & "UIT" Resume ' Ga verder met de volgende Else ' Anders : Dim intfoutnummer As Integer intfoutnummer = Err Err.Clear Err.Raise intfoutnummer ' Geef de juiste foutmelding Public Function VerbreekVerbinding() For Teller = CurrentDb.TableDefs.Count - 1 To 0 Step 1 ' Alle tabellen controleren If CurrentDb.TableDefs(Teller).Attributes And dbattachedtable Then ' Als tabel is gekoppeld ECN-I

28 CurrentDb.TableDefs.Delete CurrentDb.TableDefs(Teller).Name Teller = 0 ' Tabel verwijderen BeperkingDataModule Deze module heeft de volgende stukjes programmacode : 1. De functie BeperkStatus beperkt de grootte van de tabel Status van de Wizcondatabase Wiz0x0. De tabel wordt gelimiteerd op maximaal 5000 records en maximaal 300 dagen oud. De beperking van de tabel is nodig omdat Wizcon zelf deze tabel ongestoord laat groeien. Dit veroorzaakt uiteindelijk problemen. 2. De functie BeperktblStatus beperkt de grootte van de tabel tblstatus van de Wizcondatabase WizIV. De tabel wordt gelimiteerd op maximaal 5000 records en maximaal 300 dagen oud. De beperking van de tabel is nodig omdat Wizcon zelf deze tabel ongestoord laat groeien. Dit veroorzaakt uiteindelijk problemen. Option Compare Database Option Explicit ' Deze module beperkt de grootte van de Wiz0x0 Database en de WizIV Database Public Function BeperkStatus() Const conaantal As Long = 5000 Const contijd As Integer = 300 Dim intaantal As Long Dim inteind As Long Dim dbswiz As Object Dim rststatus As Object ' Maximaal aantal records ' Maximale tijdsspanne Set dbswiz = DBEngine.Workspaces(0).OpenDatabase(strWiz0x0) ' Openen Wiz0x0 Set rststatus = dbswiz.openrecordset("status") ' Openen Status rststatus.index = "ID" intaantal = rststatus.recordcount rststatus.movelast inteind = rststatus.fields("id").value rststatus.movefirst ' ID als index ' Aantal records ' Ga naar laatste record ' Hoogste nummer ' Ga naar eerste record If intaantal > conaantal Then ' Als : aantal groter dan maximaal Do ' Dan : voor alle records : If rststatus.fields("id").value < inteind - conaantal Then ' Als : waarde kleiner dan toegestaan rststatus.delete ' Dan : verwijderen rststatus.move ' Volgende record Loop Until rststatus.fields("id").value = inteind rststatus.movefirst ' Ga naar eerste record Do ' Voor alle records : If rststatus.fields("dt").value < Now() - contijd Then ' Als : record is ouder dan toegestaan rststatus.delete ' Dan : verwijderen 28 ECN-I

29 rststatus.move ' Volgende record Loop Until rststatus.fields("id").value = inteind Set rststatus = Nothing Set dbswiz = Nothing Public Function BeperktblStatus() Const conaantal As Long = 5000 Const contijd As Integer = 300 Dim intaantal As Long Dim inteind As Long Dim dbswiz As Object Dim rststatus As Object ' Maximaal aantal records ' Maximale tijdsspanne Set dbswiz = DBEngine.Workspaces(0).OpenDatabase(strWizIV) Set rststatus = dbswiz.openrecordset("tblstatus") ' Openen WizIV ' Openen tblstatus rststatus.index = "ExpID" intaantal = rststatus.recordcount rststatus.movelast inteind = rststatus.fields("id").value rststatus.movefirst ' ExpID als index ' Aantal records ' Ga naar laatste record ' Hoogste nummer ' Ga naar eerste record If intaantal > conaantal Then ' Als : aantal groter dan maximaal Do ' Dan : voor alle records : If rststatus.fields("id").value < inteind - conaantal Then ' Als : waarde kleiner dan toegestaan rststatus.delete ' Dan : verwijderen rststatus.move ' Volgende record Loop Until rststatus.fields("id").value = inteind rststatus.movefirst ' Ga naar eerste record Do ' Voor alle records : If rststatus.fields("date").value < Now() - contijd Then ' Als : record is ouder dan toegestaan rststatus.delete ' Dan : verwijderen rststatus.move ' Volgende record Loop Until rststatus.fields("id").value = inteind Set rststatus = Nothing Set dbswiz = Nothing ComprimeerDataModule Deze module heeft de volgende stukjes programmacode : 1. De functie Comprimeer zorgt ervoor dat zowel de bron als de backupdatabases worden gecomprimeerd. ECN-I

30 2. De procedure ControleerFiles verwijdert hulpfiles die door de functie Comprimeer worden gemaakt. Option Compare Database Option Explicit ' Deze module zorgt voor het comprimeren van de brondatabases en de doeldatabases Public Function Comprimeer() Dim strbron As String Dim strdoel As String ControleerFiles For Teller = 1 To conmax ' Voor alle databases If blnso(teller) = True Then ' Als : brondatabase bestaat strbron = strwizdir(souitint(teller)) ' Dan : strdoel = Uitvoer(strBron, "COMPRIMEER") DBEngine.CompactDatabase strbron, strdoel ' Comprimeer brondatabase van strbron naar strdoel Kill strbron ' Verwijder strbron FileCopy strdoel, strbron ' Kopieer van strdoel naar strbron Teller = 0 For Teller = 1 To conmax ' Voor alle databases If blnet(teller) = True Then ' Als : doeldatabase bestaat strbron = strcdir(etuitint(teller)) ' Dan : strdoel = Uitvoer(strBron, "COMPRIMEER") DBEngine.CompactDatabase strbron, strdoel ' Comprimeer doeldatabase van strbron naar strdoel Kill strbron ' Verwijder strbron FileCopy strdoel, strbron ' Kopieer van strdoel naar strbron Teller = 0 ControleerFiles Private Sub ControleerFiles() Dim strbron As String Dim strdoel As String For Teller = 1 To conmax ' Voor alle databases strbron = strwizdir(souitint(teller)) ' Bron database strdoel = Uitvoer(strBron, "COMPRIMEER") ' Nieuwe database uit brondatabase If Dir(strDoel) <> "" Then ' Als : de nieuwe database bestaat Kill strdoel ' Dan : deze verwijderen Teller = 0 For Teller = 1 To conmax ' Voor alle databases strbron = strcdir(etuitint(teller)) ' Doel database strdoel = Uitvoer(strBron, "COMPRIMEER") ' Nieuwe database uit doeldatabase 30 ECN-I

31 If Dir(strDoel) <> "" Then Kill strdoel Teller = 0 ' Als : nieuwe database bestaat ' Dan : deze verwijderen DeclaratieModule Deze module heeft de volgende stukjes programmacode : 6. De declaraties verzorgen de variabelen en constanten die nodig zijn binnen deze database. De hier gedeclareerde waarden zijn beschikbaar binnen de hele database. 7. De functie Initialisatie roept de initialisatie routines aan. Dit is nodig omdat de diverse initialisatie routines niet van buiten deze module kunnen worden aangeroepen. 8. De procedure InitialisatieBLN geeft de publieke variabelen blnso en blnet een startwaarde. 9. De procedure InitialisatieSchijf zet alle computerspecifieke verwijzingen goed. De keuze wordt bepaald door de waarde van consysteem. De mogelijkheden zijn Test (voor testen), 020 (voor Wiz020) en 030 (voor Wiz030). 10. De procedure RijCelVullen is bedoeld voor uitbreidingen. Option Compare Database Option Explicit ' Deze module verzorgt alle noodzakelijke declaraties die door de gehele database worden gebruikt Public Const conmax As Integer = 30 Public Const contabel As String = "Data" Public blnso(0 To conmax) As Boolean Public blnet(0 To conmax) As Boolean Public Teller As Integer Public strxpschijf As String Public strcschijf As String Public strgschijf As String Public strwizschijf As String Public strwiz0x0 As String Public strwiziv As String ' Aantal opstellingen ' Naam tabel in Wizcon output ' Rij met bestaande Wizcon databases ' Rij met bestaande BackUp databases ' Waarde gebruikt in For.. lussen ' Verwijzing naar XP directorie ' Verwijzing naar BackUp directorie ' Verwijzing naar Database directorie ' Verwijzing naar Wizcon directorie ' Verwijzing naar Wiz0x0 database ' Verwijzing naar WizIV database Dim RijCel(1 To 26) As String Const consysteem As String = "030" ' Bepaalt de waarde van verwijzingen naar schijven Public Function Initialisatie() InitialisatieBLN InitialisatieSchijf RijCelVullen ' Alle bln's initialiseren ' Schijfverwijzingen goedzetten ' Celnummers goedzetten Private Sub InitialisatieBLN() ECN-I

32 For Teller = 0 To conmax blnso(teller) = False blnet(teller) = False Teller = 0 ' Voor alle opstellingen ' Initialiseer blnso ' Initialiseer blnet Private Sub InitialisatieSchijf() Select Case consysteem ' Waarde van consysteem Case "test" ' Als "test" dan : ' worden de schijf strings goedgezet voor het test systeem strxpschijf = "C:\Data\XP\" strcschijf = "C:\Data\C\" strwizschijf = "C:\Data\WIZ\" strgschijf = "C:\Data\G\" ' en de database strings voor het test systeem strwiz0x0 = "C:\Data\wiz\Wiz030.mdb" strwiziv = "C:\Data\wiz\WizIV.mdb" Case "020" ' Als "020" dan : ' worden de schijf strings goedgezet voor Wiz020 strxpschijf = "\\ECNTS1\G_sofcxp\Wizcon\" strcschijf = "D:\Data\BackUp\" strwizschijf = "D:\Wizprj\Wiz020\Database\" ' en de database strings voor Wiz020 strwiz0x0 = "D:\Wizprj\Wiz020\Database\Wiz020.mdb" strwiziv = "D:\Wizprj\Wiz020\Addons\WizIV.mdb" Case "030" ' Als "030" dan : ' worden de schijf strings goedgezet voor Wiz030 strxpschijf = "\\ECNTS1\G_sofcxp\Wizcon\" strcschijf = "G:\BackUp\" strgschijf = "G:\Databases\" strwizschijf = "C:\Wizprj\Wiz030\Database\" ' en de database strings voor Wiz030 strwiz0x0 = "C:\Wizprj\Wiz030\Database\Wiz030.mdb" strwiziv = "C:\Wizprj\Wiz030\Addons\WizIV.mdb" End Select Private Sub RijCelVullen() RijCel(1) = "A" RijCel(2) = "B" RijCel(3) = "C" RijCel(4) = "D" RijCel(5) = "E" RijCel(6) = "F" RijCel(7) = "G" RijCel(8) = "H" RijCel(9) = "I" RijCel(10) = "J" RijCel(11) = "K" 32 ECN-I

33 RijCel(12) = "L" RijCel(13) = "M" RijCel(14) = "N" RijCel(15) = "O" RijCel(16) = "P" RijCel(17) = "Q" RijCel(18) = "R" RijCel(19) = "S" RijCel(20) = "T" RijCel(21) = "U" RijCel(22) = "V" RijCel(23) = "W" RijCel(24) = "X" RijCel(25) = "Y" RijCel(26) = "Z" KopieerModule Deze module heeft de volgende stukjes programmacode : 1. De functie Transport kopieert alle bestaande back-updatabases naar de XP schijf. 2. De procedure Transport2 kopieert functiedatabases naar de XP schijf. 3. De procedure ExportSO exporteert de SO tabellen naar de werkdatabase LopendeCel. Van daaruit wordt de data in gecomprimeerde vorm overgebracht naar functiedatabase LopendeCel030C. 4. De functie Overzetten voert de procedures ExportSO en Transport2 uit. Option Compare Database Option Explicit ' Deze module zorgt voor het kopieren van de files naar de XP schijf Public Function Transport() On Error GoTo Foutafhandeling ' Als er een fout optreedt For Teller = 1 To conmax ' Voor elke backup FileCopy strcdir(etuitint(teller)), strxpdir(etuitint(teller)) Teller = 0 ' Kopieer deze van C naar XP Exit Function ' Verlaat functie Foutafhandeling: ' Dit gedeelte wordt uitgevoerd als er een fout optreedt If Err = 53 Then ' Indien fout : kan het bestand niet vinden Resume ' Dan : ga verder met de volgende Else ' Anders : Dim intfoutnummer As Integer intfoutnummer = Err Err.Clear Err.Raise intfoutnummer ' Geef de juiste foutmelding Private Sub Transport2() On Error GoTo Foutafhandeling ' Als er een fout optreedt ECN-I

34 Dim str As String str = "Celgegevens" FileCopy strgdir(str), strxpdir(str) str = "LopendeCel030C" FileCopy strgdir(str), strxpdir(str) ' Kopieer van G naar XP ' Kopieer van G naar XP Exit Sub ' Verlaat functie Foutafhandeling: ' Dit gedeelte wordt uitgevoerd als er een fout optreedt If Err = 53 Then ' Indien fout : kan het bestand niet vinden Resume ' Dan : ga verder met de volgende Else ' Anders : Dim intfoutnummer As Integer intfoutnummer = Err Err.Clear Err.Raise intfoutnummer ' Geef de juiste foutmelding Private Sub ExportSO() Dim strso As String Dim stret As String Dim strbron As String Dim strdoel As String stret = "LopendeCel" For Teller = 0 To conmax ' Voor alle SO tabellen strso = SOUitint(Teller) If blnet(teller) Then ' Die bestaan DoCmd.TransferDatabase acexport, "Microsoft Access", strgdir(stret),, strso, strso ' Exporteer naar LopendeCel strso = "GegevensCellen" ' Idem voor GegevensCellen DoCmd.TransferDatabase acexport, "Microsoft Access", strgdir(stret),, strso, strso strso = stret & "030C" strbron = strgdir(stret) strdoel = strgdir(strso) If Dir(strDoel) <> "" Then ' Als : de nieuwe database bestaat Kill strdoel ' Dan : deze verwijderen DBEngine.CompactDatabase strbron, strdoel ' Comprimeer doeldatabase van strbron naar strdoel Public Function Overzetten() ExportSO Transport2 ' Alle tabellen overzetten ' De databases overzetten 34 ECN-I

35 5.2.6 OmzettingModule Deze module heeft de volgende stukjes programmacode : 9. De functie strwizdir geeft het volledige datapad van een brondatabase terug. 10. De functie strxpdir geeft het volledige pad van een doeldatabase op de XP schijf terug. 11. De functie strcdir geeft het volledige pad van een back-updatabase terug. 12. De functie strgdir geeft het volledige pad van een functie- of een werk-database terug. 13. De functie struitint geeft de stringwaarde van een integer terug. 14. De functie ETUitint geeft ET + stringwaarde integer terug 15. De functie SOUitint geeft SO + stringwaarde integer terug 16. De functie Uitvoer past de uitvoer van een schijfverwijzing naar wens aan. Option Compare Database Option Explicit ' Deze module verzorgt alle noodzakelijke omzettingen die door de hele database terugkomen Public Function strwizdir(naam As String) As String strwizdir = strwizschijf & Naam & ".mdb" ' Geeft een string met het juiste pad en de gekozen naam Public Function strxpdir(naam As String) As String strxpdir = strxpschijf & Naam & ".mdb" ' Geeft een string met het juiste pad en de gekozen naam Public Function strcdir(naam As String) As String strcdir = strcschijf & Naam & ".mdb" ' Geeft een string met het juiste pad en de gekozen naam Public Function strgdir(naam As String) As String strgdir = strgschijf & Naam & ".mdb" ' Geeft een string met het juiste pad en de gekozen naam Public Function struitint(nummer As Integer) As String struitint = CStr(Nummer) If Nummer < 10 Then struitint = "0" & struitint ' Zet integer om in string ' Als : geen voorloopnul ' Dan : voorloopnul toevoegen Public Function ETUitint(Nummer As Integer) As String ECN-I

36 ETUitint = "ET" & struitint(nummer) ' ET + nummer Public Function SOUitint(Nummer As Integer) As String SOUitint = "SO" & struitint(nummer) ' SO + nummer Public Function Uitvoer(Invoer As String, Tussen As String) As String Uitvoer = Left(Invoer, (Len(Invoer) - 4)) & Tussen & ".mdb" ' Invoer aanpassen met Tussen QueryDataModule Deze module heeft de volgende stukjes programmacode : 1. De functie TransportData voert voor elk paar van bestaande databases 2 queries uit. De eerste is het toevoegen van nieuwe data uit de brondatabases aan de back-updatabases. De tweede query beperkt de brondatabases tot een termijn van 50 dagen. 2. De procedure AanpassenET wordt gebruikt als de tabellen in de bron en back-up database verschillen van structuur. De procedure geeft de oude tabel in de back-updatabase een nieuwe naam en kopieert de tabel uit de brondatabase en plaatst deze in de back-updatabase. Option Compare Database Option Explicit ' Transport van data uit SOxx.mdb contabel naar ETxx.mdb "SOxx" Public Function TransportData() On Error GoTo Foutafhandeling Dim strsql As String DoCmd.SetWarnings False ' Als er een fout optreedt ' Geen waarschuwingen weergeven For Teller = 0 To conmax ' Voor alle opstellingen If blnet(teller) = True And blnso(teller) = True Then ' Die beide databases hebben strsql = "INSERT INTO " & SOUitint(Teller) & "UIT " & _ "SELECT " & SOUitint(Teller) & "IN.* " & _ "FROM " & SOUitint(Teller) & "IN;" DoCmd.RunSQL strsql ' Voeg data toe aan de backupdatabase strsql = "DELETE " & SOUitint(Teller) & "IN.DT, " & SOUitint(Teller) & "IN.* " & _ "FROM " & SOUitint(Teller) & "IN " & _ "WHERE (((" & SOUitint(Teller) & "IN.DT)<Now()-50));" DoCmd.RunSQL strsql ' Beperk de originele data tot 50 dagen Teller = 0 Exit Function Foutafhandeling: ' Verlaat procedure 36 ECN-I

37 ' Dit gedeelte wordt uitgevoerd als er een fout optreedt If Err = 3070 Then ' Indien fout : de tabeldefinities verschillen AanpassenET (Teller) ' Procedure AanpassenET Resume ' Dan : ga verder met de volgende Else ' Anders : Dim intfoutnummer As Integer intfoutnummer = Err Err.Clear Err.Raise intfoutnummer ' Geef de juiste foutmelding Private Sub AanpassenET(Nummer As Integer) Dim Bron As Object Dim Tabel As Object Dim Naam As String Dim strso As String Dim stret As String Set Bron = OpenDatabase(strCdir(ETUitint(Nummer))) strso = SOUitint(Nummer) stret = ETUitint(Nummer) ' Open de database For Teller = 0 To Bron.TableDefs.Count 1 ' Voor elke tabeldefinitie in de geopende database Set Tabel = Bron.TableDefs(Teller) Naam = Tabel.Name If Naam = SOUitint(Nummer) Then ' Als de goede tabel is gevonden dan : CurrentDb.TableDefs.Delete strso & "UIT" ' Verwijder de koppeling in de huidige database Tabel.Name = Naam & "_tot_" & Now() ' Hernoem de tabel ' Kopieer de nieuwe datatabel (via de huidige database) naar de backup DoCmd.TransferDatabase acimport, "Microsoft Access", strwizdir(strso),, contabel, strso DoCmd.TransferDatabase acexport, "Microsoft Access", strcdir(stret),, strso, strso CurrentDb.TableDefs.Delete strso ' En maak een nieuwe koppeling DoCmd.TransferDatabase aclink, "Microsoft Access", strcdir(stret),, strso, strso & "UIT" Teller = Nummer Set Tabel = Nothing Set Bron = Nothing ' Zet globale waarde 'Teller' weer op de goede waarde voor de lus ' Geef 'Tabel' vrij ' Geef 'Bron' vrij ECN-I

38 38 ECN-I

39 6. IVCEL De database is een functiedatabase. Deze heeft als functie het laten zien van (zojuist) opgenomen I-V curven van nog lopende cellen. De operators hebben hiermee een eenvoudige methode om te controleren of de I-V curve naar wens is opgenomen en geregistreerd. Deze database bevat : 0 tabellen 0 queries 1 formulier 0 rapporten 1 macro 3 modules. 6.1 Formulieren Het formulier in de database IVcel is : IVGrafiek Een formulier is een methode om interactief data te presenteren aan de gebruiker. Figuur 5 Weergave van het formulier IVgrafiek uit de database IVcel Het formulier bestaat uit meerdere onderdelen. Het kader ( Cel Keuze ) dient om een opstelling te selecteren. De grafiek wordt weergegeven door een object voor grafiekweergave. Verder is er een formuliermodule om diverse acties in goede banen te leiden. De bron voor het formulier en voor de grafiek is een koppeling naar één van de SOxx brondatabases. Welke koppeling wordt bepaald door de keuze van de opstelling. ECN-I

40 De module, die is verbonden aan het formulier, is relatief eenvoudig. Option Compare Database Option Explicit Private Sub Form_Open(Cancel As Integer) ' Bij openen formulier Initialisatie StartAlgemeen KnoppenUit KnoppenAan ' Beginwaarden goedzetten ' Verbindingen maken ' Alle knoppen in kader onzichtbaar maken ' Geselecteerde knoppen zichtbaar maken Private Sub KnoppenUit() Me.ET01.Visible = False Me.ET02.Visible = False Me.ET03.Visible = False Me.ET04.Visible = False Me.ET05.Visible = False Me.ET06.Visible = False Me.ET07.Visible = False Me.ET08.Visible = False Me.ET09.Visible = False Me.ET10.Visible = False Me.ET11.Visible = False ' Knop ET01 onzichtbaar maken ' Knop ET02 onzichtbaar maken ' Knop ET03 onzichtbaar maken ' Knop ET04 onzichtbaar maken ' Knop ET05 onzichtbaar maken ' Knop ET06 onzichtbaar maken ' Knop ET07 onzichtbaar maken ' Knop ET08 onzichtbaar maken ' Knop ET09 onzichtbaar maken ' Knop ET10 onzichtbaar maken ' Knop ET11 onzichtbaar maken Private Sub KnoppenAan() For Teller = 0 To conmax ' Voor alle opstellingen If blnet(teller) = True Then ' Die bestaan Select Case Teller Case 1 Me.ET01.Visible = True ' Knop Zichtbaar maken Me.Kader1.Value = 1 ' Opstelling = 1 Case 2 Me.ET02.Visible = True ' Knop Zichtbaar maken Me.Kader1.Value = 2 ' Opstelling = 2 Case 3 Me.ET03.Visible = True ' Knop Zichtbaar maken Me.Kader1.Value = 3 ' Opstelling = 3 Case 4 Me.ET04.Visible = True ' Knop Zichtbaar maken Me.Kader1.Value = 4 ' Opstelling = 4 Case 5 Me.ET05.Visible = True ' Knop Zichtbaar maken Me.Kader1.Value = 5 ' Opstelling = 5 Case 6 Me.ET06.Visible = True ' Knop Zichtbaar maken Me.Kader1.Value = 6 ' Opstelling = 6 Case 7 Me.ET07.Visible = True ' Knop Zichtbaar maken Me.Kader1.Value = 7 ' Opstelling = 7 Case 8 Me.ET08.Visible = True ' Knop Zichtbaar maken Me.Kader1.Value = 8 ' Opstelling = 8 40 ECN-I

41 Case 9 Me.ET09.Visible = True ' Knop Zichtbaar maken Me.Kader1.Value = 9 ' Opstelling = 9 Case 10 Me.ET10.Visible = True ' Knop Zichtbaar maken Me.Kader1.Value = 10 ' Opstelling = 10 Case 11 Me.ET11.Visible = True ' Knop Zichtbaar maken Me.Kader1.Value = 11 ' Opstelling = 11 End Select RijbronGrafiek (Me.Kader1.Value) ' Pas de grafiek aan Private Sub RijbronGrafiek(intOpstelling As Integer) Dim strrijbron As String Dim strso As String Dim strvcel As String Dim stricel As String Dim intmax As Integer strso = SOUitint(intOpstelling) ' SOxx intmax = DMax("[ExpNr]", strso & "IN") ' Max celnummer strvcel = "[" & strso & "_V_CEL_A_1]" ' Selectie string stricel = "[" & strso & "_I_CEL_A_1]" strrijbron = "TRANSFORM Avg(" & strvcel & ") AS [Vcel] " & _ "SELECT " & stricel & " " & _ "FROM [" & strso & "IN] " & _ "WHERE ((([Code]) = ""P"") AND (([ExpNr]) = " & intmax & ")) " & _ "GROUP BY " & stricel & " " & _ "PIVOT [RegNr];" Me.Grafiek1.RowSource = strrijbron ' Grafiek maken Me.Koptekst.Caption = ETUitint(intOpstelling) & "-" & intmax ' Titel maken Private Sub Kader1_AfterUpdate() RijbronGrafiek (Me.Kader1.Value) ' Bij kiezen opstelling ' Nieuwe grafiek maken 6.2 Macro s De macro in de database IVcel is : Afsluiten Macro s hebben acties en beschrijvingen. De acties geven aan wat de macro moet doen en de beschrijvingen geven een mogelijkheid om in de macro uitleg te geven over die actie Afsluiten De structuur van de macro afsluiten is weergegeven in Tabel 1. ECN-I

42 Tabel 6 De structuur van macro 'Afsluiten' Actie Beschrijving BerichtenInstellen Geen berichten Deze actie zorgt ervoor dat vensters die normaal gesproken om actie vragen van de gebruiker worden genegeerd. De macro wordt niet meer onderbroken. ProcedureUitvoeren AlgemeneIVModule, functie VerbreekVerbinding(), alle koppelingen verbreken Deze actie start een procedure die alle gekoppelde tabellen uit de database verwijdert Afsluiten Database afsluiten Deze actie sluit de database af 6.3 Modules De drie modules zijn : AlgemeneIVModule DeclaratieModule OmzettingModule Modules zijn verzamelingen van stukjes programma die elk een eigen functionaliteit hebben. Deze programmacode is weergegeven als tekst AlgemeneIVModule Deze module heeft de volgende stukjes programmacode : 13. De functie StartAlgemeen roept diverse andere programmadelen aan in een gedefinieerde volgorde. 14. De procedure BestaatSO controleert of de brondatabases bestaan. 15. De procedure KoppelenSO maakt een gekoppelde tabel aan voor elke brondatabase die bestaat als die een brontabel met meetgegevens heeft. 16. De functie VerbreekVerbinding verwijdert alle gekoppelde tabellen uit de database. 17. De procedure OpstellingSelectie selecteert de opstellingen met P data eruit Option Compare Database Option Explicit ' Deze module verzorgt alle noodzakelijke instellingen bij opstart ' en past databases aan bij veranderingen Public Function StartAlgemeen() VerbreekVerbinding BestaatSO KoppelenSO OpstellingSelectie ' Verbreek alle koppelingen ' blnso : welke database bestaat ' Koppelingen naar SO databases maken ' Opstellingen met P data selecteren Private Sub BestaatSO() On Error GoTo Foutafhandeling For Teller = 0 To conmax ' Als er een fout optreedt ' Voor alle opstellingen 42 ECN-I

43 blnso(teller) = True ' Database bestaat FileLen (strwizdir(souitint(teller))) ' Bepaal bestandsgrootte van database Teller = 0 Exit Sub ' Verlaat procedure Foutafhandeling: ' Dit gedeelte wordt uitgevoerd als er een fout optreedt If Err = 53 Then ' Indien fout : kan het bestand niet vinden blnso(teller) = False ' Dan : database bestaat niet Resume ' Ga verder met de volgende Else ' Anders : Dim intfoutnummer As Integer intfoutnummer = Err Err.Clear Err.Raise intfoutnummer ' Geef de juiste foutmelding Private Sub KoppelenSO() On Error GoTo Foutafhandeling ' Als er een fout optreedt Dim strso As String For Teller = 0 To conmax ' Voor alle opstellingen If blnso(teller) = True Then ' Als database bestaat strso = SOUitint(Teller) ' Dan : maak een koppeling DoCmd.TransferDatabase aclink, "Microsoft Access", strwizdir(strso),,contabel, strso& "IN" Exit Sub ' Verlaat procedure Foutafhandeling: ' Dit gedeelte wordt uitgevoerd als er een fout optreedt If Err = 3011 Then ' Indien fout : tabel bestaat niet blnso(teller) = False ' Dan : beweer dat database niet bestaat Resume ' Ga verder met de volgende Else ' Anders : Dim intfoutnummer As Integer intfoutnummer = Err Err.Clear Err.Raise intfoutnummer ' Geef de juiste foutmelding Public Function VerbreekVerbinding() For Teller = CurrentDb.TableDefs.Count - 1 To 0 Step -1 ' Alle tabellen controleren If CurrentDb.TableDefs(Teller).Attributes And dbattachedtable Then ' Als tabel is gekoppeld CurrentDb.TableDefs.Delete CurrentDb.TableDefs(Teller).Name ' Tabel verwijderen Teller = 0 ECN-I

44 Private Sub OpstellingSelectie() Dim strso As String For Teller = 0 To conmax ' Voor alle opstellingen If blnso(teller) = True Then ' Als : database bestaat strso = SOUitint(Teller) & "IN" ' Dan : If DMax("[ExpNr]", strso, "[Code] = ""P"" ") Then blnet(teller) = True ' Dan : IV bestaat Teller = 0 ' Als : er een P code is DeclaratieModule Deze module heeft de volgende stukjes programmacode : 11. De declaraties verzorgen de variabelen en constanten die nodig zijn binnen deze database. De hier gedeclareerde waarden zijn beschikbaar binnen de hele database. 12. De functie Initialisatie roept de initialisatie routines aan. Dit is nodig omdat de diverse initialisatie routines niet van buiten deze module kunnen worden aangeroepen. 13. De procedure InitialisatieBLN geeft de publieke variabelen blnso en blnet een startwaarde. 14. De procedure InitialisatieSchijf zet alle computerspecifieke verwijzingen goed. De keuze wordt bepaald door de waarde van consysteem. De mogelijkheden zijn Test (voor testen), 020 (voor Wiz020) en 030 (voor Wiz030). 15. De procedure RijCelVullen is bedoeld voor uitbreidingen. Option Compare Database Option Explicit ' Deze module verzorgt alle noodzakelijke declaraties die door de gehele database worden gebruikt Public Const conmax As Integer = 30 Public Const contabel As String = "Data" Public blnso(0 To conmax) As Boolean Public blnet(0 To conmax) As Boolean Public Teller As Integer Public strxpschijf As String Public strcschijf As String Public strgschijf As String Public strwizschijf As String Public strwiz0x0 As String Public strwiziv As String ' Aantal opstellingen ' Naam tabel in Wizcon output ' Rij met bestaande Wizcon databases ' Rij met bestaande BackUp databases ' Waarde gebruikt in For.. lussen ' Verwijzing naar XP directorie ' Verwijzing naar BackUp directorie ' Verwijzing naar Database directorie ' Verwijzing naar Wizcon directorie ' Verwijzing naar Wiz0x0 database ' Verwijzing naar WizIV database Dim RijCel(1 To 26) As String Const consysteem As String = "030" ' Bepaalt de waarde van verwijzingen naar schijven Public Function Initialisatie() 44 ECN-I

45 InitialisatieBLN InitialisatieSchijf RijCelVullen ' Alle bln's initialiseren ' Schijfverwijzingen goedzetten ' Celnummers goedzetten Private Sub InitialisatieBLN() For Teller = 0 To conmax blnso(teller) = False blnet(teller) = False Teller = 0 ' Voor alle opstellingen ' Initialiseer blnso ' Initialiseer blnet Private Sub InitialisatieSchijf() Select Case consysteem ' Waarde van consysteem Case "test" ' Als "test" dan : ' worden de schijf strings goedgezet voor het test systeem strxpschijf = "C:\Data\XP\" strcschijf = "C:\Data\C\" strwizschijf = "C:\Data\WIZ\" strgschijf = "C:\Data\G\" ' en de database strings voor het test systeem strwiz0x0 = "C:\Data\wiz\Wiz030.mdb" strwiziv = "C:\Data\wiz\WizIV.mdb" Case "020" ' Als "020" dan : ' worden de schijf strings goedgezet voor Wiz020 strxpschijf = "\\ECNTS1\G_sofcxp\Wizcon\" strcschijf = "D:\Data\BackUp\" strwizschijf = "D:\Wizprj\Wiz020\Database\" ' en de database strings voor Wiz020 strwiz0x0 = "D:\Wizprj\Wiz020\Database\Wiz020.mdb" strwiziv = "D:\Wizprj\Wiz020\Addons\WizIV.mdb" Case "030" ' Als "030" dan : ' worden de schijf strings goedgezet voor Wiz030 strxpschijf = "\\ECNTS1\G_sofcxp\Wizcon\" strcschijf = "G:\BackUp\" strgschijf = "G:\Databases\" strwizschijf = "C:\Wizprj\Wiz030\Database\" ' en de database strings voor Wiz030 strwiz0x0 = "C:\Wizprj\Wiz030\Database\Wiz030.mdb" strwiziv = "C:\Wizprj\Wiz030\Addons\WizIV.mdb" End Select Private Sub RijCelVullen() RijCel(1) = "A" RijCel(2) = "B" RijCel(3) = "C" RijCel(4) = "D" ECN-I

46 RijCel(5) = "E" RijCel(6) = "F" RijCel(7) = "G" RijCel(8) = "H" RijCel(9) = "I" RijCel(10) = "J" RijCel(11) = "K" RijCel(12) = "L" RijCel(13) = "M" RijCel(14) = "N" RijCel(15) = "O" RijCel(16) = "P" RijCel(17) = "Q" RijCel(18) = "R" RijCel(19) = "S" RijCel(20) = "T" RijCel(21) = "U" RijCel(22) = "V" RijCel(23) = "W" RijCel(24) = "X" RijCel(25) = "Y" RijCel(26) = "Z" OmzettingModule Deze module heeft de volgende stukjes programmacode : 17. De functie strwizdir geeft het volledige datapad van een brondatabase terug. 18. De functie strxpdir geeft het volledige pad van een doeldatabase op de XP schijf terug. 19. De functie strcdir geeft het volledige pad van een back-updatabase terug. 20. De functie strgdir geeft het volledige pad van een functie- of een werk-database terug. 21. De functie struitint geeft de stringwaarde van een integer terug. 22. De functie ETUitint geeft ET + stringwaarde integer terug 23. De functie SOUitint geeft SO + stringwaarde integer terug 24. De functie Uitvoer past de uitvoer van een schijfverwijzing naar wens aan. Option Compare Database Option Explicit ' Deze module verzorgt alle noodzakelijke omzettingen die door de hele database terugkomen Public Function strwizdir(naam As String) As String strwizdir = strwizschijf & Naam & ".mdb" ' Geeft een string met het juiste pad en de gekozen naam Public Function strxpdir(naam As String) As String strxpdir = strxpschijf & Naam & ".mdb" ' Geeft een string met het juiste pad en de gekozen naam Public Function strcdir(naam As String) As String 46 ECN-I

47 strcdir = strcschijf & Naam & ".mdb" ' Geeft een string met het juiste pad en de gekozen naam Public Function strgdir(naam As String) As String strgdir = strgschijf & Naam & ".mdb" ' Geeft een string met het juiste pad en de gekozen naam Public Function struitint(nummer As Integer) As String struitint = CStr(Nummer) If Nummer < 10 Then struitint = "0" & struitint ' Zet integer om in string ' Als : geen voorloopnul ' Dan : voorloopnul toevoegen Public Function ETUitint(Nummer As Integer) As String ETUitint = "ET" & struitint(nummer) ' ET + nummer Public Function SOUitint(Nummer As Integer) As String SOUitint = "SO" & struitint(nummer) ' SO + nummer Public Function Uitvoer(Invoer As String, Tussen As String) As String Uitvoer = Left(Invoer, (Len(Invoer) - 4)) & Tussen & ".mdb" ' Invoer aanpassen met Tussen ECN-I

48 48 ECN-I

49 7. LOOPCEL Deze database maakt de tabellen voor de database LopendeCel, comprimeert deze als LopendeCel030C en kopieert de laatste database samen met de database Celgegevens naar de XP schijf. Deze database bevat : 0 tabellen 0 queries 0 formulieren 0 rapporten 2 macro s 5 modules. 7.1 Macro s De twee macro s in de database LoopCel zijn : Afsluiten LopendeCelMaken Macro s hebben acties en beschrijvingen. De acties geven aan wat de macro moet doen en de beschrijvingen geven een mogelijkheid om in de macro uitleg te geven over die actie Afsluiten De structuur van de macro afsluiten is weergegeven in Tabel 1. Tabel 7 De structuur van macro 'Afsluiten' Actie Beschrijving BerichtenInstellen Geen berichten Deze actie zorgt ervoor dat vensters die normaal gesproken om actie vragen van de gebruiker worden genegeerd. De macro wordt niet meer onderbroken. ProcedureUitvoeren AlgemeneLoopModule, functie VerwijderSO(), alle tabellen verwijderen Deze actie start een procedure die alle tabellen uit de database verwijdert Afsluiten Database afsluiten Deze actie sluit de database af LopendeCelMaken De structuur van de macro LopendeCelMaken is weergegeven in Tabel 2. Tabel 8 De structuur van macro 'LopendeCelMaken' Actie Beschrijving BerichtenInstellen Geen berichten Deze actie zorgt ervoor dat vensters die normaal gesproken om actie vragen van de gebruiker worden genegeerd. De macro wordt niet meer onderbroken. ProcedureUitvoeren DeclaratieModule, functie Initialisatie(), geeft startwaarde aan alle variabelen Deze actie start een procedure die de gebruikte variabelen de juiste waarde geeft ECN-I

50 ProcedureUitvoeren AlgemeneLoopModule, functie StartLoopCel(), haalt data binnen Deze functie importeert alle tabellen die noodzakelijk zijn om de database LopendeCel van data te voorzien ProcedureUitvoeren QueryLoopModule, functie VerwerkSO(), verwerkt alle tabellen Deze functie filtert alle data en zet deze om naar het gewenste formaat. ProcedureUitvoeren KopieerModule, functie Overzetten(), maakt LopendeCel030C en zet alles over naar de XP schijf. Deze functie exporteert de tabellen naar LopendeCel, maakt LopendeCel030C en zorgt ervoor dat de juiste databases voor gebruikers beschikbaar zijn via de XP schijf. MacroStarten Database afsluiten Deze actie sluit de database af 7.2 Modules De vijf modules zijn : AlgemeneLoopModule DeclaratieModule KopieerModule OmzettingModule QueryLoopModule Modules zijn verzamelingen van stukjes programma die elk een eigen functionaliteit hebben. Deze programmacode is weergegeven als tekst AlgemeneLoopModule Deze module heeft de volgende stukjes programmacode : 18. De functie StartLoopCel roept diverse andere programmadelen aan in een gedefinieerde volgorde. 19. De procedure BestaatET controleert of de back-updatabases bestaan. 20. De functie VerwijderSO verwijdert alle tabellen uit de database 21. De procedure HaalETBinnen importeert tabellen vanuit de back-updatabases Option Compare Database Option Explicit ' Deze module verzorgt alle noodzakelijke instellingen bij opstart ' en past databases aan bij veranderingen Public Function StartLoopCel() VerwijderSO BestaatET HaalETBinnen ' Verwijder alle SO tabellen ' blnet : welke database bestaat ' Haal de tabellen binnen Private Sub BestaatET() On Error GoTo Foutafhandeling For Teller = 0 To conmax blnet(teller) = True FileLen (strcdir(etuitint(teller))) ' Als er een fout optreedt ' Voor alle opstellingen ' Database bestaat ' Bepaal bestandsgrootte van database 50 ECN-I

51 Teller = 0 Exit Sub ' Verlaat procedure Foutafhandeling: ' Dit gedeelte wordt uitgevoerd als er een fout optreedt If Err = 53 Then ' Indien fout : kan het bestand niet vinden blnet(teller) = False ' Dan : database bestaat niet Resume ' Ga verder met de volgende Else ' Anders : Dim intfoutnummer As Integer intfoutnummer = Err Err.Clear Err.Raise intfoutnummer ' Geef de juiste foutmelding Public Function VerwijderSO() On Error GoTo Foutafhandeling ' Als er een fout optreedt Dim strso As String For Teller = 0 To conmax strso = SOUitint(Teller) CurrentDb.TableDefs.Delete strso Teller = 0 ' Alle SO tabellen afwerken ' Tabel verwijderen CurrentDb.TableDefs.Delete "GegevensCellen" ' Tabel gegevenscellen verwijderen Exit Function ' Verlaat functie Foutafhandeling: ' Dit gedeelte wordt uitgevoerd als er een fout optreedt If Err = 3265 Then ' Indien fout : kan het object niet vinden Resume ' Dan : ga verder met de volgende Else ' Anders : Dim intfoutnummer As Integer intfoutnummer = Err Err.Clear Err.Raise intfoutnummer ' Geef de juiste foutmelding Private Sub HaalETBinnen() Dim strso As String Dim stret As String For Teller = 0 To conmax ' Voor alle opstellingen strso = SOUitint(Teller) stret = ETUitint(Teller) If blnet(teller) Then ' Als opstelling bestaat DoCmd.TransferDatabase acimport, "Microsoft Access", strcdir(stret),, strso, strso ' Importeer tabel SOxx ECN-I

52 strso = "GegevensCellen" stret = "Celgegevens" DoCmd.TransferDatabase acimport, "Microsoft Access", strcdir(stret),, strso, strso ' Importeer 'GegevensCellen' DeclaratieModule Deze module heeft de volgende stukjes programmacode : 16. De declaraties verzorgen de variabelen en constanten die nodig zijn binnen deze database. De hier gedeclareerde waarden zijn beschikbaar binnen de hele database. 17. De functie Initialisatie roept de initialisatie routines aan. Dit is nodig omdat de diverse initialisatie routines niet van buiten deze module kunnen worden aangeroepen. 18. De procedure InitialisatieBLN geeft de publieke variabelen blnso en blnet een startwaarde. 19. De procedure InitialisatieSchijf zet alle computerspecifieke verwijzingen goed. De keuze wordt bepaald door de waarde van consysteem. De mogelijkheden zijn Test (voor testen), 020 (voor Wiz020) en 030 (voor Wiz030). 20. De procedure RijCelVullen is bedoeld voor uitbreidingen. Option Compare Database Option Explicit ' Deze module verzorgt alle noodzakelijke declaraties die door de gehele database worden gebruikt Public Const conmax As Integer = 30 Public Const contabel As String = "Data" Public blnso(0 To conmax) As Boolean Public blnet(0 To conmax) As Boolean Public Teller As Integer Public strxpschijf As String Public strcschijf As String Public strgschijf As String Public strwizschijf As String Public strwiz0x0 As String Public strwiziv As String ' Aantal opstellingen ' Naam tabel in Wizcon output ' Rij met bestaande Wizcon databases ' Rij met bestaande BackUp databases ' Waarde gebruikt in For.. lussen ' Verwijzing naar XP directorie ' Verwijzing naar BackUp directorie ' Verwijzing naar Database directorie ' Verwijzing naar Wizcon directorie ' Verwijzing naar Wiz0x0 database ' Verwijzing naar WizIV database Dim RijCel(1 To 26) As String Const consysteem As String = "030" ' Bepaalt de waarde van verwijzingen naar schijven Public Function Initialisatie() InitialisatieBLN InitialisatieSchijf RijCelVullen ' Alle bln's initialiseren ' Schijfverwijzingen goedzetten ' Celnummers goedzetten Private Sub InitialisatieBLN() 52 ECN-I

53 For Teller = 0 To conmax blnso(teller) = False blnet(teller) = False Teller = 0 ' Voor alle opstellingen ' Initialiseer blnso ' Initialiseer blnet Private Sub InitialisatieSchijf() Select Case consysteem ' Waarde van consysteem Case "test" ' Als "test" dan : ' worden de schijf strings goedgezet voor het test systeem strxpschijf = "C:\Data\XP\" strcschijf = "C:\Data\C\" strwizschijf = "C:\Data\WIZ\" strgschijf = "C:\Data\G\" ' en de database strings voor het test systeem strwiz0x0 = "C:\Data\wiz\Wiz030.mdb" strwiziv = "C:\Data\wiz\WizIV.mdb" Case "020" ' Als "020" dan : ' worden de schijf strings goedgezet voor Wiz020 strxpschijf = "\\ECNTS1\G_sofcxp\Wizcon\" strcschijf = "D:\Data\BackUp\" strwizschijf = "D:\Wizprj\Wiz020\Database\" ' en de database strings voor Wiz020 strwiz0x0 = "D:\Wizprj\Wiz020\Database\Wiz020.mdb" strwiziv = "D:\Wizprj\Wiz020\Addons\WizIV.mdb" Case "030" ' Als "030" dan : ' worden de schijf strings goedgezet voor Wiz030 strxpschijf = "\\ECNTS1\G_sofcxp\Wizcon\" strcschijf = "G:\BackUp\" strgschijf = "G:\Databases\" strwizschijf = "C:\Wizprj\Wiz030\Database\" ' en de database strings voor Wiz030 strwiz0x0 = "C:\Wizprj\Wiz030\Database\Wiz030.mdb" strwiziv = "C:\Wizprj\Wiz030\Addons\WizIV.mdb" End Select Private Sub RijCelVullen() RijCel(1) = "A" RijCel(2) = "B" RijCel(3) = "C" RijCel(4) = "D" RijCel(5) = "E" RijCel(6) = "F" RijCel(7) = "G" RijCel(8) = "H" RijCel(9) = "I" RijCel(10) = "J" RijCel(11) = "K" RijCel(12) = "L" ECN-I

54 RijCel(13) = "M" RijCel(14) = "N" RijCel(15) = "O" RijCel(16) = "P" RijCel(17) = "Q" RijCel(18) = "R" RijCel(19) = "S" RijCel(20) = "T" RijCel(21) = "U" RijCel(22) = "V" RijCel(23) = "W" RijCel(24) = "X" RijCel(25) = "Y" RijCel(26) = "Z" KopieerModule Deze module heeft de volgende stukjes programmacode : 5. De functie Transport kopieert alle bestaande back-updatabases naar de XP schijf. 6. De procedure Transport2 kopieert functiedatabases naar de XP schijf. 7. De procedure ExportSO exporteert de SO tabellen naar de werkdatabase LopendeCel. Van daaruit wordt de data in gecomprimeerde vorm overgebracht naar functiedatabase LopendeCel030C. 8. De functie Overzetten voert de procedures ExportSO en Transport2 uit. Option Compare Database Option Explicit ' Deze module zorgt voor het kopieren van de files naar de XP schijf Public Function Transport() On Error GoTo Foutafhandeling ' Als er een fout optreedt For Teller = 1 To conmax ' Voor elke backup FileCopy strcdir(etuitint(teller)), strxpdir(etuitint(teller)) Teller = 0 ' Kopieer deze van C naar XP Exit Function ' Verlaat functie Foutafhandeling: ' Dit gedeelte wordt uitgevoerd als er een fout optreedt If Err = 53 Then ' Indien fout : kan het bestand niet vinden Resume ' Dan : ga verder met de volgende Else ' Anders : Dim intfoutnummer As Integer intfoutnummer = Err Err.Clear Err.Raise intfoutnummer ' Geef de juiste foutmelding Private Sub Transport2() On Error GoTo Foutafhandeling ' Als er een fout optreedt 54 ECN-I

55 Dim str As String str = "Celgegevens" FileCopy strgdir(str), strxpdir(str) str = "LopendeCel030C" FileCopy strgdir(str), strxpdir(str) ' Kopieer van G naar XP ' Kopieer van G naar XP Exit Sub ' Verlaat functie Foutafhandeling: ' Dit gedeelte wordt uitgevoerd als er een fout optreedt If Err = 53 Then ' Indien fout : kan het bestand niet vinden Resume ' Dan : ga verder met de volgende Else ' Anders : Dim intfoutnummer As Integer intfoutnummer = Err Err.Clear Err.Raise intfoutnummer ' Geef de juiste foutmelding Private Sub ExportSO() Dim strso As String Dim stret As String Dim strbron As String Dim strdoel As String stret = "LopendeCel" For Teller = 0 To conmax ' Voor alle SO tabellen strso = SOUitint(Teller) If blnet(teller) Then ' Die bestaan DoCmd.TransferDatabase acexport, "Microsoft Access", strgdir(stret),, strso, strso ' Exporteer naar LopendeCel strso = "GegevensCellen" ' Idem voor GegevensCellen DoCmd.TransferDatabase acexport, "Microsoft Access", strgdir(stret),, strso, strso strso = stret & "030C" strbron = strgdir(stret) strdoel = strgdir(strso) If Dir(strDoel) <> "" Then ' Als : de nieuwe database bestaat Kill strdoel ' Dan : deze verwijderen DBEngine.CompactDatabase strbron, strdoel ' Comprimeer doeldatabase van strbron naar strdoel Public Function Overzetten() ExportSO Transport2 ' Alle tabellen overzetten ' De databases overzetten ECN-I

56 7.2.4 OmzettingModule Deze module heeft de volgende stukjes programmacode : 25. De functie strwizdir geeft het volledige datapad van een brondatabase terug. 26. De functie strxpdir geeft het volledige pad van een doeldatabase op de XP schijf terug. 27. De functie strcdir geeft het volledige pad van een back-updatabase terug. 28. De functie strgdir geeft het volledige pad van een functie- of een werk-database terug. 29. De functie struitint geeft de stringwaarde van een integer terug. 30. De functie ETUitint geeft ET + stringwaarde integer terug 31. De functie SOUitint geeft SO + stringwaarde integer terug 32. De functie Uitvoer past de uitvoer van een schijfverwijzing naar wens aan. Option Compare Database Option Explicit ' Deze module verzorgt alle noodzakelijke omzettingen die door de hele database terugkomen Public Function strwizdir(naam As String) As String strwizdir = strwizschijf & Naam & ".mdb" ' Geeft een string met het juiste pad en de gekozen naam Public Function strxpdir(naam As String) As String strxpdir = strxpschijf & Naam & ".mdb" ' Geeft een string met het juiste pad en de gekozen naam Public Function strcdir(naam As String) As String strcdir = strcschijf & Naam & ".mdb" ' Geeft een string met het juiste pad en de gekozen naam Public Function strgdir(naam As String) As String strgdir = strgschijf & Naam & ".mdb" ' Geeft een string met het juiste pad en de gekozen naam Public Function struitint(nummer As Integer) As String struitint = CStr(Nummer) If Nummer < 10 Then struitint = "0" & struitint ' Zet integer om in string ' Als : geen voorloopnul ' Dan : voorloopnul toevoegen Public Function ETUitint(Nummer As Integer) As String ETUitint = "ET" & struitint(nummer) ' ET + nummer 56 ECN-I

57 Public Function SOUitint(Nummer As Integer) As String SOUitint = "SO" & struitint(nummer) ' SO + nummer Public Function Uitvoer(Invoer As String, Tussen As String) As String Uitvoer = Left(Invoer, (Len(Invoer) - 4)) & Tussen & ".mdb" ' Invoer aanpassen met Tussen QueryLoopModule Deze module heeft de volgende stukjes programmacode : 22. De procedure VerwijderP verwijdert alle P data uit een tabel. 23. De procedure VerwijderF verwijdert alle F data uit een tabel. 24. De procedure VerwijderQ verwijdert alle Q data uit een tabel. 25. De procedure MaxCelNummer verwijdert alle data uit een tabel, uitgezonderd de data van de laatste test. 26. De procedure MaakVeld voegt een leeg veld in de tabel in. Deze procedure wordt gebruikt door andere procedures die daarna het veld ook vullen met data. 27. De procedure MaakOpstelling maakt een veld en vult dit met het opstellingsnummer. 28. De procedure MaakVCel maakt een veld en vult dit met V(mV) data. 29. De procedure MaakTCel maakt een veld en vult dit met T( C) data. 30. De procedure MaakJCel maakt een veld en vult dit met J(mA/cm²) data. 31. De procedure MaakPCel maakt een veld en vult dit met P(mW/cm²) data. 32. De procedure MaakuFCel maakt een veld en vult dit met uf(%) data. 33. De procedure MaakTijdAs maakt een veld en vult dit met t(hrs) data. 34. De procedure Middelen zorgt ervoor dat het aantal datapunten niet te groot wordt. De grafiek kan maar een beperkt aantal datapunten aan (ongeveer 4000 punten). 35. De functie VanKommaNaarPunt zet komma s in een string om in punten. Dit is noodzakelijk omdat in SQL de Amerikaanse indeling voor getallen gebruikt. 36. De functie VerwerkSO roept de diverse programma delen in een gedefinieerde volgorde aan. 37. De procedure VerwijderVeld verwijdert alle overbodige velden uit een tabel. Option Compare Database Option Explicit ' Deze module verzorgt alle bewerkingen op de SOxx tabellen die noodzakelijk zijn Dim strsql As String Dim strso As String Dim strveld As String Dim strupdate As String Dim strset As String Dim strint As String Private Sub VerwijderP(intNummer As Integer) DoCmd.SetWarnings False strso = SOUitint(intNummer) ' Waarschuwingen uit ' Voor Tabel(Nummer) ECN-I

58 strsql = "DELETE " & strso & ".* " & _ "From " & strso & " " & _ "WHERE (((" & strso & ".Code)=""p""));" DoCmd.RunSQL strsql ' Verwijder alles met code P Private Sub VerwijderF(intNummer As Integer) DoCmd.SetWarnings False ' Waarschuwingen uit strso = SOUitint(intNummer) ' Voor Tabel(Nummer) strsql = "DELETE " & strso & ".* " & _ "From " & strso & " " & _ "WHERE (((" & strso & ".Code)=""f""));" DoCmd.RunSQL strsql ' Verwijder alles met code F Private Sub VerwijderQ(intNummer As Integer) DoCmd.SetWarnings False ' Waarschuwingen uit strso = SOUitint(intNummer) ' Voor Tabel(Nummer) strsql = "DELETE " & strso & ".* " & _ "From " & strso & " " & _ "WHERE (((" & strso & ".Code)=""q""));" DoCmd.RunSQL strsql ' Verwijder alles met code Q Private Sub MaxCelNummer(intNummer As Integer) On Error GoTo Foutafhandeling ' Als er een fout optreedt Dim intmax As Integer DoCmd.SetWarnings False ' Waarschuwingen uit strso = SOUitint(intNummer) intmax = DMax("[ExpNr]", strso) strsql = "DELETE " & strso & ".* " & _ "From " & strso & " " & _ ' Voor Tabel(Nummer) ' Bepaal het laatste celnummer "WHERE (((" & strso & ".ExpNr)<" & intmax & "));" DoCmd.RunSQL strsql ' Verwijder alle andere experimenten strsql = "DELETE GegevensCellen.* " & _ "FROM GegevensCellen " & _ "WHERE (((GegevensCellen.Opstellingnummer)=" & intnummer & ") " & _ "AND ((GegevensCellen.Celnummer)<>" & intmax & "));" DoCmd.RunSQL strsql ' Verwijder alle andere celgegevens Exit Sub ' Verlaat procedure Foutafhandeling: ' Dit gedeelte wordt uitgevoerd als er een fout optreedt If Err = 94 Then ' Indien fout : ongeldig gebruik van Null Resume ' Ga verder met de volgende Else ' Anders : Dim intfoutnummer As Integer 58 ECN-I

59 intfoutnummer = Err Err.Clear Err.Raise intfoutnummer ' Geef de juiste foutmelding Private Sub MaakVeld(strTabel As String, strnaam As String) Dim dbs As Object Dim tdftabel As Object Dim fldveld As Object Set dbs = CurrentDb ' Huidige database Set tdftabel = dbs.tabledefs(strtabel) ' Open tabel Set fldveld = tdftabel.createfield(strnaam, dbdouble) ' Maak nieuw veld tdftabel.fields.append fldveld ' En voeg het toe Set fldveld = Nothing Set tdftabel = Nothing Set dbs = Nothing Private Sub MaakOpstelling(intNummer As Integer) strveld = "OpstelNr" ' Veldnaam strso = SOUitint(intNummer) ' Voor Tabel(Nummer) strupdate = "UPDATE " & strso & " " strset = "SET " & strso & ".[" & strveld & "] = " & intnummer & ";" strsql = strupdate & strset MaakVeld strso, strveld DoCmd.RunSQL strsql ' Maak veld ' Veld vullen met waarden Private Sub MaakVCel(intNummer As Integer) strveld = "V (mv)" ' Veldnaam strso = SOUitint(intNummer) ' Voor Tabel(Nummer) strupdate = "UPDATE " & strso & " " strset = "SET " & strso & ".[" & strveld & "] = " strint = "Int([" & strso & "_V_CEL_A_1]);" strsql = strupdate & strset & strint MaakVeld strso, strveld DoCmd.RunSQL strsql ' Maak veld ' Veld vullen met waarden Private Sub MaakTCel(intNummer As Integer) strveld = "T ( C)" ' Veldnaam strso = SOUitint(intNummer) ' Voor Tabel(Nummer) strupdate = "UPDATE " & strso & " " strset = "SET " & strso & ".[" & strveld & "] = " strint = "Int([" & strso & "_T_CEL_A_1]);" ECN-I

60 strsql = strupdate & strset & strint MaakVeld strso, strveld DoCmd.RunSQL strsql ' Maak veld ' Veld vullen met waarden Private Sub MaakJCel(intNummer As Integer) Dim strinner As String Dim stron As String strveld = "J (ma/cm²)" ' Veldnaam strso = SOUitint(intNummer) ' Voor Tabel(Nummer) strupdate = "UPDATE " & strso & " " strinner = "INNER JOIN GegevensCellen " stron = "ON " & strso & ".OpstelNr = GegevensCellen.Opstellingnummer " strset = "SET " & strso & ".[" & strveld & "] = " strint = "Int(1000*[" & strso & "]![" & strso & "_I_CEL_A_1]/[GegevensCellen]![Oppervlak]);" strsql = strupdate & strinner & stron & strset & strint MaakVeld strso, strveld DoCmd.RunSQL strsql ' Maak veld ' Veld vullen met waarden Private Sub MaakPCel(intNummer As Integer) Dim strinner As String Dim stron As String strveld = "P (mw/cm²)" ' Veldnaam strso = SOUitint(intNummer) ' Voor Tabel(Nummer) strupdate = "UPDATE " & strso & " " strinner = "INNER JOIN GegevensCellen " stron = "ON " & strso & ".OpstelNr = GegevensCellen.Opstellingnummer " strset = "SET " & strso & ".[" & strveld & "] = " strint = "Int([" & strso & "]![" & strso & "_V_CEL_A_1]*" & _ "[" & strso & "]![" & strso & "_I_CEL_A_1]/" & _ "[GegevensCellen]![Oppervlak]);" strsql = strupdate & strinner & stron & strset & strint MaakVeld strso, strveld DoCmd.RunSQL strsql ' Maak veld ' Veld vullen met waarden Private Sub MaakuFCel(intNummer As Integer) Dim strsom As String strveld = "uf (%)" ' Veldnaam strso = SOUitint(intNummer) ' Voor Tabel(Nummer) strsom = "([" & strso & "_AN_H2_1]+[" & strso & "_AN_H2_2]+[" & strso & "_AN_CO_1]+"& _ "(3/2)*[" & strso & "_AN_NH3_1]+" & _ "4*[" & strso & "_AN_CH4_1]+4*[" & strso & "_AN_H2S_1])" strupdate = "UPDATE " & strso & " " strset = "SET " & strso & ".[" & strveld & "] = " strint = "Int(697*[" & strso & "_I_CEL_A_1]/" & strsom & ");" 60 ECN-I

61 strsql = strupdate & strset & strint MaakVeld strso, strveld DoCmd.RunSQL strsql ' Maak veld ' Veld vullen met waarden Private Sub MaakTijdAs(intNummer As Integer) On Error GoTo Foutafhandeling ' Als er een fout optreedt Dim strwhere As String Dim strtijdmin As String Dim dbltijdmin As Double strveld = "t (hrs)" strso = SOUitint(intNummer) ' Veldnaam ' Voor Tabel(Nummer) strwhere = "[" & strso & "_T_CEL_A_1]>200" dbltijdmin = DMin("[DT]", strso, strwhere) strtijdmin = VanKommaNaarPunt(dblTijdMin) strsql = "DELETE " & strso & ".* " & _ "From " & strso & " " & _ ' Select DT voor t = 0 uur ' Omzetten naar string "WHERE (((" & strso & ".DT)<" & strtijdmin & "));" DoCmd.RunSQL strsql ' DT lager dan t = 0 verwijderen strupdate = "UPDATE " & strso & " " strset = "SET " & strso & ".[" & strveld & "] = " strint = "Int(([DT]-" & strtijdmin & ")*240)/10;" strsql = strupdate & strset & strint MaakVeld strso, strveld DoCmd.RunSQL strsql ' Maak veld ' Veld vullen met waarden Exit Sub ' Verlaat procedure Foutafhandeling: ' Dit gedeelte wordt uitgevoerd als er een fout optreedt If Err = 94 Then ' Indien fout : ongeldig gebruik van Null dbltijdmin = Now ' Select DT voor t = 0 uur Resume ' Ga verder met de volgende Else ' Anders : Dim intfoutnummer As Integer intfoutnummer = Err Err.Clear Err.Raise intfoutnummer ' Geef de juiste foutmelding Private Sub Middelen(intNummer As Integer) Dim dbs As Object Dim tdftabel As Object Dim rsttabel As Object Dim varrij() As Variant Dim strfind As String Dim strcount As String Dim intcount As Integer ECN-I

62 Dim x As Integer, y As Integer Dim dblcount As Variant Dim dbltijd As Double strveld = "t_mid" strso = SOUitint(intNummer) ' Veldnaam ' Voor Tabel(Nummer) Set dbs = CurrentDb Set tdftabel = dbs.tabledefs(strso) intcount = tdftabel.recordcount ' Aantal records tellen Set tdftabel = Nothing Set dbs = Nothing Select Case intcount ' Afhankelijk van aantal records : Case 0 To 4000 ' Elk half uur een punt strint = "Int(([DT])*100000)/100000;" Case 4001 To ' Elke 2 uur een punt strint = "Int((Int(([DT])*12)/12)*10000)/10000;" Case Else ' Elke 6 uur een punt strint = "Int(([DT])*4)/4;" End Select strupdate = "UPDATE " & strso & " " strset = "SET " & strso & ".[" & strveld & "] = " strsql = strupdate & strset & strint MaakVeld strso, strveld DoCmd.RunSQL strsql ' Maak veld ' Veld vullen met waarden strsql = "SELECT * FROM " & strso & " ORDER BY DT;" Set rsttabel = CurrentDb.OpenRecordset(strSQL) intcount = rsttabel.fields.count ' Aantal velden tellen ReDim varrij(0 To intcount - 1) ' Rij definieren If rsttabel.recordcount = 0 Then Exit Sub ' Als : geen records, dan prodecure verlaten rsttabel.movelast rsttabel.movefirst ' Ga naar het eind ' Ga naar het begin Do y = 1 For x = 0 To intcount 1 varrij(x) = rsttabel.fields(x).value ' Rij vullen met beginwaarden dblcount = rsttabel.fields(strveld).value strcount = VanKommaNaarPunt(dblCount) ' Waarde ophalen uit "t_mid" ' Omzetten in string Do strfind = strveld & " = " & strcount rsttabel.find strfind ' Volgende record zoeken If rsttabel.nomatch Then Exit Do ' Als : geen record, dan : verlaat loop y = y + 1 ' Aantal records tellen For x = 0 To intcount - 1 ' Voor alle velden : Select Case rsttabel.fields(x).name Case "ExpNr", "RegNr", "DT", strveld ' Niets 62 ECN-I

63 Case "Code" ' Maak "Q" rsttabel.edit rsttabel.fields(x).value = "Q" rsttabel.update Case Else ' Sommeer varrij(x) = varrij(x) + rsttabel.fields(x).value End Select Loop For x = 0 To intcount - 1 ' Voor alle velden : Select Case rsttabel.fields(x).name Case "ExpNr", "RegNr", "Code", "DT", strveld ' Niets Case Else ' Bereken gemiddelde varrij(x) = varrij(x) / y End Select rsttabel.findfirst strfind ' Zoek eerste record For x = 0 To intcount - 1 ' Voor alle velden : rsttabel.edit rsttabel.fields(x).value = varrij(x) ' Vul de nieuwe waarden in rsttabel.update strfind = "Code = ""S""" rsttabel.find strfind If rsttabel.nomatch Then Exit Do ' Zoek de volgende groep records ' Als : geen records, dan : verlaat loop Loop Set rsttabel = Nothing Private Function VanKommaNaarPunt(Komma As Variant) As Variant Dim x As Integer Komma = CStr(Komma) VanKommaNaarPunt = Komma ' Maak string ' Geef waarde For x = 1 To Len(Komma) ' Voor elk karakter : If Right(Left(Komma, x), 1) = "," Then ' Als : is "," VanKommaNaarPunt = Left(Komma, x - 1) & "." & Right(Komma, Len(Komma) - x) ' Dan : zet om in "." Public Function VerwerkSO() Dim rsttabel As Object Dim intcount As Integer For Teller = 0 To conmax ' Voor elke tabel If blnet(teller) Then ' Als : tabel bestaat, dan : MaxCelNummer Teller ' Alleen de lopende cel ECN-I

64 VerwijderP Teller VerwijderF Teller Middelen Teller VerwijderQ Teller MaakOpstelling Teller ' Alleen S data ' Maximaal aantal datapunten ' Veld OpstelNr maken strso = SOUitint(Teller) ' Voor Tabel(Nummer) Set rsttabel = CurrentDb.OpenRecordset(strSO) intcount = rsttabel.recordcount ' Tel aantal records Set rsttabel = Nothing If intcount > 0 Then ' Als er records zijn : MaakTijdAs Teller ' Veld t (hrs) maken MaakVCel Teller ' Veld V (mv) maken MaakTCel Teller ' Veld T ( C) maken MaakJCel Teller ' Veld J (ma/cm²) maken MaakPCel Teller ' Veld P (mw/cm²) maken MaakuFCel Teller ' Veld uf (%) maken VerwijderVeld Teller Teller = 0 ' Overbodige velden verwijderen Private Sub VerwijderVeld(intNummer As Integer) Dim dbs As Object Dim tdftabel As Object Dim strtabel As String Dim strnaam As String Dim x As Integer strtabel = SOUitint(intNummer) Set dbs = CurrentDb Set tdftabel = dbs.tabledefs(strtabel) For x = tdftabel.indexes.count - 1 To 0 Step -1 tdftabel.indexes.delete tdftabel.indexes(x).name For x = tdftabel.fields.count - 1 To 0 Step -1 strnaam = tdftabel.fields(x).name Select Case strnaam Case "OpstelNr", "t (hrs)", "V (mv)", "T ( C)" Case "J (ma/cm²)", "P (mw/cm²)", "uf (%)" Case Else tdftabel.fields.delete tdftabel.fields(x).name End Select Set tdftabel = Nothing Set dbs = Nothing 64 ECN-I

65 8. LOPENDECEL De database is een werkdatabase. Deze heeft als functie het zichtbaar maken van het verloop van de testprocedure. De database wordt omgezet (gecomprimeerd) in een andere database (LopendeCel030C) en deze wordt dan beschikbaar gemaakt voor gebruik door derden. De functiedatabase LopendeCel030C heeft daarmee dezelfde objecten en functionaliteit als de werkdatabase LopendeCel. Deze database bevat : 12 tabellen 0 queries 1 formulier 0 rapporten 1 macro 3 modules. 8.1 Tabellen De tabellen in de database LopendeCel vallen uiteen in twee categorieën : GegevensCellen SOxx In de tabel GegevensCellen zijn de celgegevens opgeslagen van de cellen met het hoogste experiment nummer (de laatste cel). Figuur 6 Opbouw van de tabel GegevensCellen uit de database LopendeCel De velden Opstellingnummer en Celnummer verwijzen naar het juiste experiment zodat de bijbehorende data kunnen worden geselecteerd. Oppervlak geeft het oppervlak aan van de kathode en daarmee het actieve celoppervlak van de cel. Deze waarde, in vierkante centimeters, wordt gebruikt in de berekening van de stroomdichtheid. Celcodering geeft het type cel aan dat is gebruikt gedurende het experiment. Om verder nog relevante opmerkingen over het experiment op te slaan is het veld Opmerkingen toegevoegd. De velden Kathode en Anode slaan gegevens op over het aantal keren dat de respectievelijke gazen al in gebruik zijn. In de tabellen SOxx zijn de bewerkte data opgenomen van de betreffende opstelling. De data is zodanig bewerkt dat alleen die gegevens zijn opgenomen die nodig zijn voor het tekenen van een grafiek. Ook voor deze tabellen geldt dat ze alleen de data van de laatste cel bevatten. ECN-I

66 Figuur 7 Opbouw van de tabel SOxx uit de database LopendeCel 8.2 Formulieren Het formulier in de database LopendeCel is : LopendeCel Het formulier LopendeCel is bedoeld om gebruikers inzicht te geven in de prestaties van de cellen die nog getest worden. Figuur 8 Weergave van formulier 'LopendeCel' uit database 'LopendeCel' Het formulier bestaat uit meerdere onderdelen. Het kader ( Cel Keuze ) dient om een opstelling te selecteren. De grafiek wordt weergegeven door een object voor grafiekweergave. Verder is er een formuliermodule om diverse acties in goede banen te leiden. De bron voor het formulier en voor de grafiek is één van de SOxx tabellen. Welke tabel wordt bepaald door de keuze van de opstelling. De module, die is verbonden aan het formulier, is relatief eenvoudig. 66 ECN-I

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

Bijlage 1. Access VBA code voor het maken van barrièrebestanden. Planbureau voor de Leefomgeving Hoe open is de Waddenzee? Een indicator voor de openheid van het Waddenlandschap F.G. Wortelboer PBL publicatienummer 500180001 December 2009 Bijlage 1. Access VBA code

Nadere informatie

Access cursus - Hoofdstuk 19

Access cursus - Hoofdstuk 19 Access cursus - Hoofdstuk 19 Handleiding van Auteur: OctaFish Augustus 2013 Access cursus - Hoofdstuk 19 Office Automation Office gebruikers werken meestal binnen één programma, om de simpele reden dat

Nadere informatie

PHP en een MySQL database.

PHP en een MySQL database. mysql_php.doc 1/5 PHP en een MySQL database. Om informatie uit een MySQL database op te halen moet je de volgende stappen uitvoeren: 1. een verbinding maken met mysql; 2. een mysql database selecteren;

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

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

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

Inhoud. VBA Excel 2010

Inhoud. VBA Excel 2010 Inhoud VBA Excel 2010 Inhoudsopgave 0. INSTELLINGEN EXCEL 2010... 9 1. WAT IS VISUAL BASIC FOR APPLICATIONS... 16 1.1. Achtergrond... 16 1.2. VBA is meer dan een macrotaal... 16 Case 1: Macro "Walk of

Nadere informatie

Info-books. Toegepaste Informatica. Handleiding. Deel 40c : Gegevensbeheer en algoritmen in Access. HA40c. Jos Gils Erik Goossens

Info-books. Toegepaste Informatica. Handleiding. Deel 40c : Gegevensbeheer en algoritmen in Access. HA40c. Jos Gils Erik Goossens Info-books HA40c Toegepaste Informatica Handleiding Deel 40c : Gegevensbeheer en algoritmen in Access Jos Gils Erik Goossens Veldlengte Het maximale aantal tekens dat in een veld kan ingevoerd worden.

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

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

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

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

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

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

Access voor Beginners-Hoofdstuk 20

Access voor Beginners-Hoofdstuk 20 Access voor Beginners-Hoofdstuk 20 Handleiding van Auteur: OctaFish Januari 2014 handleiding: Access voor Beginners-Hoofdstuk 20 Access Hoofdstuk 20 Bladwijzers maken in een formulier Werken met een goed

Nadere informatie

Versieperikelen. Bijlage C

Versieperikelen. Bijlage C Bijlage C Versieperikelen In dit boek beschrijven we PL/SQL aan de hand van Oracle versie 11g. Alle eigenschappen die in dit boek behandeld worden, zijn in deze versie van Oracle (en in nog te verschijnen

Nadere informatie

Databases gebruiken. Databases gebruiken

Databases gebruiken. Databases gebruiken Databases gebruiken In deze module wordt van de kandidaat verwacht dat hij een goed begrip heeft van databases en aantoont competent te zijn in het gebruik van een database. Doel van de module De kandidaat:

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

Inhoudsopgave. Module 2 Geavanceerde formulieren

Inhoudsopgave. Module 2 Geavanceerde formulieren Inhoudsopgave Module 2 Geavanceerde formulieren Hoofdstuk 1 Hoofd en subformulieren... 2-3 1.1 Hoofd-Subformulieren maken... 2-3 1.2 Navigatieformulier maken... 2-7 1.3 Subformulier aanpassen... 2-11 1.5

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

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

Bijlage Inlezen nieuwe tarieven per verzekeraar

Bijlage Inlezen nieuwe tarieven per verzekeraar ! Bijlage inlezen nieuwe tarieven (vanaf 3.2) Bijlage Inlezen nieuwe tarieven per verzekeraar Scipio 3.303 biedt ondersteuning om gebruikers alle tarieven van de verschillende verzekeraars in één keer

Nadere informatie

Normaliseren van tabellen Praktische oefeningen

Normaliseren van tabellen Praktische oefeningen Normaliseren van tabellen Praktische oefeningen Oefening 1 : Het gebruik van een OPZOEKTABEL Maak eerst een backup van de werkende versie In onze eigen database moeten we het principe van een opzoektabel

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

INHOUDSOPGAVE. Inhoudsopgave

INHOUDSOPGAVE. Inhoudsopgave INHOUDSOPGAVE Inhoudsopgave Microsoft Word 7 Werken met het lint 7 Documenten maken en bewerken 8 In verschillende weergaven werken 11 Tekens en alinea s opmaken 13 Tekst en afbeeldingen bewerken en verplaatsen

Nadere informatie

Subrapporten. 5.1 Inleiding

Subrapporten. 5.1 Inleiding 5 Subrapporten 5.1 Inleiding Een subrapport is een rapport in een rapport. Een subrapport maak je dan ook net zoals je een gewoon rapport maakt. Een subrapport heeft bijna alle eigenschappen die een normaal

Nadere informatie

Info-books. Toegepaste Informatica. Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) AL20. Jos Gils Erik Goossens

Info-books. Toegepaste Informatica. Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) AL20. Jos Gils Erik Goossens Info-books AL20 Toegepaste Informatica Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) Jos Gils Erik Goossens Hoofdstuk 6 Lusstructuren of iteraties 6.1 Probleemstelling Het gebeurt dikwijls

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

Inleiding Visual Basic en VBA. Karel Nijs 2009/01

Inleiding Visual Basic en VBA. Karel Nijs 2009/01 Inleiding Visual Basic en VBA Karel Nijs 2009/01 Leswijze Eerst wat theorie Begeleid met (korte) oefeningen Ms Excel 2003 Online hulp: http://www.ozgrid.com/vba/ http://msdn.microsoft.com/en-us/library/sh9ywfdk(vs.80).aspx

Nadere informatie

Central Station. CS website

Central Station. CS website Central Station CS website Versie 1.0 18-05-2007 Inhoud Inleiding...3 1 De website...4 2 Het content management systeem...5 2.1 Inloggen in het CMS... 5 2.2 Boomstructuur... 5 2.3 Maptypen... 6 2.4 Aanmaken

Nadere informatie

6.8 Lijsten: oefeningen

6.8 Lijsten: oefeningen 6.8 Lijsten: oefeningen Opgaven 44.: Records zoeken Open het document "Autokosten". Klik in de lijst. Kies de opdracht 'Data - Formulier' [Data - Form]. Klik de knop 'Criteria' [Criteria]. Vul als zoekcriterium

Nadere informatie

ABN-Amro Shuttle Service export database. 1. Inleiding. 2. De Wizard. Functionele documentatie

ABN-Amro Shuttle Service export database. 1. Inleiding. 2. De Wizard. Functionele documentatie ABN-Amro Shuttle Service export database Functionele documentatie rudy@negenborn.net 04/2001 1. Inleiding Connexxion levert een taxidienst aan ABN-Amro. Werknemers van de ABN-Amro kunnen van deze taxidienst

Nadere informatie

Release Notes. Afdrukdatum: 2008/10/06

Release Notes. Afdrukdatum: 2008/10/06 Release Notes Afdrukdatum: 2008/10/06 Dit document beschrijft vanuit technisch oogpunt de aanpassingen in Hi-Ant aan de betreffende versie. Deze tekst is geenszins bedoeld als document naar de eindgebruiker,

Nadere informatie

Een Multi-functioneel formulier

Een Multi-functioneel formulier Een Multi-functioneel formulier Handleiding van Auteur: OctaHish December 2012 Een Multi-functioneel formulier In dit hoofdstuk pakken we de originele draad van het begin van de cursus weer op, en gaan

Nadere informatie

Dynamic Publisher Twee handige hulpjes voor DP

Dynamic Publisher Twee handige hulpjes voor DP Dynamic Publisher Twee handige hulpjes voor DP Ron Holst MSX Computer & Club Magazine nummer 89 - zomer 1997 Scanned, ocr ed and converted to PDF by HansO, 2001 Bij het doorspitten van diskettes en directory's

Nadere informatie

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Wat is scripting?

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Wat is scripting? Inhoud Computervaardigheden Hoofdstuk 4 Scripting (Let op: dit is enkel voor studenten Biologie.) Dit hoofdstuk bekijkt heel kort de basis van scripting. - Opstellen van functies. - Conditionele code.

Nadere informatie

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

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie Leren Programmeren met Visual Basic 6.0 Les 3+4 Hoofdstuk 4 : De Selectie Visual Basic 6.0 1 Basisstructuren (herhaling) Sequentie (HK2) : Alle opdrachten gewoon na mekaar uitvoeren. Hier worden geen keuzes

Nadere informatie

1.7 Koppelen aan externe data: aan een Access-database

1.7 Koppelen aan externe data: aan een Access-database 1 1.7 Koppelen aan externe data: aan een Access-database Access is het databaseprogramma dat bij de meeste Office-pakketten wordt geïnstalleerd. Met Access kun je uitgebreide databases opbouwen en data

Nadere informatie

Midi PDF Bladmuziek lezer

Midi PDF Bladmuziek lezer Inleiding. Ruim 20 ordners aan bladmuziek, meeste daarvan uitgeprint van een PDF. Even snel een nummer opzoeken wil dan ook niet, terwijl ik alles wel op alfabetische volgorde heb. Dat was het niet helemaal

Nadere informatie

Programmeren in Access met VBA

Programmeren in Access met VBA Programmeren in Access met VBA Kosten: 750,- excl. BTW per deelnemer Duur: 2 dagen Max Deelnemers: 8 U leert tijdens deze training alle concepten van de programmeertaal VBA (Visual Basic for Applications)

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

OFFICE A LA CARTE - ACCESS 2013

OFFICE A LA CARTE - ACCESS 2013 OFFICE A LA CARTE - ACCESS 2013 Inhoud HOOFDSTUK ACC-1.1: TERMINOLOGIE - (0:20) Wat is een database? Onderdelen van een database Tabellen en relaties Schematisch overzicht van de structuur van een database

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

Programmeren in Access 2016 met VBA

Programmeren in Access 2016 met VBA Programmeren in Access 2016 met VBA Kosten: 750,- excl. BTW per deelnemer Duur: 2 dagen Max Deelnemers: 8 Je leert tijdens deze training alle concepten van de programmeertaal VBA (Visual Basic for Applications)

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

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

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

1. Introductie tot SPSS

1. Introductie tot SPSS 1. Introductie tot SPSS Wat is SPSS? SPSS is een statistisch computerprogramma dat door wetenschappers wordt gebruikt om gegevens te verzamelen, analyseren en te bewerken. Het wordt voornamelijk gebruikt

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

Ook op internet wordt gebruik gemaakt van databases, zoals bij Marktplaats en Hyves.

Ook op internet wordt gebruik gemaakt van databases, zoals bij Marktplaats en Hyves. SAMENVATTING HOOFDSTUK 1 Databases Databases worden veel gebruikt. Er worden miljoenen gegevens in opgeslagen, bijvoorbeeld door de overheid, banken, verzekeringsmaatschappijen, boekingssystemen van vliegtuigmaatschappijen,

Nadere informatie

VBA voor Doe het Zelvers deel 9

VBA voor Doe het Zelvers deel 9 VBA voor Doe het Zelvers deel 9 Handleiding van Auteur: leofact Augustus 2014 VBA voor Doe het Zelvers is een reeks artikelen, bedoelt voor mensen die met VBA in Excel aan de slag willen om taken te automatiseren

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

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

Les 11 : Basis SQL (deel2).

Les 11 : Basis SQL (deel2). Les 11 : Basis SQL (deel2). Wat is SQL? SQL gaan we gebruiken voor het raadplegen van de database. We gaan gegevens invoegen in de database, selecteren, aanpassen en verwijderen van de database. Om dit

Nadere informatie

Backup en herstel. Handleiding

Backup en herstel. Handleiding Backup en herstel Handleiding Copyright 2007 Hewlett-Packard Development Company, L.P. Windows is een in de Verenigde Staten geregistreerd handelsmerk van Microsoft Corporation. De informatie in deze documentatie

Nadere informatie

Voorbeelden VBA Excel

Voorbeelden VBA Excel Voorbeelden VBA Excel Inhoud Voorbeelden VBA Excel... 1 Werkblad beveiligen... 3 Werkblad beveiliging opheffen... 3 Werkmap beveiligen... 3 Werkmap beveiliging opheffen... 3 Alle werkbladen van een werkmap

Nadere informatie

Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica

Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica Labo 4 Beheer van databanken Svenia CLAES (3Ti3) Britt JACOBS (3Ti3) Lies VAN

Nadere informatie

Inhoudsopgave. Module 2 Meer doen met functies

Inhoudsopgave. Module 2 Meer doen met functies Inhoudsopgave Module 2 Meer doen met functies Hoofdstuk 1 Veel gebruikte functies... 2-3 Verwijderen overbodige decimalen... 2-3 Willekeurige waarde... 2-6 GEMIDDELDEA, MAXA en MINA... 2-7 INTERVAL...

Nadere informatie

Inhoudsopgave Voorwoord 9 Nieuwsbrief 9 Introductie Visual Steps 10 Wat heeft u nodig? 11 Hoe werkt u met dit boek?

Inhoudsopgave Voorwoord 9 Nieuwsbrief 9 Introductie Visual Steps 10 Wat heeft u nodig? 11 Hoe werkt u met dit boek? Inhoudsopgave Voorwoord... 9 Nieuwsbrief... 9 Introductie Visual Steps... 10 Wat heeft u nodig?... 11 Hoe werkt u met dit boek?... 12 Uw voorkennis... 13 De volgorde van lezen... 14 De schermafbeeldingen...

Nadere informatie

1 Werken met (keuze)lijstjes: de control listbox

1 Werken met (keuze)lijstjes: de control listbox 1 Werken met (keuze)lijstjes: de control listbox 1.1 Keuzelijstjes: wat en waarom In een educatief programma wordt vaak gebruik gemaakt van keuzelijstjes. Enkele voorbeelden: * bij het opstarten van een

Nadere informatie

INHOUD. Ten geleide 13. 1 Excel 2007-2010 Basis 15

INHOUD. Ten geleide 13. 1 Excel 2007-2010 Basis 15 INHOUD Ten geleide 13 1 Excel 2007-2010 Basis 15 1.1 Inleiding 15 1.2 Excel 2007-2010 samengevat 15 1.2.1 Configuratie instellen en de werkomgeving aanpassen 15 1.2.1.1 Een knop toevoegen aan de werkbalk

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

Badge it. Inhoudsopgave. 1. Installatie... 3

Badge it. Inhoudsopgave. 1. Installatie... 3 Badge it voor Windows 95/98/NT/2000/XP Inhoudsopgave 1. Installatie... 3 2. Start... 4 2.1. Nieuwe database maken... 5 2.2. De geselecteerde database openen... 5 2.3. De naam van de geselecteerde database

Nadere informatie

Bijlage 8. Testprogramma brandreactiemodulen LBK

Bijlage 8. Testprogramma brandreactiemodulen LBK Bijlage 8 Testprogramma brandreactiemodulen LBK INHOUDSOPGAVE 1 Algemeen... 1 1.1 Introductie... 1 2 Algemene Setup Instructies... 2 2.1 Setup instructies... 2 2.2 Programma start... 2 3 Configureren...

Nadere informatie

Datum. Vraag het bedrag in BEF. Reken om naar EURO. Toon het bedrag in EURO. --- Vraag het bedrag in BEF--- --- Reken om naar EURO---

Datum. Vraag het bedrag in BEF. Reken om naar EURO. Toon het bedrag in EURO. --- Vraag het bedrag in BEF--- --- Reken om naar EURO--- 3UREOHPHQRSORVVHQPHW9%$WRHSDVVLQJHQELMGHHO Naam. NR : Klas. PC : Datum. 23*$9( Hieronder vind je het algoritme om een bedrag in BEF om te rekenen naar EURO. Zet het algoritme om in programmacode. Noem

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

Informatie Voor algemene vragen/opmerkingen omtrent de inhoud van deze site kunt u bellen of e-mailen met: Cargo Data Systems BV

Informatie Voor algemene vragen/opmerkingen omtrent de inhoud van deze site kunt u bellen of e-mailen met: Cargo Data Systems BV Rapportgenerator Gebruikershandleiding Versie 1.0 Disclaimer Niets uit deze uitgave mag worden verveelvoudigd en/of openbaar worden gemaakt, op welke wijze dan ook, zonder voorafgaande schriftelijke toestemming

Nadere informatie

Handleiding Digitaal Aanvraagformulier

Handleiding Digitaal Aanvraagformulier Handleiding Digitaal Aanvraagformulier Deze handleiding wil een summier overzicht geven van de installatieprocedure van het digitaal aanvraagformulier. De handleiding is bedoeld voor de al wat ervaren

Nadere informatie

Handleiding CVOSoft Stages: algemene kenmerken 1/11. Verwerking stages

Handleiding CVOSoft Stages: algemene kenmerken 1/11. Verwerking stages Handleiding CVOSoft Stages: algemene kenmerken 1/11 Verwerking stages 1 Stages: algemene kenmerken 1.1 Principe Vanaf schooljaar 2010-2011 moeten ook stagegegevens gezonden worden. Daarom werd CVOSoft

Nadere informatie

module 5 2008 Instruct, Postbus 38, 2410 AA Bodegraven - 1 e druk: november 2008

module 5 2008 Instruct, Postbus 38, 2410 AA Bodegraven - 1 e druk: november 2008 Europees Computer Rijbewijs module 5 ACCESS 2007 2008 Instruct, Postbus 38, 2410 AA Bodegraven - 1 e druk: november 2008 ISBN: 978 90 460 0493 7 Alle rechten voorbehouden. Niets uit deze uitgave mag worden

Nadere informatie

DKO Beheerders. 5 maart WISA helpdesk

DKO Beheerders. 5 maart WISA helpdesk DKO Beheerders 5 maart 2012 WISA helpdesk Inhoudsopgave 1 DKO Beheerders 2 1.1 Taken na update WISA-programma...................... 2 1.1.1 Aanmelden als administrator...................... 2 1.1.2 Nieuwe

Nadere informatie

Automatisering voor Financiële Dienstverleners. Werken met Queries en Merge Documenten. For more information visit our website at www.pyrrho.

Automatisering voor Financiële Dienstverleners. Werken met Queries en Merge Documenten. For more information visit our website at www.pyrrho. Automatisering voor Financiële Dienstverleners Werken met Queries en Merge Documenten For more information visit our website at www.pyrrho.com Date: Document Nr: 30 maart, 2007 UBizzMerge, Versie 4.0 Status:

Nadere informatie

Landelijk Indicatie Protocol (LIP)

Landelijk Indicatie Protocol (LIP) Handleiding Landelijk Indicatie Protocol programma pagina 1 of 18 Landelijk Indicatie Protocol (LIP) Welkom bij LIP Lip is ontstaan uit een toegevoegde module aan het kraamzorg administratie pakket van

Nadere informatie

WAT ALS U MERKT DAT UW DATABASE ERG TRAAG WORDT BIJ HET VERWERKEN VAN DE GEGEVENS VAN DE DATA LOGGER?

WAT ALS U MERKT DAT UW DATABASE ERG TRAAG WORDT BIJ HET VERWERKEN VAN DE GEGEVENS VAN DE DATA LOGGER? WAT ALS U MERKT DAT UW DATABASE ERG TRAAG WORDT BIJ HET VERWERKEN VAN DE GEGEVENS VAN DE DATA LOGGER? Om de snelheid van verwerking terug op een aanvaardbaar niveau te brengen, voert u best de volgende

Nadere informatie

Calculatie tool. Handleiding. Datum Versie applicatie 01 Versie document

Calculatie tool. Handleiding. Datum Versie applicatie 01 Versie document Calculatie tool Handleiding Auteur Bas Meijerink Datum 01-09-2016 Versie applicatie 01 Versie document 03D00 Inhoudsopgave 1. Een calculatie maken - 3-1.1 Start een nieuwe calculatie... - 3-1.2 Algemene

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

Gebruikershandleiding

Gebruikershandleiding Gebruikershandleiding Training MANUAL DE USUARIO NAC SPORT ELITE Version 1.3.400 Nacsport Training wwww.nacsport.com 1 Index 1- AFBEELDINGEN 2- OEFENINGEN 3- TRAINING 4- KALENDER Nacsport Training wwww.nacsport.com

Nadere informatie

Werken met Google Docs en Google Drive

Werken met Google Docs en Google Drive Werken met Google Docs en Google Drive Eric Akkerman (LET)/Rob van Leeuwen (UBVU) Google Docs is een verzameling webgebaseerde programma's voor het creëren, bewerken en delen van documenten, spreadsheets,

Nadere informatie

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

Sorteren, groeperen en totaliseren

Sorteren, groeperen en totaliseren 6 Sorteren, groeperen en totaliseren 6.1 Inleiding Een rapport maken begint met het selecteren van de tabellen en het plaatsen van de velden die u in uw rapport wilt afdrukken. Vervolgens sorteert, groepeert

Nadere informatie

II. ZELFGEDEFINIEERDE FUNCTIES

II. ZELFGEDEFINIEERDE FUNCTIES II. ZELFGEDEFINIEERDE FUNCTIES In Excel bestaat reeds een uitgebreide reeks van functies zoals SOM, GEMIDDELDE, AFRONDEN, NU enz. Het is de bedoeling om functies aan deze lijst toe te voegen door in Visual

Nadere informatie

Cursus Access - Hoofdstuk18

Cursus Access - Hoofdstuk18 Cursus Access - Hoofdstuk18 Handleiding van Auteur: OctaFish Juli 2013 handleiding: Cursus Access - Hoofdstuk18 Een Zoekformulier Heel veel Access gebruikers gebruiken zoekformulieren om gegevens op een

Nadere informatie

Outlookkoppeling installeren

Outlookkoppeling installeren Outlookkoppeling installeren Voordat u de koppeling kunt installeren, moet outlook afgesloten zijn. Stappenplan Controleer of het bestand VbaProject.OTM aanwezig is. (zie 3.2) Controleer of de map X:\RADAR\PARAMETERS\

Nadere informatie

Backup en herstel Handleiding

Backup en herstel Handleiding Backup en herstel Handleiding Copyright 2007, 2008 Hewlett-Packard Development Company, L.P. Windows is een in de Verenigde Staten gedeponeerd handelsmerk van Microsoft Corporation. De informatie in deze

Nadere informatie

AFO 113 Authoritybeheer

AFO 113 Authoritybeheer AFO 113 Authoritybeheer 113.1 Inleiding Authority records die gebruikt worden in de catalogusmodule kunnen via deze AFO beheerd worden. U kunt hier records opzoeken, wijzigen, verwijderen of toevoegen.

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

Programmeren in Excel VBA beginners. Karel Nijs 2010/09

Programmeren in Excel VBA beginners. Karel Nijs 2010/09 Programmeren in Excel VBA beginners Karel Nijs 2010/09 Leswijze Eerst wat theorie Begeleid met (korte) oefeningen MsExcel 2003 Online hulp: http://www.ozgrid.com/vba/ http://msdn.microsoft.com/en-us/library/sh9ywfdk(vs.80).aspx

Nadere informatie

Doe het zelf tooling. Met VBA

Doe het zelf tooling. Met VBA Doe het zelf tooling Met VBA www.king.eu 1 Een goede voorbereiding: Start je laptop Start Excel Zet het tabblad Ontwikkelaars aan (Bestand, Opties, Lint aanpassen) www.king.eu 2 Stéphanie Heidstra Testmanager

Nadere informatie

Handleiding Wlijn Databeheer Internet

Handleiding Wlijn Databeheer Internet Handleiding Wlijn Databeheer Internet W9000 databeheer internet Leza Horeca & Winkel Management Van Dedemstraat 6 16274 NN Hoorn DATABEHEER INTERNET ( W9000) Voorraad Databeheer Internet Bestaat uit 3

Nadere informatie

Met een mailing of massaverzending kunt u een groot aantal documenten verzenden naar gebruikelijke adressen, die in een gegevensbestand staan.

Met een mailing of massaverzending kunt u een groot aantal documenten verzenden naar gebruikelijke adressen, die in een gegevensbestand staan. Een mailing verzorgen Met een mailing of massaverzending kunt u een groot aantal documenten verzenden naar gebruikelijke adressen, die in een gegevensbestand staan. Voor deze techniek zijn twee bestanden

Nadere informatie

Elbo Technology BV Versie 1.1 Juni 2012. Gebruikershandleiding PassanSoft

Elbo Technology BV Versie 1.1 Juni 2012. Gebruikershandleiding PassanSoft Versie 1.1 Juni 2012 Gebruikershandleiding PassanSoft Versie 1.1 Juni 2012 2 Inhoud: Opstart scherm PassanSoft... 1 Het hoofdmenu van PassanSoft wordt geopend... 4 Verklaring extra knoppen weergegeven

Nadere informatie

Quickstart. Browser instellingen

Quickstart. Browser instellingen Browser instellingen Projectadministratie is getest onder : Mac OS 10.3 met Safari versie 1.3 Mac OS 10.4 met Safari versie 2.0.3 (417.9.2) Windows met Internet Explorer versie 6.0.2900.2180. Belangrijke

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

Miniles gegevensbanken bevragen met SQL

Miniles gegevensbanken bevragen met SQL Miniles gegevensbanken bevragen met SQL In deze miniles gaat het over gegevensbanken of databases. Dit zijn bestanden waarin gegevens kunnen worden opgeslagen. Het is dan van belang dat je op een eenvoudige

Nadere informatie

ONLINEADVISEREN.NL ONLINEADVISEREN.NL. Handleiding interactief websysteem ter ondersteuning van online adviseren

ONLINEADVISEREN.NL ONLINEADVISEREN.NL. Handleiding interactief websysteem ter ondersteuning van online adviseren ONLINEADVISEREN.NL Handleiding interactief websysteem ter ondersteuning van online adviseren Handleiding onlineadviseren 120815 Blz. 1 van 17 Inhoud 1 Inleiding... 3 2 Aanmelden... 3 3 Algemene functionaliteit...

Nadere informatie

SERVER MONITOR SMS SERVER

SERVER MONITOR SMS SERVER TEC Server Monitor: Een flexibele oplossing om uw server zorgvuldig te monitoren en te bewaken. De TEC Server Monitor is een flexibele applicatie voor het bewaken van uw server. Indien de server offline

Nadere informatie

INLEIDING... 1 AFSPRAKEN... 2 INHOUDSOPGAVE...

INLEIDING... 1 AFSPRAKEN... 2 INHOUDSOPGAVE... Inhoudsopgave INLEIDING... 1 AFSPRAKEN... 2 INHOUDSOPGAVE... 3 1 DE DATABASE CURSUSSEN... 9 1.1 Inleiding... 9 1.2 Het voorbeeld... 9 1.2.1 Probleemomschrijving... 9 1.2.2 Concretisering en vragen naar

Nadere informatie

Programmeren in Excel VBA beginners. Karel Nijs 2010/09

Programmeren in Excel VBA beginners. Karel Nijs 2010/09 Programmeren in Excel VBA beginners Karel Nijs 2010/09 Leswijze Eerst wat theorie Begeleid met (korte) oefeningen MsExcel 2003 Online hulp: http://www.ozgrid.com/vba/ http://msdn.microsoft.com/en-us/library/sh9ywfdk(vs.80).aspx

Nadere informatie

Dossier Instellingen. Inhoudsopgave. Inleiding

Dossier Instellingen. Inhoudsopgave. Inleiding Dossier Instellingen Inhoudsopgave Inleiding Dossier instellingen Dossier Meetinstrumenten Meetinstrumenten importeren Nieuwe meetinstrumenten importeren met bestaande meetinstrumenten Richtlijnen Richtlijnen

Nadere informatie

User accounts maken in een Wandy Hotspot, d.m.v. een batch.

User accounts maken in een Wandy Hotspot, d.m.v. een batch. User accounts maken in een Wandy Hotspot, d.m.v. een batch. Bij het in gebruik nemen van een Wandy Hotspot is het aanmaken van gebruikers een tijdrovende klus. Om snel veel accounts aan te maken hebben

Nadere informatie