Ontwikkeling van een PDA-applicatie met databasesynchronisatie op Windows Mobile

Maat: px
Weergave met pagina beginnen:

Download "Ontwikkeling van een PDA-applicatie met databasesynchronisatie op Windows Mobile"

Transcriptie

1 Handelswetenschappen en Bedrijfskunde Geel Bachelor in de toegepaste informatica Ontwikkeling van een PDA-applicatie met databasesynchronisatie op Windows Mobile Van analyse tot implementatie CAMPUS Geel Jan Jochems Academiejaar

2 2 VOORWOORD Dit eindwerk is het resultaat van een stage van drie maanden. Deze stage heb ik gelopen bij Codisys. In de opleiding toegepaste informatica in de KHK in Geel konden alle derdejaarsstudenten een bedrijf kiezen met een bepaalde stageopdracht. Daarom zou ik graag de KHK en Codisys willen bedanken voor de keuze en de ervaring van deze drie maanden. Ik heb samen met Ben Gyles deze stage voltooid. Tijdens mijn stage bij Codisys was Chris Bel mijn stagebegeleider. Chris Bel heeft ons gesteund gedurende de hele stage. Ik kon altijd bij hem terecht met bepaalde vragen over de opdracht. Bedankt daarvoor. Tijdens de stage kon ik met bepaalde vragen ook bij Bram Heremans, Maikel Van Roelen, Bart Engelen en Dirk Fornoville terecht. Voor hun hulp bedank ik hen. Bij Codisys was er altijd sfeer. Alle collega s waren vriendelijk en er was altijd een moment om te lachen. Daarom wil ik al de medewerkers van Codisys bedanken. Voor extra informatie en tips over het schrijven van mijn eindwerk en de presentatie kon ik steeds terecht bij Roger Frans, mijn begeleidende docent. Hij heeft mijn eindwerk een aantal keer nagelezen en verbeterd zodat mijn eindwerk een mooi geheel is. Daarnaast zijn de samenkomsten ook goed om bepaalde zaken op te helderen. Bedankt Roger. Tot slot wil ik graag Ben Gyles en mijn ouders bedanken voor de steun en hulp die ik heb gekregen tijdens mijn gehele opleiding en mijn stage en voor het schrijven van mijn eindwerk.

3 3 SAMENVATTING De applicatie Inspector is een applicatie die bepaalde bedrijven gebruiken voor het uitvoeren van inspecties. Deze inspecties zijn bijvoorbeeld controle op hygiëne, beveiliging en dergelijke. De applicatie draait op een PDA met besturingssysteem Windows Mobile. Het is dus een mobiele applicatie. De applicatie wordt af en toe verbonden met het centrale systeem om de gegevens te synchroniseren. De huidige applicatie Inspector moet vernieuwd worden omdat ze te traag is en omdat er soms bepaalde gegevens verloren gaan. Dit gebeurt vaak bij het synchroniseren op een moment dat de verbinding weg valt. De applicatie dateert uit In die tijd waren er nog geen goede efficiënte manieren om dit te doen. We hebben eerst een onderzoek verricht naar de technologieën die bestaan om de synchronisatie goed te laten verlopen. Met deze technologieën kunnen we de synchronisatie en de data klassen generen. Deze technologieën zijn niet zo eenvoudig en daarom hebben we daarover een handleiding geschreven zodat de medewerkers deze technologieën ook kunnen gebruiken zonder alles opnieuw te moeten gaan opzoeken. We hebben ook de Weighted Ranking Methode gebruikt om de verschillende tools die we hadden bekeken te vergelijken om ervoor te zorgen dat we een goede keuze maakten. Verder beschrijven we ook de programmatie van de applicatie met de daarbij komende problemen en wijzigingen. Hierbij staat ook beschreven hoe we onder andere de filtering hebben gemaakt langs de serverkant. Dit moet aan de serverkant omdat daar de SQL statements worden uitgevoerd zodat de cliëntkant alleen maar de data krijgt die het moet hebben en niet meer.

4 4 INHOUDSTAFEL VOORWOORD... 2 SAMENVATTING... 3 INHOUDSTAFEL... 4 INLEIDING STAGEBEDRIJF Codipack group Codipack Codisys Organogram Codisys PLAN VAN AANPAK STAGEOPDRACHT Aanleiding en achtergrond van het project Verwacht resultaat Business Case Fasering Projectafbakening Omschrijving primaire doelgroep en andere stakeholders Informatie en rapportering Kritische (op/toe)leveringen van buiten het project Projectorganisatie Risicoanalyse ANALYSE Analyse huidige Inspector Analyse synchronisatie Microsoft Sync Framework Remote Data Access Weighted Ranking Methode Analyse ORM-tools nhydrate nhibernate OpenNetCF ORM LinqToSQL OpenAccess Telerik EntitySpaces SQL Compact Code Generator Weighted Ranking Methode Database analyse Benodigde tabellen voor synchronisatie Verkleinen van de database Bestaande database Handleiding UITWERKING Database Databasebeheer Vernieuwde database Programmatie Synchronisatie-filters Workaround bij de filtering Veel voorkomende exceptions... 27

5 5 4.3 Testen BESLUIT LITERATUURLIJST BIJLAGE 1: DE WRM VAN DE SYNCHRONISATIE TOOLS... BIJLAGE 2: WRM VAN DE ORM-TOOLS... BIJLAGE 3: HANDLEIDING...

6 6 INLEIDING Windows Mobile is een vrij oude technologie. Veel mensen hebben al met dit systeem kunnen werken en er zijn al heel mooie applicaties voor geschreven. Maar wij weten nog niet juist wat er allemaal kan en hoe het werkt. Daarnaast is het Microsoft Sync Framework een nieuwere technologie die in combinatie met Windows Mobile vele mooie applicaties zal kunnen maken. In dit eindwerk ga ik proberen een korte voorstelling te geven over het stagebedrijf zelf. Wat ze er doen en hoe het bedrijf ineen zit. Vervolgens geef ik een woordje uitleg over onze stageopdracht binnen het bedrijf. Dit doe ik aan de hand van het plan van aanpak. Hiermee zou onze stageopdracht duidelijk moeten zijn. Als 3de hoofdstuk zal ik kort bespreken welke analyse we hebben gedaan. Dat gaat vooral over welke tools we hebben getest en hoe we deze tools hebben ervaren. Daarnaast hebben we ook een beknopte analyse van de huidige applicatie, wat het doet en wat het niet goed doet. Als laatste hoofdstuk komt het deel waarin we uitleggen wat we precies gedaan hebben en hoe. Wat we met de huidige database hebben gedaan en hoe we de filtering hebben aangepakt. En als u echt geïnteresseerd bent in hoe je effectief een simpele applicatie moet bouwen met Windows Mobile en Microsoft Sync Framework dan zou ik zeker ook een kijkje nemen in de handleiding die we erover hebben geschreven waar alles stap voor stap beschreven. Maar er is wel een bepaald niveau van kennis nodig om dit tot een goed eind te brengen.

7 7 1 STAGEBEDRIJF Om mijn stageopdracht beter te begrijpen, is het belangrijk om mijn stagebedrijf, met de activiteiten die ze doen, te leren kennen. 1.1 Codipack group In het kader van mijn stage ben ik tewerkgesteld bij het bedrijf Codisys te Olen. Codipack maakt samen met Codisys deel uit van de Codipack group. Codisys staat in voor de software ontwikkeling van totaaloplossingen om producten te identificeren. De Codipack group bestaat al van Toen was enkel Codipack lid van deze groep. Het bedrijf specialiseerde zich in het verkopen van etikettenprinters, inkjetsystemen en productie van blanco etiketten. Enkele jaren later viel de beslissing om Codisys op te richten om software ondersteuning te bieden zowel intern als extern. Zoals hierboven vermeld is de core business van Codipack, zich bezig houden met productidentificatie en het verwerken/beheren van de data die hiermee gepaard gaat. 1.2 Codipack Binnen de Codipack group houdt Codipack zich voornamelijk bezig met de hardware-zijde van de totaaloplossing die Codipack biedt. Ze verkopen en produceren etiketten. Daarnaast is er ook de verkoop van etiketten-printers, coderingsstoestellen, robots voor het automatisch aanbrengen van etiketten. Tevens bieden ze een goede service na verkoop aan door een eigen hersteldienst voor deze apparaten. 1.3 Codisys Codisys, het andere deel van de Codipack group, is pas later gekomen omdat de nood aan software vroeger niet hoog was. Eenmaal de maatschappij meer technologieën ontwikkelde, groeide ook de eis voor software. Daarom is de beslissing in 1998 gevallen om Codisys op te richten met als doel systemen te ontwikkelen die op maat gemaakt zijn voor de klant. Zoals Codipack levert men hier ook een service na verkoop aan. Enkele mensen staan tijdens de werkuren paraat om klanten uit de nood te helpen met hun systeem. Al de geprogrammeerde software wordt bij de klant geïnstalleerd en operationeel gesteld.

8 Organogram Codisys In het organogram kan je zien waar wij ons bevinden bij Codisys. Chris Bel GM Hilde Smolders Hilde van Otten Finance Maikel Van Roelen Patrick Verduyckt Logistiek Bart Engelen Intern support Dirk Fornoville Project Engeneer Bram Heremans Project Engeneer Jan Jochems Stagestudent Ben Gyles Stagestudent

9 9 2 PLAN VAN AANPAK STAGEOPDRACHT 2.1 Aanleiding en achtergrond van het project Codisys is een bedrijf dat deel uitmaakt van Codipack group. De hoofdzetel is gelegen in Olen. Codisys ontwerpt en onderhoudt systemen om etiketten af te drukken. Dit kan op verschillende manieren. Codisys gebruikt momenteel een PDA-applicatie die in 1999 ontwikkeld is. Inspector is de naam van de applicatie. Met deze applicatie kan een technieker op locatie gaan en daar een aantal controles uitvoeren. De applicatie houdt dan alles bij wat de technieker ingeeft. De opgeslagen gegevens worden in tekstbestanden opgeslagen en via een trage verbinding naar hun eigen server gestuurd. Deze server voert dan de nodige statements uit. Toen deze applicatie werd ontwikkeld, waren er nog niet zoveel technologieën om dit te doen. En de technologie die ze gebruikt hebben, werkt niet zoals het zou moeten. Door gebrekkige technologieën verloopt de synchronisatie niet vlot. Bij de synchronisatie loopt het vaak mis waardoor er gegevens verloren gaan. En als er een fout gebeurt, dan is er geen manier om te kijken waar het systeem faalt. 2.2 Verwacht resultaat We ontwikkelen een applicatie voor een PDA waarmee een gebruiker bepaalde meetpunten kan ingeven om later die meetpunten te controleren. De data die uit die controles voortkomt, moet gesynchroniseerd kunnen worden met de data op de server. Dit is meestal op het begin of het einde van de dag. Deze controles gebeuren immers meestal op locatie en daar beschikken ze niet altijd over een netwerk om de synchronisatie te doen. Om dit allemaal te kunnen verwezenlijken hebben we een framework nodig waarmee we dit eenvoudiger kunnen synchroniseren. Daarnaast hebben we ook nog een ORMtool nodig om makkelijk de data access klassen te genereren. De data access klassen kunnen in de toekomst nog veranderen naar de wensen van de klant en met deze tool is dat geen probleem. We plannen de uitwerking in de volgende fasen: We doen een onderzoek naar welk framework het best past in het geheel om de synchronisatie te programmeren. Aan de hand van een WRM-analyse kiezen we het best geschikte framework We doen ook een onderzoek naar bepaalde ORM tools die we kunnen gebruiken om de tabellen uit de bestaande database makkelijker te gebruiken in de ontwikkeling van de applicatie. De functionele analyse van de nieuwe applicatie. De uitwerking van de applicatie. Voorstelling aan medewerkers. Testen.

10 Business Case Door ons onderzoek en onze analyse kan Codisys meer en snellere methoden gebruiken om systemen te ontwikkelen voor hun klanten. Codisys zal zijn klanten de nieuwere applicatie kunnen laten gebruiken. Deze nieuwe applicatie moet de nodige ondersteuning verminderen, omdat ze efficiënter werkt dan de oude applicatie. Door de vermindering van de ondersteuning hebben ze meer tijd om andere problemen te verhelpen. 2.4 Fasering Fase 1: Onderzoek verrichten Zoeken naar tools die helpen bij de synchronisatie van de server met de PDA s en ook ORM-mappers zoeken om de DAL-laag makkelijker te kunnen ontwikkelen. Fase 2: De beste tools testen Onderzoeken welke tools het makkelijkste zijn om te gebruiken. Fase 3: Keuze maken tussen alle verschillende tools. Met behulp van de WRM-methode zoeken we uit wat de beste tools zijn. Fase 4: Meer informatie over de gekozen tools zoeken. In deze fase verdiepen we ons in de tools en leren we ze gebruiken. Fase 5: Testproject uitwerken. We werken een testprojectje uit om de werking ervan te tonen aan onze stagebegeleider. We maken ook een handleiding zodanig dat ze het zelf ook kunnen gebruiken. Fase 6: Analyse applicatie Inspector Bekijken welke functionaliteiten allemaal nodig zijn in het programma en hoe we die gaan implementeren. Fase 7: Data access laag maken. We ontwikkelen de communicatie tussen de database en programmacode. Dit doen we met de tool die we in de derde fase gekozen hebben. Fase 8: Database synchronisatie implementeren. We zorgen ervoor dat het mobiel toestel kan synchroniseren met de tool die we hebben gekozen in de derde fase. Fase 9: Applicatie Inspector maken. Het maken van de gebruikersinterface zodat het programma gebruikt kan worden. Fase 10: Voorstelling aan medewerkers. We laten aan onze medewerkers van Codisys zien hoe het programma werkt en noteren hun bevindingen. Fase 11: Testen. We testen de applicatie samen met de medewerkers van Codisys, aangezien zij waarschijnlijk meer testen kunnen verzinnen omdat zij weten waar de huidige applicatie problemen heeft.

11 Projectafbakening Wij zijn verantwoordelijk voor het onderzoek naar het meest geschikte framework voor de synchronisatie, de beste Orm-mapping tool en de analyse van Inspector. En de implementatie tot op het data access niveau. Als er na de implementatie nog tijd over is, dan kunnen we ons nog richten op de presentatie laag. 2.6 Omschrijving primaire doelgroep en andere stakeholders - Het bedrijf krijgt een betere kijk op de nieuwere technologieën en zal betere applicaties kunnen ontwikkelen. - Door de betere applicaties zal de klant minder kosten hebben omdat er minder problemen voorkomen. - De werknemers die met Inspector moeten werken, zullen minder gegevens verliezen en vlotter kunnen werken met de gebruiksvriendelijke applicatie. 2.7 Informatie en rapportering Elke vrijdag proberen we een vergadering te houden met onze stagebegeleider. Tijdens deze vergadering bespreken we wat we tot dan al hebben bereikt en wat we nog moeten doen in de komende week of weken. Als we bepaalde moeilijkheden hebben of bepaalde vragen hebben, dan kunnen we vrij snel iemand vinden die ons met ons probleem kan helpen. Op het eind van elke week sturen we ook nog een korte samenvatting van wat we die week hebben gedaan naar onze begeleidende docent. Daarnaast zijn er nog een drietal dagen waarop we terug naar de school gaan voor de stage verder te bespreken en opmerkingen over het eindwerk te bespreken. 2.8 Kritische (op/toe)leveringen van buiten het project Bij Codisys werken ze nog met een vrij oud systeem namelijk Windows Mobile 5. Vele nieuwere technologieën ondersteunen Windows Mobile niet. Er zijn wel een aantal technologieën die Windows Mobile wel ondersteunen, maar dit zijn commerciële technologieën. En daar zit dan een redelijke kostprijs aan. Deze gaat van $300 tot $ Projectorganisatie Tijdens de fasen van het project zullen Ben Gyles en ik de opdracht uitwerken onder leiding van onze stagebegeleider, Chris Bel Risicoanalyse Aangezien het al een oudere technologie is waar wij ook nog geen kennis van hebben, kan het zijn dat het heel veel opzoekwerk vergt om de juiste tools te vinden. Velen van deze tools werken niet meer samen met mobiele toestellen omdat de technologie momenteel niet meer ondersteund wordt door Microsoft. Het kan hierdoor zijn dat de implementatie misschien iets zal uitgesteld worden en daarom het programma niet helemaal klaar zou zijn.

12 12 3 ANALYSE 3.1 Analyse huidige Inspector Om een nieuwe versie te kunnen maken van het programma Inspector zijn er natuurlijk eerst een paar dingen die we moeten weten. Als eerste moeten we natuurlijk weten hoe het huidige programma werkt. Hiervoor hebben we een PDA tot onze beschikking gekregen. We weten nu dat het programma dient om controles te kunnen doen op vlak van hygiëne en of alles goed is afgesloten en gekuist is in een gebouw. De technieker krijgt jobs doorgestuurd door de server, de server kijkt welke jobs voor die bepaalde technieker moeten gesynchroniseerd worden aan de hand van een parameter die wordt meegegeven naar de filter die we hebben ingebouwd. De PDA haalt in het begin van de dag alle gegevens op voor een bepaalde technieker. De technieker kan dan op stap gaan met zijn PDA zonder dat hij verbinding nodig heeft met het internet of het bedrijfsnetwerk. Hij wijzigt gegevens op zijn PDA die worden bijgehouden in een lokale database. Op het einde van de dag zal hij deze gegevens synchroniseren met de gegevens op de server om deze in de centrale database te krijgen. Daaruit concluderen we dat we een applicatie moeten ontwikkelen die langs beide kanten kan synchroniseren met verschillende parameters, bijvoorbeeld de naam van de technieker en de gegevens van zijn jobs van een paar dagen terug tot een paar dagen verder. Van onze stagebegeleider moeten we ook nog een ORM-tool vinden om de data access laag makkelijk te kunnen benaderen door middel van gegenereerde code. 3.2 Analyse synchronisatie Om de synchronisatie tot een goed einde te kunnen brengen, hebben we een tool nodig waar je dat mee kan doen. Langs de andere kant moet het ook werken op het Compact Framework. Dit is een stripped down versie van het volledige framework dat op Windows draait. We hebben eigenlijk maar twee technologieën gevonden waar we dit makkelijk mee kunnen doen, namelijk het Microsoft Sync Framework en Remote Data Access (RDA). De tools worden hieronder besproken Microsoft Sync Framework Het Microsoft Sync Framework is een platform van Microsoft dat kan gebruikt worden om data te synchroniseren over verschillende data stores. We gebruiken hiervan dan Sync Services For ADO.NET, dit wordt gebruikt om databases te synchroniseren. De andere zijn meer voor bestanden, RSS en Azure. We hebben voor dit framework een tutorial gevonden en deze helemaal uitgewerkt. De synchronisatie werkte perfect, alleen waren er in het begin wel wat errors en hebben we nog veel aangepast tot het werkte. Na dat we dit een keer gedaan hadden was het al snel duidelijk hoe het juist werkte. We hebben het ook grondig getest. Bij het verwijderen van een rij op de PDA, werd deze rij ook verwijderd op de server na synchronisatie. Ook ingevoegde en gewijzigde rijen werden perfect gesynchroniseerd. Het enige voorval dat we tegenkwamen is dat als je een rij verwijdert op de PDA en diezelfde rij aanpast op de server voor synchronisatie, dan wordt de rij op de PDA verwijderd maar niet op de server. Dit is eigenlijk helemaal geen minpunt want als de rij net aangepast is op de server zal ze niet onnodig zijn.

13 13 Bij dit framework zitten ook enkele handige ingebakken functies. Bijvoorbeeld voor de richting voor de synchronisatie heb je vier opties: DownloadOnly: Bij de eerste synchronisatie download de client een schema en een initiële dataset van de server. Wanneer er gesynchroniseerd wordt, worden alleen de wijzigingen die op de server zijn doorgevoerd gedownload naar de cliënt. UploadOnly: Bij de eerste synchronisatie download de cliënt een schema en een initiële dataset van de server. Wanneer er gesynchroniseerd wordt, worden alleen de wijzigingen die op de cliënt zijn doorgevoerd geüpload naar de server. Bidirectional: Bij de eerste synchronisatie download de cliënt een schema en een initiële dataset van de server. Wanneer er gesynchroniseerd wordt, worden de wijzigingen van de cliënt geüpload naar de server en daarna de wijzigingen op de server gedownload naar de cliënt. Snapshot: de cliënt download een dataset van de server. De data is wordt helemaal vernieuwd bij elke synchronisatie. Wij hebben de verschillende opties allemaal getest en hebben besloten om niet maar voor 1 richting gekozen maar het hangt af van wat er moet gedaan worden Remote Data Access Een andere manier om databases te synchroniseren is met Remote Data Access. Na onze tutorial van het Sync Framework hebben we de eigenschappen van deze manier vergeleken en daaruit blijkt ook dat dit de voorganger was van het Sync Framework. Het zou ook gewerkt hebben maar alleen heeft het minder mogelijkheden dan het Sync Framework en wordt het binnenkort ook niet meer ondersteund. Microsoft raadt ook aan om dit dus niet meer te gebruiken als je een nieuwe applicatie zou maken en raadt tegelijk ook aan om het Sync Framework te gebruiken, wat trouwens op deze oudere technologie gebaseerd is Weighted Ranking Methode We moesten natuurlijk kiezen welke van de twee technologieën we zouden gaan gebruiken, hoewel dit niet zo moeilijk was aangezien RDA binnenkort niet meer ondersteund zal worden. Toch hebben we de resultaten mooi in een WRM gegoten om het verschil nog iets meer duidelijk te maken. De voorwaarden voor de juiste tool hangen van een paar dingen af: Er moet voldoende documentatie zijn om met de tool te kunnen werken. Het moet het Compact Framework ondersteunen anders werkt het niet op een PDA met Windows Mobile. Het moet conflicten kunnen detecteren en kunnen oplossen. Het moet veranderingen bijhouden zodat men een rollback kan doen van het systeem wanneer er iets fout gaat. Het moet individuele rijen kunnen updaten in plaats van de hele tabel elke keer door te sturen. Voor deze WRM verwijs ik naar bijlage 1.

14 Analyse ORM-tools Om de programmatie een stuk makkelijker te maken, hebben we ook een oplossing gezocht om de data access laag te laten genereren. Hiervoor hebben we een heel aantal tools getest, maar er waren er veel die niet voldeden omdat ze oftewel het Compact Framework niet ondersteunen, te weinig documentatie hadden, moeilijk geïnstalleerd geraken of gewoon niet handig zijn om mee te werken. Hieronder som ik op welke tools we getest hebben. Natuurlijk vertel ik ook welke we uiteindelijk gekozen hebben nhydrate nhydrate is een zeer goede tool om code te genereren. Er is ook veel goede commentaar over op het internet, heel veel documentatie en het genereert echt heel veel code. De tool is ook gratis. Er zijn dus geen bijkomende kosten. Het enige nadeel bij deze tool is dat het Compact Framework niet ondersteund wordt en dus eigenlijk niet geschikt is voor mobiele toepassingen. De tool is een aanrader voor gewone desktop toepassingen nhibernate OpenNetCF ORM Voor nhibernate gelden eigenlijk dezelfde conclusies als bij nhydrate. nhibernate is ook gratis, er is veel documentatie en het is eigenlijk een Java technologie die nu ook voor de.net omgeving bestaat. Buiten het feit dat deze tool het Compact Framework niet ondersteunt, hebben we ook wel moeilijkheden gehad met de installatie ervan. De tool was dus ook niet geschikt om voor ons project te gebruiken. OpenNetCF ORM is een tool die ontwikkeld is om te gebruiken bij mobiele toepassingen. Helaas hebben we deze tool niet erg goed kunnen testen, hoewel deze op het eerste zicht wel een goede tool leek te zijn. Maar de installatie is niet gelukt en daarbij hebben we ook niet veel documentatie gevonden hierover dus hebben we besloten ook deze tool niet te gebruiken LinqToSQL LinqToSQL is een zeer handige tool voor web- en desktop-toepassingen maar helaas zit het niet bij in het Compact Framework. In het Compact Framework heb je namelijk alleen LinqToObjects maar om dit te laten werken zou je alles als objecten moeten opslaan en dan doorsturen naar de server die de objecten dan in de database zet. Ook als het toestel uitgeschakeld wordt, worden deze objecten gewist. Dit is iets dat we helemaal niet willen en dus hebben we ook deze tool links moeten laten liggen OpenAccess Telerik OpenAccess is een commercieel pakket dat we een maand gratis konden testen. Het werkte vrij goed. Het werkt ook samen met het Compact Framework maar er zijn lastige pop-ups die bij geïnstalleerd worden in Visual Studio. De tutorials die we uitgewerkt hebben werkten ook maar voor de helft en we mogen natuurlijk niet vergeten dat het betalend is. Je hebt dus al direct kosten voor je kan beginnen. Dit hebben we dan ook maar niet gekozen.

15 EntitySpaces EntitySpaces is ook een commercieel pakket voor gebruik in Visual Studio met handige tools om je code te genereren. Er komen ook nog andere tools bij kijken die ook gewoon in het pakket zitten. Helaas hebben we bij dit pakket ook moeten ervaren dat het niet gemakkelijk is om mee te werken en de prestaties soms ook te wensen overlaten. En omdat dit dan ook betalend is, is er ook niet echt een reden om het aan te schaffen SQL Compact Code Generator Dit is de tool die we uiteindelijk gekozen hebben. De tool is gratis en werkt goed. Er komt een custom tool mee met het programma om je klassen te kunnen genereren buiten Visual Studio. Als je dit programma gebruikt, worden alle klassen in verschillende bestanden aangemaakt. Als je de tool in Visual Studio gebruikt wordt dit allemaal in één bestand gestoken. Deze tool werkt en is bovendien gratis en makkelijk te gebruiken. Dit is dan natuurlijk ook de reden waarom we deze tool gekozen hebben. Enkele kenmerken van deze tool: Maakt entiteit klassen voor elke tabel in de database Genereert methoden voor het maken, lezen, bijwerken en verwijderen van data Genereert SelectBy en DeleteBy methodes voor iedere kolom in elke tafel Genereert een Purge methode voor iedere tafel te verwijderen alle records Genereert Entiteit Unit Tests en Data Access Unit Tests Weighted Ranking Methode Tussen de tools die we onderzocht hebben moeten we eigenlijk niet meer kiezen. Er werkt er maar één goed voor hetgeen we nodig hebben en dat is de SQL Compact Code Generator. We hebben in elk geval een WRM gemaakt om zo te kunnen zien wat de andere tools waard zijn voor eventueel nog een ander project. Voor deze WRM verwijs ik naar bijlage 2.

16 Database analyse Benodigde tabellen voor synchronisatie Om deze applicatie te maken, hebben we niet alle tabellen nodig van de Inspectordatabase. De meeste tabellen zijn voorzien voor de webapplicatie waarmee men jobs kan plannen. Voor de PDA-applicatie hebben we eigenlijk maar een subset van 23 tabellen nodig Verkleinen van de database De database die op de server staat, is ongeveer 20 Gigabyte groot. Dit is natuurlijk veel te groot voor op een PDA, aangezien een dergelijk toestel maar ongeveer 15 Megabyte vrij heeft voor programma s. De reden waarom deze database zoveel plaats inneemt, is voornamelijk omdat er over de jaren veel logs werden aangemaakt door SQL Server. Allereerst maken we een back-up van de serverdatabase die we dan op onze eigen laptop zetten. Zo kunnen we alles testen zonder de echte database te beschadigen. Die logfile verkleinen we ten eerste al door de functie Shrink te gebruiken in SQL Server. Vervolgens doe je dit ook nog eens voor de database file en uiteindelijk ook voor de hele database. Je zal zien dat de database nu al aanzienlijk verkleind is maar dit is nog lang niet genoeg. Er zijn enorm veel views en statistieken die nog in de database zitten maar die we niet nodig hebben. Door de tabellen opnieuw te creëren met de gegenereerde scripts van SQL Server, verwijderen we alle views, stored procedures en statistieken. Voor we het script runnen, moeten we die commando s uiteraard verwijderen uit het script. In elke tabel zitten ook onnodige kolommen. Deze kolommen zijn ooit gebruikt voor change tracking maar dit doen we op onze eigen manier dus deze kolommen verwijderen we ook ineens uit het script. Wanneer we dan het script runnen is de database zeer klein aangezien er alleen maar lege tabellen inzitten. Deze tabellen kunnen we terug volpompen met de data die eerst in de database zat. Dit kunnen we doen door de importfunctie van SQL Server Bestaande database Voor de werking van Inspector is het belangrijk dat de database hoofdzakelijk hetzelfde blijft. Omdat het een belangrijk deel is, bespreken we alle nodige tabellen van de database. De reden waarom de database hoofdzakelijk hetzelfde blijft, is omdat de bestaande gegevens gebruikt moeten kunnen worden met de nieuwe software. Dat is dan ook de reden dat we niets aan de structuur van tabellen hebben veranderd. Wat we uiteindelijk wel wijzigen aan de database vind je in het volgende stuk Vernieuwde database. We geven enkel een beschrijving van welke data je in de verschillende tabellen kan vinden. TblAntwoorden In deze tabel zitten alle standaard antwoorden die de gebruiker kan kiezen. Daarnaast zijn er nog een aantal extra kolommen om een bovengrens of ondergrens op te geven. TblAntwSoort Hierin staat eigenlijk het soort van het antwoord. Er wordt vermeld of het over een ja/nee vraag, een score van 1-10, een alfanumeriek, een aantal gaat.

17 17 TblContactpersonen Elk filiaal heeft bepaalde contactpersonen en deze contactpersonen worden in deze tabel bijgehouden met alle bijhorende gegevens die nodig zijn zoals het adres, het telefoonnummer TblDebiteuren In deze tabel zitten alle debiteuren met hun gegevens zoals het adres, het telefoonnummer. TblEenheden In de tabel eenheden zitten de mogelijke eenheden voor een bepaald product zoals milliliter, kilogram, stuks. TblFilialen In de tabel Filialen staan de verschillende filialen. Hier vinden we dan de gegevens van de filialen zoals adres en dergelijke en welke debiteur aan het filiaal gekoppeld is. TblInstallaties In elk filiaal bevinden zich bepaalde installaties. Een installatie is eigenlijk een nummer voor een bepaalde soort van controle in de filialen. Het is hier dat de controle moet gebeuren. Daarom zitten er in deze tabel gegevens zoals hoe vaak de filialen gecontroleerd moeten worden, door wie dit moet gebeuren en andere gegevens. TblInstallatiesTypes Deze tabel bevat alle verschillende mogelijke installatie types met daarbij horende benaming en omschrijving. Door de types weten we wat er gecontroleerd moet worden (bv.knaagdieren, insecten,.) TblJobColor Hierin bevinden zich bepaalde vaste rgb-waarde voor de kleuren die zijn vastgelegd door bepaalde richtlijnen. TblJobColors Hierin kan men zelf bepaalde kleuren toevoegen voor bepaalde functionaliteiten in het programma. TblJobType De naam van de tabel zegt het al. De tabel bevat de verschillende types van jobs. Of het een standaard job of een extra job is. TblLocaties Ook hier zegt de naam van de tabel het al. Deze tabel bevat de locaties waar de controle moet worden uitgevoerd. TblMeetpunten In deze tabel bevinden zich de gegevens van de meetpunten. Dit is gedaan zodat men weet welke meetpunt type er gebruikt moet worden op een bepaalde locatie. TblMogelijkeAntw De naam spreekt weer voor zich. Hier staan de mogelijke antwoorden in. Voor een ja/nee vraag bevat de tabel hier een record voor Ja, een record voor Nee en een record voor In orde. TblMPType Een meetpunt type is een bepaald type waarop de controles worden gedaan. Deze types kunnen aan een meetpunt gehangen worden.

18 18 TblOpmerkingen Alles verloopt niet altijd zoals het moet of alles is niet duidelijk met de standaard antwoorden. Daarom bevat deze tabel de opmerkingen die bij een bepaalde controle horen. Er staat ook bij wat eraan gedaan kan worden met de naam van de gebruiker die de opmerking heeft gemaakt en de datum van het moment. TblPlanning In deze tabel staat de planning van wanneer de bepaalde controles of jobs moeten gebeuren. Hier kan je vinden wie de job moet uitvoeren en welke datum dat die job is ingepland. TblProd In deze tabel zitten producten die men nodig heeft voor de bepaalde problemen te bestrijden of op te lossen. TblStandaardTeksten In deze tabel staan de standaardteksten. Deze standaardteksten worden vaak gebruikt om tijd te besparen. Doordat ze uit deze tabel een standaard tekst kunnen kiezen, moeten ze niet alles zelf intypen. Dit wordt ook vaak gebruikt voor veel voorkomende opmerkingen. TblTxtGroepen In deze tabel vinden we de verschillende groepen van controles. En met groepen bedoelen we een groep waarnaar de controle is gemaakt zoals algemeen, bouwkundig hygiënisch, plaagdieren. TblTxtSubGroepen Met deze tabel kunnen we een tekst omschrijven als een opmerking of toch eerder een actie. TblUser In deze tabel zitten de werknemers van het bedrijf die controles mag uitvoeren. Alles wordt met behulp van deze tabel gefilterd. Want de planning wordt opgesteld per werknemer. TblVragen In deze tabel zitten de vragen. Hier gaat het eigenlijk enkel om de vraag en wat extra gegevens. 3.5 Handleiding Als laatste deel van ons opzoekwerk hebben we vervolgens een handleiding geschreven voor de medewerkers van Codisys. Deze handleiding zal hun helpen om snel een Windows Mobile applicatie te kunnen opbouwen met synchronisatie en filtering. Voor deze handleiding verwijs ik naar bijlage 3. Daar kan u deze handleiding gerust eens doornemen. De handleiding is bedoeld voor mensen met een voorkennis van applicatieontwikkeling en serverbeheer.

19 19 4 UITWERKING 4.1 Database Voor het project moesten wij werken met een bestaande database. Het is dus is dat we de database begrijpen. Eerst vertel ik iets over het databasebeheer. Na het databasebeheer geef ik nog wat meer uitleg over de bestaande database met daarna de aanpassingen die we hebben moeten doen om het werkend te krijgen Databasebeheer Om met de database Inspector te kunnen werken maken we gebruik van een relationeel databasebeheersysteem met als naam Microsoft SQL Server 2008 R Vernieuwde database Doordat we met een mobiele applicatie moeten werken, mag de database niet groot zijn. Omdat de huidige database 20 GB is, moesten we de database verkleinen. Hieronder beschrijven we onze werkwijze om dat klaar te krijgen: We hebben een back-up van de bestaande database gemaakt zodat we hiermee aan de slag konden zonder de echte database schade toe te brengen. Dit hebben we gedaan door de wizard van SQL Server te gebruiken. Je bekomt dit dialoogvenster wanneer je de database selecteert, rechts klikt op Back Up. Dan kies je een plaats waar je de backup wil opslaan en je klikt op OK. Deze back-up hebben we dan elk op onze eigen machine gezet door middel van de functie Restore Database in SQL Server. Je bekomt dit dialoogvenster door rechts te klikken op Databases en dan op Restore Database te klikken. Hierna bekom je het dialoogvenster waar je de database naam kan kiezen en op welke manier je wilt restoren.

20 20 Kies dan voor From device en Kies Add. Blader dan naar de map waar je uw back-up opgeslagen hebt. Hierna vink je het juiste bestand van de back-up aan en je klikt op Ok. De database wordt gerestored. Vervolgens hebben we de database geshrinkt. Dit doe je door rechts te klikken op de database, Tasks, Shrink en dan eerst op database. Vervolgens komt er een dialoogvenster dat je laat zien hoeveel percent de database kan verkleind worden, druk op Ok. Dit doen we dan opnieuw met de database bestanden. Klik opnieuw rechts op de database, Tasks, Shrink en dan Files. Je komt nu in het volgende dialoogvenster terecht.

21 21 Kies eerst Data bij File type en klik op ok. Het databasebestand wordt nu verkleind. Doe daarna hetzelfde met de Log. Na het shrinken was de database al een heel stuk verkleind, maar nog lang niet genoeg. We hadden drastischere maatregelen nodig. We hebben dan alle tabellen verwijderd en opnieuw aangemaakt. Dit hebben we kunnen doen door een script te schrijven dat de tabellen verwijdert en dan de structuur terug maakt met uitzondering van een aantal kolommen die totaal geen nut meer hebben. De statistieken, views, enz. zitten nu ook niet meer in de database. Nu zitten we natuurlijk wel met een lege database. Om de gegevens terug in de database te pompen bestaat er de Import Data functie van SQL Server. Deze wizard kan je bekomen door rechts te klikken op te database, Tasks, Import Data. Vervolgens kom je dan aan bij de Import Data wizard. Hierin kies je de source database, dit wil zeggen de database waar de gegevens uit moeten komen. In het volgende venster kies je de database waar de data in gepompt moet worden, deze staat al juist ingevuld aangezien je op die database hebt geklikt. Klik op Next en dan nog eens Next. In het volgende venster selecteer je dan welke tabellen er opgevuld moeten worden. Hier moet je alleen maar de tabellen aanvinken die je nodig hebt in de applicatie. Klik Next, Next Finish.

22 Ten slotte kom je op het laatste scherm waar je ziet hoe SQL Server de gegevens in de database pompt. Met de gegevens erin te zetten is de uiteindelijke database maar 450 MB groot. 22

23 Programmatie Synchronisatie-filters Als je de tabellen bekijkt zie je dat in de loop van de jaren toch al heel veel records zijn aangemaakt. Natuurlijk zijn niet al deze rijen nodig voor 1 gebruiker. De gebruiker moet bijvoorbeeld alleen maar de gegevens hebben van de planning voor de gebruiker zelf, met ook nog een filter op het aantal dagen, namelijk 3 dagen voor die datum en 3 dagen erna. Hierbij komt dan ook nog dat de jobs die al gedaan zijn, niet meer moeten worden doorgestuurd naar de PDA. Hoe hebben wij dit dan aangepakt? In de bestanden die gegenereerd worden door het Microsoft Sync Framework, vinden we voor elke tabel enkele query s die ervoor zorgen dat de wijzigingen worden doorgevoerd. In deze query s wordt dan de tabel samengevoegd, door middel van een join, met de change table die door het Sync Framework gemaakt wordt. Op deze manier zullen dus alleen maar de nodige records worden gesynchroniseerd. Hieronder vindt u een voorbeeld van de gegenereerde code voor de tabel TblContactpersonen. Dit voorbeeld maakt gebruik van het INSERT-commando. De opdrachten voor UPDATE en DELETE zijn analoog. // TblContactPersonenSyncTableSelectIncrementalInsertsCommand command. this.selectincrementalinsertscommand = new System.Data.SqlClient.SqlCommand(); this.selectincrementalinsertscommand.commandtext = = 0 SELECT dbo.tblcontactpersonen.[cp_id], dbo.tblcontactpersonen.[cp_debiteurnr], dbo.tblcontactpersonen.[cp_filiaalnr], [CP_Titel], [CP_Vo" ornaam], [CP_FamNaam], [CP_Telefoon], [CP_Fax], [CP_ ], [CP_GetsFaxReport], " [CP_GetsMailReport] FROM dbo.tblcontactpersonen LEFT OUTER JOIN CHANGETABLE(CHANGES CT ON CT.[CP_ID] = dbo.tblcontactpersonen.[cp_id] AND CT.[CP_DebiteurNr] = dbo.tblcontactpersonen.[cp_de" biteurnr] AND CT.[CP_FiliaalNr] = dbo.tblcontactpersonen.[cp_filiaalnr] WHERE (C" T.SYS_CHANGE_CONTEXT IS NULL OR CT.SYS_CHANGE_CONTEXT ELSE BEGIN SELECT dbo.tblcontactpersonen.[cp_id], dbo.tblcontactpersonen.[cp_d" ebiteurnr], dbo.tblcontactpersonen.[cp_filiaalnr], [CP_Titel], [CP_Voornaam], [C" P_FamNaam], [CP_Telefoon], [CP_Fax], [CP_ ], [CP_GetsFaxReport], [CP_GetsMai" lreport] FROM dbo.tblcontactpersonen JOIN CHANGETABLE(CHANGES dbo.tblcontactpers" CT ON CT.[CP_ID] = dbo.tblcontactpersonen.[cp_" ID] AND CT.[CP_DebiteurNr] = dbo.tblcontactpersonen.[cp_debiteurnr] AND CT.[CP_FiliaalNr] = dbo.tblcontactpersonen.[cp_filiaalnr] WHERE (CT.SYS_CHANGE_OPERATION" = \'I\' AND CT.SYS_CHANGE_CREATION_VERSION AND (CT." SYS_CHANGE_CONTEXT IS NULL OR CT.SYS_CHANGE_CONTEXT IF CHANGE_TRACKING_MIN_VALID_VERSION(object_id(N\'dbo.TblContactPersonen\')) RAISERROR (N\'SQL Server Change Tracking has cleaned up "tracking information for table \'\'%s\'\'. To recover from this error, the client must reinitialize its local database and try again\',16,3,n\'dbo.tblcontactpersonen\') END "; this.selectincrementalinsertscommand.commandtype = System.Data.CommandType.Text; // Dit zijn de parameters die bij de sql statement horen this.selectincrementalinsertscommand.parameters.add(new System.Data.SqlClient.SqlParameter("@sync_initialized", System.Data.SqlDbType.Bit)); this.selectincrementalinsertscommand.parameters.add(new System.Data.SqlClient.SqlParameter("@sync_last_received_anchor", System.Data.SqlDbType.BigInt)); this.selectincrementalinsertscommand.parameters.add(new System.Data.SqlClient.SqlParameter("@sync_client_id_binary", System.Data.SqlDbType.VarBinary)); this.selectincrementalinsertscommand.parameters.add(new System.Data.SqlClient.SqlParameter("@sync_new_received_anchor", System.Data.SqlDbType.BigInt));

24 24 Bij deze query s kan je dan extra voorwaarden opgeven in de WHERE clausule. Dit is echter een niet zo handige methode aangezien je lang moet zoeken waar die WHERE staat in de juiste query. En dan komt er ook nog eens bij dat elke keer je de.sdf file in Visual Studio synchroniseert of je de instellingen aanpast, de code opnieuw gegenereerd wordt. Dit houdt dus in dat je al je filters kwijt bent. Daarom hebben wij hier een workaround voor gemaakt Workaround bij de filtering De methode die we eerst gebruikten om de filtering toe te passen werd uiteindelijk veel te omslachtig. Daar kwam ook nog bij dat je dikwijls je code kwijt was wanneer je opnieuw synchroniseerde in Visual Studio. Hiervoor hebben wij een oplossing gevonden: de filters toevoegen tijdens het uitvoeren van de synchronisatie. Voordelen hiervan zijn dat het veel overzichtelijker is en dat je je niets moet aantrekken van het opnieuw genereren van de code. We hebben dit gedaan door eigenlijk gewoon de voorwaarden in SQL toe te voegen in de query. Vlak voor de SQL-statements worden toegepast, wordt er door deze code tekst bij tussengevoegd. Deze tekst bevat de voorwaarden van de filtering. Dit wordt dan achter de WHERE clausule van de query geplakt met de juiste haakjes er rond. De tabellen zijn ook afhankelijk van andere tabellen, omdat deze statements per tabel gecreëerd worden, moeten we dus de tabellen samenvoegen ofwel joinen. De manier waarop we dit doen is tekst toevoegen na de FROM clausule. Hier komen dan de statements die de tabellen samenvoegen zodanig dat je de kolommen uit deze tabellen ook kan gebruiken. Al deze filters maken we in een aparte klasse die filter.cs noemen. In deze klasse beginnen we eerst met een aantal variabelen aan te maken: string BeginWhere = "WHERE"; string EindWhere = public void setplanningfilter() { ////Filter 3 dagen voor en na huidige datum PlanningFilter = " (Userid AND Datum BETWEEN '" + datumbegin + "' AND '" + datumeind + "') AND "; } De string BeginWhere is de variabele die we gebruiken om de WHERE te zoeken in de SQL statement die we in de komende functie meekrijgen. De string EindWhere is de variabele die we gebruiken om het einde van de WHERE te zoeken. De PlanningFilter is nu hetgeen dat we in de WHERE clausule moeten toevoegen. Doordat we deze variabelen hebben, kunnen we beginnen aan het invoegen van de voorwaarden. Hiervoor maken we een kleine functie. Deze functie maakt gebruik van het gegenereerde SQL statement(selectincrementalinsertscommand), de specifieke filter die voor een bepaalde tabel nodig is (filter). Om ervoor te zorgen dat we geen dubbele waardes meekrijgen voorzien we ook een group by statement (WhereEindGroupBy) en tot slot moeten we ook weten met welke tabel we bezig zijn. Zoals bijna elke functie werkt, moeten we iets terug sturen. In deze functie sturen we dan ook de SQL statement (selectincrementalinsertscommand) terug met de ingevoegde filters. Eerst maken we de BeginFrom met behulp van de tabel die we meekrijgen zodat we later makkelijk een inner join kunnen toevoegen.

25 25 public IDbCommand MakeFilterInsert(IDbCommand selectincrementalinsertscommand, string filter, string WhereEindGroupBy, string tabel) { string BeginFrom = "FROM " + tabel; //Hier voegen we de filters toe op de voorgedefineerde plaatsen in de insert sql code ////We zoeken waar BeginWhere de eerste keer voorkomt met IndexOf, voegen de lengte van BeginWhere er aan toe en dan hebben de locatie waar de filter geplaatst moet worden selectincrementalinsertscommand.commandtext = selectincrementalinsertscommand.commandtext.insert(selectincrementalinsertscommand.commandtext.indexof(beginwhere) + BeginWhere.Length, " (" + PlanningFilter); selectincrementalinsertscommand.commandtext = selectincrementalinsertscommand.commandtext.insert(selectincrementalinsertscommand.commandtext.indexof(eindwhere) + EindWhere.Length, ")" + WhereEindGroupBy); ////Hier gebeurt hetzelfde als voor de BeginWhere maar dan voor BeginFrom selectincrementalinsertscommand.commandtext = selectincrementalinsertscommand.commandtext.insert(selectincrementalinsertscommand.commandtext.indexof(beginfrom) + BeginFrom.Length, filter); //Hier voegen we de filter parameter toe die we meekrijgen vanaf de client selectincrementalinsertscommand.parameters.add(new System.Data.SqlClient.SqlParameter("@gebruiker", System.Data.SqlDbType.NVarChar)); return selectincrementalinsertscommand; } Nu is de functie klaar. En dan moeten we nog enkel voor elke tabel de SQL statement ophalen van de gegenereerde code. Die we dan later met behulp van de functie terug wegschrijven. Dus voor bijvoorbeeld de tabel TblContactpersonen maken we eerst de ContactpersoonFilter en de ContactpersoonWhereEindGroupBy waar we de inner join statement in zetten en de naam van de tabel waarmee we werken. Als we dat hebben moeten we de SQL statements oproepen van de gegenereerde code voor insert, update en delete. Deze geven we samen met de vorig 3 strings mee met de functie. public void SetFilterContactpersonen(InspectorCacheServerSyncProvider _serversyncprovider) { string ContactpersoonFilter = " INNER JOIN dbo.tblinstallaties on CP_FiliaalNr = Inst_FiliaalNr INNER JOIN dbo.tblplanning on Inst_InstallatieNr = InstallatieNr AND Inst_DebiteurNr = CP_DebiteurNr "; string ContactpersoonWhereEindGroupBy = " Group by dbo.tblcontactpersonen.[cp_id], dbo.tblcontactpersonen.[cp_debiteurnr], dbo.tblcontactpersonen.[cp_filiaalnr], [CP_Titel], [CP_Voornaam], [CP_FamNaam], [CP_Telefoon], [CP_Fax], [CP_ ], [CP_GetsFaxReport], [CP_GetsMailReport]"; string tabel = "dbo.tblcontactpersonen"; IDbCommand selectincrementalinsertscommand = _serversyncprovider.tblcontactpersonensyncadapter.selectincrementalinsertscommand; IDbCommand selectincrementalupdatescommand = _serversyncprovider.tblcontactpersonensyncadapter.selectincrementalupdatescommand; IDbCommand selectincrementaldeletescommand = _serversyncprovider.tblcontactpersonensyncadapter.selectincrementaldeletescommand; _serversyncprovider.tblcontactpersonensyncadapter.selectincrementalinsertscommand = MakeFilterInsert(selectIncrementalInsertsCommand, ContactpersoonFilter, ContactpersoonWhereEindGroupBy, tabel); _serversyncprovider.tblcontactpersonensyncadapter.selectincrementalupdatescommand = MakeFilterUpdate(selectIncrementalUpdatesCommand, ContactpersoonFilter, ContactpersoonWhereEindGroupBy, tabel); }

26 26 Op het eind zetten we de nieuwe SQL statement met de filter terug naar de gegenereerde code en dat is de workaround voor de filter. Omdat de SQL statement nogal lang zijn hebben we gebruik gemaakt van het handige programma dat bij Microsoft SQL Server 2008 R2 zit namelijk SQL Server Profiler. Met deze tool kunnen we makkelijk bekijken wat er allemaal gebeurt bij het uitvoeren van dit SQL statement met filter op de database Inspector. In het begin voert het systeem een check uit om alle statements te controleren. Daarna worden de SQL statements per tabel uitgevoerd. En als er fouten in de SQL statements voorkomen, laat de tool toe de SQL statement te kopiëren en in Microsoft SQL Server 2008 R2 de SQL opnieuw uit te voeren om op die manier de fouten er snel uit te halen.

27 Veel voorkomende exceptions Een exception wordt aangeroepen wanneer er zich een fout voordoet in het geschreven programma waarin de syntax juist gecodeerd is maar er meestal ofwel een hardwareof netwerkfout zich voordoet. Hieronder worden de meest voorkomende exceptions opgesomd en uitgelegd. De meest voorkomende exception is een TargetInvocationException. Dit heeft meestal te maken met netwerkproblemen of databaseproblemen en zijn meestal de volgende: {"Unable to connect to the remote server"} {"A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond"} o De netwerkverbinding van de PDA is niet in orde. Zorg ervoor dat je met de PDA op het internet kan door bijvoorbeeld naar Google te surfen. {"Unable to enumerate changes at the DbServerSyncProvider for table in synchronization group ' SyncGroup'."} o Er is een fout met de lokale database. Dit is het makkelijkst op te lossen door de sdf te verwijderen en deze opnieuw te laten genereren door middel van een synchronisatie op te roepen. {"Unable to initialize the client database, because the schema for table could not be retrieved by the GetSchema() method of DbServerSyncProvider. Make sure that you can establish a connection to the client database and that either the SelectIncrementalInsertsCommand property or the SelectIncrementalUpdatesCommand property of the SyncAdapter is specified correctly."} o Er zit waarschijnlijk een fout in de SQL filter. Kijk de filter na voor eventuele fouten. { Er is een probleem met de netwerkverbinding } o De toepassing geraakt niet ingelogd op de SQL server Een andere exception die minder vaak voorkomt is de ArgumentException. Dit wil zeggen dat waarschijnlijk niet alles goed verwijderd is bij reference.cs. Bekijk de code in dit geval nog eens goed en je zal de fout waarschijnlijk wel vinden. Let op: Je krijgt hier meestal geen syntaxerror aangezien de meeste van die code hard coded is en dit dus niet gecontroleerd kan worden. 4.3 Testen In dit deel bespreken we op welke manier we het systeem hebben getest. Als men met nieuwere technologieën wil gaan werken moet met beginnen met een grondig onderzoek naar de mogelijkheden van het systeem en hoe het met bepaalde besturingssystemen kan samenwerken. Maar bij een onderzoek blijft het dus niet. Eenmaal je de informatie hebt kunnen vergaren, moet je ook nog testen of het effectief werkt voor de doeleinden die je voor ogen hebt. Om dit grondig te kunnen testen, moet je bepaalde scenario s uitdenken. Zoals het voor onze stageopdracht nodig was: Als meerder gebruikers tegelijk willen synchroniseren. Wat gebeurt er dan? Werkt alles nog zoals het zou moeten. Reageert het zoals jij wilt dat het moet reageren.

28 28 Hieronder geven we een korte opsomming van de testen die wij het belangrijkste vonden om te bepalen of het geheel wel deed wat het moet doen. Sommige testen zijn vrij voor de hand liggend. Maar deze voor de hand liggende testen moeten ook getest worden om er zeker van te zijn dat alle belangrijke aspecten van de applicatie werken. Gebruiker selecteren en gegevens ophalen De gegevens worden opgehaald, zich houdende aan de voorwaarden van de filter. Een rij toevoegen in tblopmerkingen op de pda en synchroniseren De rij is toegevoegd in de lokale mobiele database. Bij de synchronisatie komt de melding dat er 1 rij geüpload is. De toegevoegde record staat nu ook in de serverdatabase. Een rij toevoegen aan de server kant en synchroniseren Bij de synchronisatie komt de melding dat er 1 rij is gedownload. De toegevoegde record staat nu ook in de mobiele database. Een rij updaten op de pda en synchroniseren De rij is gewijzigd in de lokale mobiele database. Bij de synchronisatie komt de melding dat er 1 rij geüpload is. De gewijzigde record is nu ook gewijzigd in de serverdatabase. Een rij updaten op de server en synchroniseren De rij is gewijzigd in de lokale mobiele database. Bij de synchronisatie komt de melding dat er 1 rij gedownload is. Een rij verwijderen op de server en synchroniseren De rij is verwijderd uit de lokale mobiele database. Bij de synchronisatie komt de melding dat er 1 verandering is geüpload. Een rij verwijderen op de pda en synchroniseren De rij is verwijderd in de lokale mobiele database. Bij de synchronisatie komt de melding dat er 1 verandering gedownload is. Een rij verwijderen op de server en dezelfde rij aanpassen op pda en dan synchroniseren De rij is verwijderd uit de lokale mobiele database. Bij de synchronisatie komt de melding dat er 1 verandering is geüpload en 1 gedownload. De rij staat ook niet meer op de server Een rij verwijderen op de pda en dezelfde rij aanpassen op de server en dan synchroniseren De rij is verwijderd uit de lokale mobiele database. Bij de synchronisatie komt de melding dat er 1 verandering geüpload is. De rij staat nog op de server

29 29 BESLUIT Na een aantal maanden met Windows Mobile gewerkt te hebben, kunnen we toch al een besluit vormen over Windows Mobile. Volgens mij is Windows Mobile een technologie die we niet vaak meer gaan tegenkomen. Daarentegen met het Microsoft Sync Framework zullen we wel vaker tegenkomen. Microsoft Sync Framework is een tool waar men veel mee kan bereiken op bijna alle vlakken van synchronisatie. Je kan er hele mooie applicaties mee bouwen. Maar je moet wel weten waar je mee bezig bent. Nu nog even over wat wij effectief hebben gedaan. Wij zijn vrij tevreden over het eindresultaat, hoewel wij graag de applicatie zelf ook af wouden hebben. Maar de hoofdopdracht was het onderzoek doen naar de tools en testen wat het kan en met de vergaarde kennis een DAL-laag maken voor op de cliënt toestellen en wat business logica. Tot slot wil ik afsluiten met mijn gedachte over de gehele stage. Ik vond het een interessante stage met veel opzoekwerk. Ik vond het uiterst leerzaam. Dit omwille van de nieuwe technologieën waar we ergens al wel eens iets van hadden gehoord maar nog niet nader bekeken. Kortom, ik vond het een goede en uiterst leerzame stage.

30 30 LITERATUURLIJST Adding Filter to Local Database Cache generated sync. (sd). Opgehaald van jtabadero.wordpress.com: Creating an Occasionally Connected Smart Device Application. (sd). Opgehaald van microsoft.com: Filter Rows and Columns. (sd). Opgehaald van microsoft.com: Microsoft Sync Framework. (sd). Opgehaald van Microsoft Sync Framework: NHibernate. (sd). Opgehaald van nhforg: nhydrate. (sd). Opgehaald van nhydrate: OpenAccess Telerik. (sd). Opgehaald van Telerik: OpenNETCF.ORM Framework. (sd). Opgehaald van Codeplex: SQL Compact Code Generator. (sd). Opgehaald van Codeplex:

31 31 Bijlagen Bijlage 1: De WRM van de synchronisatie tools Bijlage 2: WRM van de ORM-tools Bijlage 3: Handleiding

32 BIJLAGE 1: DE WRM VAN DE SYNCHRONISATIE TOOLS Totaal Microsoft Sync framework Remote Data Access score Documentatie Ondersteunt Compact Framework Conflict detection and resolution Change tracking Rijen updaten (Deel van tabel) Rating 100% 91% 36%

33 BIJLAGE 2: WRM VAN DE ORM-TOOLS ORM Totaal nhydrate nhibernate OpenNETCF Linq to sql SQL Compact Code Generator OpenAccess Telerik EntitySpaces Documentat ,5 3 2,5 3 ie Ondersteunt , Compact Framework Installatie 3 2,5 1, ,5 Freeware Rating 13 50% 42% 69% 77% 92% 81% 81%

34 BIJLAGE 3: HANDLEIDING De toepassing Met deze handleiding moet u in staat zijn om zelf een mobile applicatie te ontwikkelen voor offline gebruik met een filter. Maak een Smart Device project aan. Voeg een nieuwe Windows Communication Foundation (WCF) Service Library toe die dient als tussenlaag tussen de lokale database cache de echte database. Voeg daarna een local database cache toe. Configureer de synchronisatie-instellingen. Configureer en start de WCF Service. Voeg een synchronisatiefunctionaliteit toe aan je programma. Test de applicatie. Benodigdheden: Installeer de Northwind database op je SQL Server. Installeer Windows Mobile Device Center of ActiveSync (Vanaf Windows Vista). Installeer Visual Studio 2008 Service Pack 1. Installeer Microsoft Synchronization Services for ADO.NET. Installeer Microsoft SQL Server Compact 3.5 Service Pack 1 for Windows Mobile. Inhoud Onderdeel Pagina Inleiding 1 Smart Device project aanmaken 2 WCF Service aanmaken 3 WCF Service Library toevoegen 3 Local Database Cache toevoegen 3 Synchronisatie-instellingen configureren 4-7 Data connecties voor server en client databases aanmaken 4 1. Tabellen toevoegen en configureren voor local caching 5 2. Verdeel synchronisatie componenten over client- en serverprojecten 5 Meer info over items die zijn toegevoegd (Client side) 6 Meer info over items die zijn toegevoegd (Server side) 7 Configureer en start de WCF Service 8-9 Codeer Synchronisatie Features 10 Web reference toevoegen 10 Formulier applicatie aanpassen voor synchronisatie 11 Test applicatie 12 Filter Toepassen 13 Filter-parameter via client meegeven 13 Filterparameter instellen op aan serverkant 13 Workaround filter toepassen 14 Filter-parameter via client meegeven 14 Filter-statements genereren SQL Compact Code Generator 17 Installatie 17 Code genereren met tool 17

35 2 Smart Device project aanmaken Wat? De applicatie voor op de PDA maken. Project aanmaken 1. Maak een nieuw project. 2. Kies als Solution Demo project en voor het project InspectorApp. 3. Bij projecten kies je voor Smart Device en zorg je ervoor dat er rechts boven.net Framework 3.5 staat. 4. Klik OK. 5. Het Add New Smart Device Project dialoogvenster zal nu verschijnen. Hier kies je voor: - Windows Mobile 5.0 Pocket PC SDK als target Platform -.NET Compact Framework versie 3.5 als.net CF version - Device application als Template klik OK. 6. Het project is aangemaakt.

36 3 WCF Service aanmaken Inleiding Om te kunnen synchroniseren met een server heb je een WCF Service nodig om dit tot een goed einde te brengen. WCF Service Library toevoegen 1. In het File menu, kies Add en klik dan New Project. 2. Noem het project MiddleTierServiceLibrary. 3. Klik op WCF onder Project types, kies vervolgens WCF Service Library als template. 4. Klik OK. Het MiddleTierServiceLibrary project is aangemaakt en toegevoegd aan de Solution Explorer. Local Database Cache toevoegen 1. Klik rechts op het MiddleTierServiceLibrary project, kies Add, en klik dan op New Item. 2. Kies de Local Database Cache template en noem het InspectorCache.sync. 3. Klik op Add. Een InspectorCache.sync bestand is toegevoegd aan de Solution Explorer en het Configure Data Synchronization dialoogvenster verschijnt. InspectorCache.sync zal de configuratie van de synchronisatie opslaan.

37 4 Synchronisatie-instellingen configureren Data connecties voor server en client databases aanmaken 1. Gebruik het Configure Data Synchronization om een connectie te maken met de Inspector database dat je net hebt geïnstalleerd. Dit is de remote database die buiten je PDA-applicatie staat. Je kiest deze connectie, moest deze nog niet bestaan klik je op New en maak je de connectie aan. Opmerking: Voor het welzijn van het project kan het handig zijn dat je Change Tracking inschakelt. 2. Gebruik de standaardwaarde, in dit geval Inspector.sdf (new) voor de client. Het Configure Data Synchronization dialoogvenster maakt een nieuwe SQL Server Compact 3.5 database aan en voegt het toe aan het project. Wanneer je de databaseconnectie hebt ingegeven, haalt het dialoogvenster de beschikbare tabellen op. Wanneer de lijst van de beschikbare tabellen opgehaald is, verschijnt de Add knop. Opmerking: De ok-knop is op dit moment nog niet ingeschakeld, dit gebeurd pas wanneer je tabellen hebt geselecteerd. Vervolg op de volgende pagina

38 5 Synchronisatie-instellingen configureren (vervolg) Tabellen toevoegen en configureren voor local caching 1. Klik op de Add knop om de beschikbare tabellen te tonen. 2. Selecteer alle nodige tabellen. Opmerking: Je kan hier ook de synchronisatie-instellingen aanpassen naar wens. 3. Accepteer de standaard kolom- en tabelwaarden. Klik OK. Het dialoogvenster creëert de tracking kolommen en een deleteditems tabel als dat nodig is. De tabellen zijn toegevoegd aan de lijst van de gecachte tabellen. Verdeel synchronisatie componenten over client- en serverprojecten 1. In het Configure Data Synchronization dialoogvenster, klik op Advanced. 2. Op de client project locatie, kies voor InspectorApp. 3. Klik OK. Na dat de data synchronisatie is geconfigureerd, worden de componenten verdeeld over de client en de server. Ondertussen verschijnt het Generate SQL scripts dialoogvenster. Het genereert standaard kolommen en tabellen die de wijzigingen van geüpdatete en verwijderde gegevens bijhouden. 4. Klik OK. De gegenereerde SQL-scripts worden opgeslagen in het serverproject indien nodig. De Inspector.sdf client database wordt aangemaakt in het client project en wordt voor de eerste keer gesynchroniseerd met de server database. Opmerking: SQL scripts worden enkel gecreëerd als er veranderingen nodig zijn op de server. Als de server al zo n tabellen heeft, of je hebt Change Tracking ingeschakeld, worden deze niet aangemaakt. 5. Wanneer de Data Source Configuration Wizard verschijnt, selecteer je de tabellen. 6. Klik Finish. InspectorDataSet.xsd is toegevoegd aan het client project en de dialoogvensters verdwijnen. Vervolg op de volgende pagina

39 6 Synchronisatie-instellingen configureren (vervolg) Meer info over items die zijn toegevoegd (Client side) Inspector.sdf Een lokale database die de gecachte data bevat van SQL Server. InspectorCache.Client.sync Een Xml-bestand dat de synchronisatie-informatie bevat. Dubbelklik hierop om het Configure Data Synchronization dialoogvenster te openen. InspectorCache.Client.Designer.cs Een codebestand dat definities bevat voor de client Sync provider en de Sync agent. Het bevat ook de Sync tabellen voor de lokale database. InspectorDataSet.xsd De typed dataset die gegenereerd is door de Data Source Configuration wizard. Deze dataset bevat de tabellen waarin data zit van de lokale database. References\Microsoft.Synchronization.Data References\Microsoft.Synchronization.Data.SqlServerCe Benodigde references van Microsoft Synchronization Services for ADO.NET. Vervolg op de volgende pagina

40 7 Synchronisatie-instellingen configureren (vervolg) Meer info over items die zijn toegevoegd (Server side) InspectorCache.sync Een Xml-bestand dat de synchronisatie-informatie bevat. Dubbelklik hierop om het Configure Data Synchronization dialoogvenster te openen. InspectorCache.Designer.cs Een codebestand dat definities bevat voor de client Sync provider en de Sync agent. Het bevat ook de Sync tabellen voor de lokale database. InspectorCache.SyncContract.cs Een codebestand dat de WCF contract definitie en zijn implementatie bevat. SQL-Scripts folder Een map van SQL scripts. De scripts in deze map dienen om de wijzigingen op de server na te gaan. Enkele scripts in deze map creëren de tracking kolommen, de tabel van de verwijderde items. Andere scripts in deze map creëren triggers die veranderingen opslaan in de database. Opmerking: SQL scripts worden enkel gecreëerd als er veranderingen nodig zijn op de server. Als de server al zo n tabellen heeft, of je hebt Change Tracking ingeschakeld, worden deze niet aangemaakt. SQL Undo Scripts folder Deze scripts verwijderen de wijzigingen in de database. Deze scripts dienen dus om de wijzigingen ongedaan te maken indien er iets is misgegaan. References\Microsoft.Synchronization.Data References\Microsoft.Synchronization.Data.Server De benodigde references voor Microsoft Synchronization Services for ADO.NET. Vervolg op de volgende pagina

41 8 Configureer en start de WCF Service Configureer en start de WCF Service 1. In de Solution Explorer, dubbelklik op InspectorCache.SyncContract.cs om het bestand te openen in de editor. 2. Voeg het XmlSerializerFormat() attribuut toe net voor de definitie van IInspectorSyncContract en maak gebruik van []. 3. In de Solution Explorer, dubbelklik op App.config. 4. Voer de volgende veranderingen door in het App.config-bestand. Deze veranderingen configureren het project om de InspectorCacheSyncService te hosten die gegenereerd is door het configure Data Synchronization dialoogvenster in plaats van de standaardservice die gegenereerd is door de WCF project template. Verander <service name="middletierservicelibrary.service1" behaviorconfiguration="middletierservicelibrary.service1behavior"> in <service name="middletierservicelibrary.inspectorcachesyncservice" behaviorconfiguration="middletierservicelibrary.inspectorcachesyncs ervicebehavior"> Verander <add baseaddress=" erservicelibrary/service1/" /> in <add baseaddress=" adres>:8731/middletierservicelibrary/inspectorcachesyncservice/" /> Verander <endpoint address="" binding="wshttpbinding" contract="middletierservicelibrary.iservice1"> in <endpoint address="" binding="basichttpbinding" contract="middletierservicelibrary.iinspectorcachesynccontract"> Opmerking: wshttpbinding is niet ondersteund op mobiele apparaten. Verander <dns value="localhost"/> in <dns value="<ip adres>"/> Verander <behavior name="middletierservicelibrary.service1behavior"> in <behavior name="middletierservicelibrary.inspectorcachesyncservicebeha vior"> Vervolg op de volgende pagina

42 9 Configureer en start de WCF Service (vervolg) Configureer en start de WCF Service 5. Klik rechts op MiddleTierServiceLibrary in de Solution Explorer en klik op Set as StartUp Project. 6. Om de WCF Service te starten, klik op Start Without Debugging in het Debug menu. 7. Het Deploy InspectorApp dialoogvenster verschijnt. 8. Klik op Cancel en dan op Yes om verder te gaan. Opmerking: Je start alleen de WCF Service, de emulator is hier dus nog niet nodig. De WCF Service Host wordt gestart (het icoon verschijnt in de taakbalk) en host the service. De WCF Test Client verschijnt en maakt het mogelijk om de service te testen. Opmerking: Zorg ervoor dat de poort toegankelijk is en niet geblokkeerd is door een firewall.

43 10 Codeer Synchronisatie Features Web reference toevoegen 1. In de Solution Explorer, klik rechts op InspectorApp, en klik dan op Add Web Reference. Het Add Web Reference dialoogvenster verschijnt. 2. Typ het adres van de InspectorCacheSyncService, zoals Adres:8731/InspectorCacheSyncService/, in de URL invoerveld, klik op Go. Opmerking: Zorg ervoor dat er geen firewalls poort 8731 blokkeren. Wanneer de InspectorCacheSyncService Web service gevonden is, wordt de Add-knop ingeschakeld. Opmerking: Het service adres kan gevonden worden in het App.config bestand. 3. Noem de Web reference InspectorCacheWebRef, en klik op Add Web Reference. InspectorCacheWebRef verschijnt dan onder Web References in de Solution Explorer. Visual Studio genereert het bestand Reference.cs. Alleen zie je dit bestand niet verschijnen in de Solution Explorer. 4. Volg de volgende stappen om Reference.cs aan te passen: a. Dubbelklik op InspectorCacheWebRef om het te openen in de Object Browser. b. Vouw de module InspectorApp.InspectorCacheWebRef uit. c. Klik rechts op InspectorCacheSyncService en Klik op Go To Definition. a. Reference.cs is geopend in de Code Editor. d. Voeg de volgende usings toe: a. using Microsoft.Synchronization; b. using Microsoft.Synchronization.Data; e. Verwijder alle klassen en enumeraties in het bestand behalve InspectorCacheSyncService. Opmerking: De verwijderde types zijn al opgenomen in de net toegevoegde Microsoft. Synchronization en Microsoft.Synchronization.data. Vervolg op de volgende pagina

44 11 Codeer Synchronization Features (vervolg) Formulier applicatie aanpassen voor synchronis atie 1. In de Solution Explorer, dubbelklik op Form1 om het te openen in de Visual Studio designer. 2. Sleep het icon van de Planning van Data Sources op het formulier. 3. In het formulier voegt u een knop toe met als naam Synchronize Now en verander de naam van de knop in SynchronizeMenuItem. Opmerking De gebruiker zal dus op de knop Synchronize Now klikken op het synchronisatie-proces te starten. 4. Dubbelklik op de knop Synchronize Now om een eventhandler te maken en het te openen in de Code Editor. 5. Voeg de code hieronder toe om te synchroniseren en de Planning tabel in de dataset op te vullen. Cursor.Current = Cursors.WaitCursor; // The WCF Service InspectorCacheWebRef.InspectorCacheSyncService websvcproxy = new InspectorApp. InspectorCacheWebRef.InspectorCacheSyncService(); // The Remote Server Provider Proxy Microsoft.Synchronization.Data.ServerSyncProviderProxy serverprovider = new Microsoft.Synchronization.Data.ServerSyncProviderProxy(webSvcProxy); // The Sync Agent InspectorCacheSyncAgent syncagent = new InspectorCacheSyncAgent(); syncagent.remoteprovider = serverprovider; syncagent.customers.syncdirection = Microsoft.Synchronization.Data.SyncDirection.Bidirectional; // Synchroniseer de databases Microsoft.Synchronization.Data.SyncStatistics stats = syncagent.synchronize(); // Herlaad de DataSet/Datagrid met de gegevens van de lokale database tblplanningtableadapter.fill(inspectordataset.tblplanning); // Toon de synchronisatie statistieken MessageBox.Show("Changes Downloaded: " + stats.totalchangesdownloaded.tostring() + "\r\n" + "Changes Uploaded: " + stats.totalchangesuploaded.tostring()); Cursor.Current = Cursors.Default; De DataGridView toont de Customers table van de locale database cache (het Inspector.sdf bestand in het project).

45 12 Test-applicatie Test applicatie 1. In het tools menu klik je op Device Emulator Manager (DEM). Het Device Emulator Manager venster toont een lijst van alle beschikbare emulators. 2. Klik rechts op USA Windows Mobile 5.0 Pocket PC R2 Emulator en klik op Connect. De Pocket PC - WM 5.0 Device Emulator verschijnt. 3. Klik rechts in het Device Emulator Manager venster op de verbonden emulator en klik op Cradle. Windows Mobile Device Center of ActiveSync verbind zich met de verbonden emulator. Als Windows Mobile Device Center of ActiveSync aanbieden om het apparaat te configureren, klik dan op Connect without setting up your device of Cancel. Opmerking: De verbinding met Windows Mobile Device Center of ActiveSync geeft de emulator toegang tot InspectorCacheSyncService dat op de computer draait. Om te kunnen connecteren met de device emulator, dan moet de configuratie van de verbinding in Windows Mobile Device Center of ActiveSync geconfigureerd zijn om DMA connecties toe te laten. 4. Klik rechts op InspectorApp in de Solution Explorer en klik op Set as StartUp Project. 5. Druk op F5 om te debuggen. 6. Ga nu terug naar het formulier in de Pocket PC - WM 5.0 Device Emulator en druk op Insert Row. De locale-en serverdatabase zijn niet langer gesynchroniseerd. Maar er moet nu een nieuwe rij zichtbaar zijn in de Datagrid. 7. Klik op Synchronize Now. De locale database en de serverdatabase moeten nu beide een nieuwe rij hebben. 8. Op uw computer gebruik je Server Explorer/Database Explorer (of een andere database tool) om te connecteren met de serverdatabase en dan kan je verifiëren of de nieuwe rij in de database bestaat. 1. In de Server Explorer/Database Explorer zoek je de Customers table op de serverdatabase 2. Klik rechts op de Planning table en klik op Show Table Data. 3. Verifieer dat de nieuwe rij bestaat. 4. Klik rechts op de nieuwe rij en klik dan op Delete. De databases zijn nu niet meer synchroon. 9. Ga nu weer terug naar het formulier in Device Emulator en klik op Synchronize Now. 10. Verifieer dat de wijzigingen aan de serverdatabase gesynchroniseerd zijn met de lokale database en dat de rij niet meer in de Datagrid staat. 11. Sluit het formulier.

46 13 Filter toepassen Filterparameter via client meegeven 1. Ga naar de code van het formulier waar de synchronisatie staat. 2. Zoek in de code naar de Sync Agent. 3. Voeg volgende regel toe: syncagent.configuration.syncparameters.add(new waarde)); 4. Stap 3 herhalen voor meerdere parameters. Nu kan er aan de server kant gefilterd worden volgens de ingegeven parameters. Filterparam eter instellen op aan serverkant 1. Ga naar InspectorCache.Designer.cs onder de node InspectorCache.sync. 2. Open de partial class van de tabel waar er moet worden gefilterd. 3. Zoek nu bij InitializeCommands naar SelectIncrementalInsertsCommand.CommandText. 4. Typ in het begin van de WHERE: (NaamKolomVanTabel AND ( ) ). Opmerking: De naam van de parameter moet dezelfde zijn als de parameter die bij de client werd meegegeven voor deze stap en volgende stappen 5. Voeg volgende regel toe op het eind van de SelectIncrementalInsertsCommand : this.selectincrementalinsertscommand.parameters.add(new System.Data.SqlClient.SqlParameter("@NaamParameter", System.Data.SqlDbType.(TypeParameter)); 6. Zoek nu naar SelectIncrementalUpdatesCommand.CommandText. 7. Typ in het begin van de WHERE: NaamKolomVanTabel AND. 8. Voeg volgende regel toe op het eind van de SelectIncrementalUpdatesCommand: this. SelectIncrementalUpdatesCommand.Parameters.Add(new System.Data.SqlClient.SqlParameter("@NaamParameter", System.Data.SqlDbType.(TypeParameter)); 9. Voor meerdere parameters stappen 3 tot 8 herhalen met de andere parameters.

47 14 Workaround filter toepassen Filterparameter via client meegeven 1. Ga naar de code van het formulier waar de synchronisatie staat. 2. Zoek in de code naar de Sync Agent. 3. Voeg volgende regel toe: syncagent.configuration.syncparameters.add(new waarde)); 4. Stap 3 herhalen voor meerdere parameters. Nu kan er aan de serverkant gefilterd worden volgens de ingegeven parameters. Filterstatements genereren 1. We maken de statements per tabel klaar die ertussen gevoegd moeten komen. 2. We halen de selectincremental commands op. Alle 3: Insert, Update en delete. 3. Bij het teruggeven van de commands roepen we MakeFilter aan voor elk van de 3 commands. 4. Maak de functie MakeFilterInsert die een IDbCommand teruggeeft. Met volgende parameters: IDbCommand selectincrementalinsertscommand = de gegenereerde sql syntax. string filter = de filter die van toepassing voor de tabel voor de inner joins. string WhereEindGroupBy = voor de eventuele group by die nodig is. string tabel = de tabel waar er iets moet worden gefilterd. public IDbCommand MakeFilterInsert( IDbCommand selectincrementalinsertscommand, string filter, string WhereEindGroupBy, string tabel) { return selectincrementalinsertscommand; } 5. Voeg bovenaan de filter klasse volgende variabelen toe en de datums die nodig zijn voor de filter. string datumbegin; string datumeind; public void SetDatums(int aantaldagen) { datumbegin = (DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.AddDays(- aantaldagen).day.tostring()); } Vervolg op de volgende pagina

48 15 Workaround filter toepassen (vervolg) Filterstatements genereren datumeind = (DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.AddDays(aantalDagen).Day.ToString()); string PlanningFilter; string BeginWhere = "WHERE"; string EindWhere = 6. Voeg de algemene where filter toe. public void setplanningfilter() { PlanningFilter = " (Userid AND Datum BETWEEN '" + datumbegin + "' AND '" + datumeind + "') AND "; } 7. Maak de zoekterm voor de from klaar. string BeginFrom = "FROM " + tabel; 8. Nu voegen we de filters toe op de voorgedefinieerde plaatsen in de insert sql code. We zoeken waar BeginWhere de eerste keer voorkomt, voegen de lengte van BeginWhere er aan toe en dan hebben de locatie waar de filter moet geplaatst worden en dan voegen we de filter toe. selectincrementalinsertscommand.commandtext = selectincrementalinsertscommand.commandtext.insert(selectinc rementalinsertscommand.commandtext.indexof(beginwhere) + BeginWhere.Length, " (" + PlanningFilter); selectincrementalinsertscommand.commandtext = selectincrementalinsertscommand.commandtext.insert(selectinc rementalinsertscommand.commandtext.indexof(eindwhere) + EindWhere.Length, ")" + WhereEindGroupBy); We doen hetzelfde voor de 2de where. selectincrementalinsertscommand.commandtext = selectincrementalinsertscommand.commandtext.insert(selectinc rementalinsertscommand.commandtext.lastindexof(beginwhere) + BeginWhere.Length, " (" + PlanningFilter); selectincrementalinsertscommand.commandtext = selectincrementalinsertscommand.commandtext.insert(selectinc rementalinsertscommand.commandtext.lastindexof(eindwhere) + EindWhere.Length, ")"); Vervolg op de volgende pagina

49 16 Workaround filter toepassen (vervolg) Filterstatements genereren 9. Hier gebeurt hetzelfde als voor de BeginWhere maar dan voor BeginFrom. selectincrementalinsertscommand.commandtext = selectincrementalinsertscommand.commandtext.insert(selectinc rementalinsertscommand.commandtext.indexof(beginfrom) + BeginFrom.Length, filter); selectincrementalinsertscommand.commandtext = selectincrementalinsertscommand.commandtext.insert(selectinc rementalinsertscommand.commandtext.lastindexof(beginfrom) + BeginFrom.Length, filter); 10. Als deze code is toegevoegd, moeten we alleen nog de filter parameter toevoegen. selectincrementalinsertscommand.parameters.add(new System.Data.SqlClient.SqlParameter("@gebruiker", System.Data.SqlDbType.NVarChar)); 11. Herhaal al deze stappen voor de Update en Delete. 12. Let wel op dat je bij tblopmerkingen beter een andere filter kan gebruiken. Deze tabel heeft namelijk van zichzelf al de juiste filterkolommen. Zet dus in het begin van elke methode (insert, update en delete) deze code: if (tabel == "dbo.tblopmerkingen") { PlanningFilter = filter; filter = ""; } else { setplanningfilter(); } 13. Bij de tabel tblopmerkingen wordt de filter dan: string PlanningFilterOpmerking = " dbo.tblopmerkingen.[user] AND Afgemeld = 0 AND (dbo.tblopmerkingen.[datum] BETWEEN '" + datumbegin + "' AND '" + datumeind + "') AND "; string tabel = "dbo.tblopmerkingen"; 14. De rest kan gewoon hetzelfde gedaan worden zoals bij de andere tabellen.

50 17 SQL Compact Code Generator Installatie 1. Ga naar 2. Kies bij downloads voor Build Stabiele versie 3. Download SQL Compact Code Generator Installer 4. Voer het bestand uit: SQL Compact Code Generator msi en installeer het programma. SQL Compact Code Generator is nu geïnstalleerd. Code genereren met tool 1. Ga naar het project dat je hierboven hebt gemaakt en selecteer het.sdf bestand bij de mobiele applicatie. 2. Bekijk nu de properties van het.sdf bestand. 3. Typ sqlcecodegenerator bij Custom Tool SQL Compact Code Generator heeft nu een.cs bestand toegevoegd bij het.sdf bestand. In dit bestand worden nu methodes aangemaakt om makkelijk objecten te creëren, updaten en deleten. Om het pad van het.sdf-bestand minder gevoelig te maken aan map wijzigingen is het aangeraden om de code in EntityBase te wijzigen in de onderstaande code: static EntityBase() { var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase); ConnectionString = string.format("data Source={0}\\Inspector.sdf", path); } Meer documentatie kan je vinden op: ET%20Full%20and%20Compact%20Framework&referringTitle=Document ation

Met deze handleiding moet u in staat zijn om zelf een mobile applicatie te ontwikkelen voor offline gebruik met een filter.

Met deze handleiding moet u in staat zijn om zelf een mobile applicatie te ontwikkelen voor offline gebruik met een filter. Inleiding De toepassing Met deze handleiding moet u in staat zijn om zelf een mobile applicatie te ontwikkelen voor offline gebruik met een filter. Maak een Smart Device project aan. Voeg een nieuwe Windows

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

Installatie SQL: Server 2008R2

Installatie SQL: Server 2008R2 Installatie SQL: Server 2008R2 Download de SQL Server 2008.exe van onze site: www.2work.nl Ga naar het tabblad: Downloads en meld aan met: klant2work en als wachtwoord: xs4customer Let op! Indien u een

Nadere informatie

Installatie King Task Centre

Installatie King Task Centre Installatie King Task Centre In deze handleiding wordt beschreven hoe u de King Task Centre moet installeren. King Task Centre is de nieuwe naam van de King MaatwerkBox. In alle documentatie en communicatie

Nadere informatie

Installatie King Task Centre

Installatie King Task Centre Installatie King Task Centre In deze handleiding wordt beschreven hoe u het King Task Centre moet installeren. Deze handleiding geldt voor zowel een nieuwe installatie, als voor een upgrade van een bestaande

Nadere informatie

Installatie SQL Server 2014

Installatie SQL Server 2014 Installatie SQL Server 2014 Download de SQL Server Express net advanced Services van de website: https://www.microsoft.com/en-us/download/details.aspx?id=42299 klik op Download. Als u een 64 bit variant

Nadere informatie

Handleiding CMS Online Identity Webontwikkeling. Handleiding CMS

Handleiding CMS Online Identity Webontwikkeling. Handleiding CMS Handleiding CMS 1 Inhoudsopgave 1. Inloggen... 3 2. Het CMS... 3 3. Websitecontent... 4 3.1 Een nieuwe pagina toevoegen... 4 3.2 Een pagina wijzigen... 4 3.3 Een pagina verwijderen... 5 4. De WYSIWYG editor...

Nadere informatie

Datum 15 juni 2006 Versie 1.0.6. Exchange Online. Handleiding voor gebruiker Release 1.0

Datum 15 juni 2006 Versie 1.0.6. Exchange Online. Handleiding voor gebruiker Release 1.0 Datum 1.0.6 Exchange Online Handleiding voor gebruiker Release 1.0 1.0.6 Inhoudsopgave 1 Instellingen e-mail clients 2 1.1 Gebruik via Outlook 2003 2 1.2 Gebruik via ActiveSync 15 1.3 Gebruik via andere

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

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

Installatie SQL Server 2012

Installatie SQL Server 2012 Installatie SQL Server 2012 Download de SQL Server express net Advanced Services van de website: https://www.microsoft.com/en-us/download/details.aspx?id=29062 klik op Download. Als u een 64 bit variant

Nadere informatie

Subject: Backups en Beestjes

Subject: Backups en Beestjes Voorwoord voor Back-ups en Beestjes. Het werken met up-to-date data en informatie is belangrijk. Mensen en bedrijven wagen het er niet op dat al hun data verloren gaat aan craches, virussen en andere soorten

Nadere informatie

Installatie SQL Server 2008R2

Installatie SQL Server 2008R2 Installatie SQL Server 2008R2 Download de SQL Server 2008.exe van onze site: www.2work.nl Ga naar tabblad: Downloads en meld aan met: klant2work en wachtwoord: xs4customer Let op! Indien u een Windows

Nadere informatie

Installatiehandleiding. Facto minifmis

Installatiehandleiding. Facto minifmis Installatiehandleiding Facto minifmis 1. Installatie Facto MiniFMIS 1.1 Achtergrond Facto MiniFMIS biedt facilitaire organisaties een eenvoudige en gebruikersvriendelijke hulpmiddel bij het uitvoeren van

Nadere informatie

Installatie van sqlserver

Installatie van sqlserver Installatie van sqlserver Download SQLserver 2005 Express basis van de website van 2work: www.2work.nl, tabblad downloads; beveiligde zone. De inlog gegevens kunnen via de helpdesk aangevraagd worden.

Nadere informatie

Snel op weg met webworxx e-mail

Snel op weg met webworxx e-mail pagina 1 van 23 Snel op weg met webworxx e-mail U heeft kleur bekend en gekozen voor webworxx e-mail. Met deze handleiding helpen wij u graag snel op weg bij het instellen van uw e-mailaccount. Firefox

Nadere informatie

Secure File Sync - Quick Start Guide

Secure File Sync - Quick Start Guide Secure File Sync - Quick Start Guide Secure File Sync Quick Start Guide 1. Installatie van de applicatie op een computer; 2. Gebruik van de applicatie; 3. Bestanden delen vanuit de applicatie; 4. Gebruik

Nadere informatie

HANDLEIDING EXTERNE TOEGANG CURAMARE

HANDLEIDING EXTERNE TOEGANG CURAMARE HANDLEIDING EXTERNE TOEGANG CURAMARE Via onze SonicWALL Secure Remote Access Appliance is het mogelijk om vanaf thuis in te loggen op de RDS omgeving van CuraMare. Deze handleiding beschrijft de inlogmethode

Nadere informatie

SQL SERVER 2008. Werking van Database Snapshots

SQL SERVER 2008. Werking van Database Snapshots KATHOLIEKE HOGESCHOOL KEMPEN GEEL SQL SERVER 2008 Werking van Database Snapshots ELINE STEYVERS BRAM DE SMEDT JOEY LEMMENS WOORD VOORAF Werking van Database Shapshots is bedoeld om mensen wegwijs te maken

Nadere informatie

Introductie. Handleiding: Owncloud instellen

Introductie. Handleiding: Owncloud instellen Introductie QSIT Owncloud is de hollandse en 100% privacy-veilige variant van Dropbox of Google Drive. Het stelt u in staat om vanaf elk apparaat aan dezelfde bestanden te werken. Omdat wij onze servers

Nadere informatie

Inhoudsopgave: Whisper380-computerhulp

Inhoudsopgave: Whisper380-computerhulp Versie: 1.0 Gemaakt door: Whisper380 Eigenaar: Datum: 17-10-2010 Inhoudsopgave: Inhoudsopgave:... 2 Het programma downloaden.... 3 Het programma downloaden... 4 De installatie van het programma... 6 Het

Nadere informatie

1. Over LEVIY 5. Openen van de activiteit 2. Algemene definities 6. Inloggen op het LEVIY dashboard 3. Inloggen 6.1 Overzichtspagina 3.

1. Over LEVIY 5. Openen van de activiteit 2. Algemene definities 6. Inloggen op het LEVIY dashboard 3. Inloggen 6.1 Overzichtspagina 3. Versie 1.0 05.03.2015 02 1. Over LEVIY Wat doet LEVIY? 08 5. Openen van de activiteit Hoe wordt de activiteit geopend? 2. Algemene definities Behandelen van terugkerende definities. 09 6. Inloggen op het

Nadere informatie

AUTOMATISERING. Act! WerkbonApp. De koppeling tussen het CRM systeem Act! en de Werkbon applicatie WerkbonApp.

AUTOMATISERING. Act! WerkbonApp. De koppeling tussen het CRM systeem Act! en de Werkbon applicatie WerkbonApp. Act! WerkbonApp De koppeling tussen het CRM systeem Act! en de Werkbon applicatie WerkbonApp. Act! Act! is een CRM softwarepakket waarmee u uw klanten en contacten kunt beheren. Het bevat alle functionaliteiten

Nadere informatie

Installatie en configuratie documentatie

Installatie en configuratie documentatie Installatie en configuratie documentatie Assistance Web Portal v. 2.58, 2.60 Voor Windows 2003 / 2008 / XP / Vista / Windows 7 Assistance PSO handleiding, uitgegeven door Assistance Software. Alle rechten

Nadere informatie

Technische documentatie Klankie 2010 voor systeembeheerders/installateurs

Technische documentatie Klankie 2010 voor systeembeheerders/installateurs Technische documentatie Klankie 2010 voor systeembeheerders/installateurs Van harte gefeliciteerd met uw aankoop van Klankie 2010, de netwerkversie. Deze documentatie is bedoeld voor degene die de netwerkinstallatie

Nadere informatie

Werking van de Office Connector, en het oplossen van fouten.

Werking van de Office Connector, en het oplossen van fouten. Werking van de Office Connector, en het oplossen van fouten. De Office Connector zorgt ervoor dat de Microsoft Officeomgeving gebruikt kan worden als ontwerp en genereeromgeving voor documenten waarbij

Nadere informatie

HANDLEIDING. Emjee ICT diensten Ticketsysteem

HANDLEIDING. Emjee ICT diensten Ticketsysteem HANDLEIDING Emjee ICT diensten Ticketsysteem Inhoud Snel aan de slag... 3 Wachtwoord opvragen... 3 Inloggen... 4 Ticket aanmaken... 4 Schermopbouw... 4 Inleiding... 5 Ticket maken of bellen?... 5 Inloggen...

Nadere informatie

Excel Controller. Handleiding Excel Controller Wizard

Excel Controller. Handleiding Excel Controller Wizard Excel Controller Handleiding Excel Controller Wizard 1 Inhoud Inleiding... 3 Eigen SQL... 3 Stap 1 Eigen SQL... 3 Stap 2 Testen SQL... 8 Stap 3 Wizard... 11 Stap 4 Parameters... 13 Voorbeeld Eigen Parameter...

Nadere informatie

INSTALLATIE NIS UPDATE Q3-2014-03 Q3-2014-03

INSTALLATIE NIS UPDATE Q3-2014-03 Q3-2014-03 INSTALLATIE NIS UPDATE Q3-2014-03 Q3-2014-03 2014 Van Brug Software B.V. Hoewel deze handleiding met zeer veel zorg is samengesteld, aanvaardt Van Brug Software B.V. geen aansprakelijkheid voor enige schade

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

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

Instellen back up Microsoft SQL database Bronboek Professional

Instellen back up Microsoft SQL database Bronboek Professional Instellen back up Microsoft SQL database Bronboek Professional In deze handleiding word een drietal punten besproken. Deze punten zijn allen noodzakelijk voor het inrichten van een goede back up voor de

Nadere informatie

Handleiding Coligo Connect installatie en gebruik

Handleiding Coligo Connect installatie en gebruik Handleiding Coligo Connect installatie en gebruik Version 1.0 Content 1. Inleiding... 3 1.1 Introductie... 3 2. Installeren en in gebruik nemen van Coligo Connect... 3 2.1 Downloaden... 3 2.2 Installeren...

Nadere informatie

ZorgInlogPortaal.nl. Geachte gebruiker, Handleiding Mijn Virtuele Schijf Versie 2.0

ZorgInlogPortaal.nl. Geachte gebruiker, Handleiding Mijn Virtuele Schijf Versie 2.0 Handleiding Mijn Virtuele Schijf Versie 2.0 ZorgInlogPortaal.nl Geachte gebruiker, Er zijn door ons een aantal aanpassingen gedaan in de achterliggende infrastructuur op de Mijn Virtuele schijf omgeving

Nadere informatie

4.4 Voeg ruimtes toe Hoe ga jij te werk? 1. Over LEVIY. 4.5 Aanwezigen Zijn er aanwezigen bij de DKS-controle? 2. Algemene definities. 3.

4.4 Voeg ruimtes toe Hoe ga jij te werk? 1. Over LEVIY. 4.5 Aanwezigen Zijn er aanwezigen bij de DKS-controle? 2. Algemene definities. 3. 1. Over LEVIY Wat doet LEVIY? 02 08 4.4 Voeg ruimtes toe Hoe ga jij te werk? 2. Algemene definities Behandelen van terugkerende definities. 09 4.5 Aanwezigen Zijn er aanwezigen bij de DKS-controle? 03

Nadere informatie

ArcGIS Mobile ADF. Smart Client Applicaties voor ArcGIS Server Eva Dienske, Wim Ligtendag

ArcGIS Mobile ADF. Smart Client Applicaties voor ArcGIS Server Eva Dienske, Wim Ligtendag ArcGIS Mobile ADF Smart Client Applicaties voor ArcGIS Server Eva Dienske, Wim Ligtendag Agenda Wat is de Mobile ADF? Architectuur Demo Wat is de mobile ADF? Ontwikkeltoolkit voor mobiele (Smart Client)

Nadere informatie

Handleiding Migratie. Bronboek Professional

Handleiding Migratie. Bronboek Professional Handleiding Migratie Bronboek Professional Laatste wijziging: 25/02/2015 Inhoudsopgave Controles en acties vooraf pag. 1 Installatie en configuratie Microsoft SQL met de Bronboek Helpdesk Tool pag. 3 Migratie

Nadere informatie

HANDLEIDING DMS Plugin Installatie, configuratie & werking

HANDLEIDING DMS Plugin Installatie, configuratie & werking HANDLEIDING DMS Plugin Installatie, configuratie & werking Dit document is de handleiding voor de installatie, configuratie en werking van de DMS Plugin. Versie 1-12/09/2005 Inhoudstafel 1 Installatie...

Nadere informatie

Documentatie. Remote Access Voorziening Etam (RAVE)

Documentatie. Remote Access Voorziening Etam (RAVE) Documentatie Remote Access Voorziening Etam (RAVE) Versie 1.5 Datum: 16 april 2009 1. INLEIDING 3 2. ÉÉNMALIGE INSTALLATIE CITRIX WEB CLIENT 4 3. VERBINDING MAKEN MET HOOFDKANTOOR 9 3.1 Starten RAVE 10

Nadere informatie

Klankie B.V - Klankie 2010 Netwerkversie - versie 1.0 - sts2220000000212. 13 september 2010

Klankie B.V - Klankie 2010 Netwerkversie - versie 1.0 - sts2220000000212. 13 september 2010 Klankie B.V - Klankie 2010 Netwerkversie - versie 1.0 - sts2220000000212 13 september 2010 Inhoudsopgave 1. Inleiding...3 2. Belangrijke informatie bij Klankie 2010...4 3. C3LO-werkstation inrichten als

Nadere informatie

Coligo conne ct. Gebruikershandleiding

Coligo conne ct. Gebruikershandleiding Coligo conne ct Gebruikershandleiding Content 1. Inleiding... 3 1.1 Introductie... 3 2. Installeren en in gebruik nemen van Coligo Connect... 3 2.1 Downloaden... 3 2.2 Installeren... 3 2.3 Inloggen...

Nadere informatie

Handleiding voor Zotero versie 2.0

Handleiding voor Zotero versie 2.0 Handleiding voor Zotero versie 2.0 Michiel Wolda De handleiding voor Zetero is geschreven voor de lezers van het boek Deskresearch: Informatie selecteren, beoordelen en verwerken: tweede editie (Van Veen

Nadere informatie

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

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

Nadere informatie

Installatiehandleiding Standard Parts Solid Edge 2019

Installatiehandleiding Standard Parts Solid Edge 2019 Solid Edge 2019 Deze handleiding kan ook gebruikt worden voor het installeren van de van eerdere Solid Edge versies. Gebruik dit document alleen voor de eerste schone installatie van de. Zijn de al een

Nadere informatie

INSTALLATIE EXCHANGE CONNECTOR

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

Nadere informatie

Configureren van een VPN L2TP/IPSEC verbinding

Configureren van een VPN L2TP/IPSEC verbinding Configureren van een VPN L2TP/IPSEC verbinding Inhoudsopgave 1. Voorbereiding.... 3 2. Domain Controller Installeren... 4 3. VPN Configuren... 7 4. Port forwarding.... 10 5. Externe Clients verbinding

Nadere informatie

Handleiding Remote Engineer Client

Handleiding Remote Engineer Client Handleiding Remote Engineer Client http://www.remoteengineer.eu/ Inhoudsopgave Blz. 1. Algemeen 3 2. RemoteEngineer Client installatie 4 3. Eerste keer opstarten 8 4. Layout aanpassen 9 5. Gebruik Autofilter

Nadere informatie

Denit Handleiding Service plans, Customers en Subscriptions aanmaken in Plesk 11

Denit Handleiding Service plans, Customers en Subscriptions aanmaken in Plesk 11 Denit Handleiding Service plans, Customers en Subscriptions aanmaken in Plesk 11 Deze handleiding beschrijft de stappen die u dient te nemen binnen uw resellerpakket om een nieuwe klant aan te maken met

Nadere informatie

DROPBOX = BESTANDEN DELEN VIA INTERNET

DROPBOX = BESTANDEN DELEN VIA INTERNET HANDLEIDING DROPBOX = BESTANDEN DELEN VIA INTERNET Tina Van Straeten Handleiding dropbox Tina Van Straeten Handleiding: onderhoud van je pc VVOB/PROGRESS Pagina 2 van 15 COLOFON Deze handleiding Dropbox

Nadere informatie

Cloud2 Online Backup - CrashplanPRO

Cloud2 Online Backup - CrashplanPRO Cloud2 Online Backup - CrashplanPRO Handleiding- CrashplanPRO - Online Backup Download de clients hier: Windows 32- bit: http://content.cloud2.nl/downloads/back01- cra.backupnoc.nl/crashplan_x86.exe Windows

Nadere informatie

Verkorte installatiehandleiding Microsoft SQL EXPRESS. 1. Besturingssysteem. Aanbeveling: Windows 7 of hoger en.net Framework 4.0

Verkorte installatiehandleiding Microsoft SQL EXPRESS. 1. Besturingssysteem. Aanbeveling: Windows 7 of hoger en.net Framework 4.0 Verkorte installatiehandleiding Microsoft SQL EXPRESS 1. Besturingssysteem Aanbeveling: Windows 7 of hoger en.net Framework 4.0 2. Installatie van de SQL EXPRESS database Stap1 is het downloaden van de

Nadere informatie

IAAS HANDLEIDING - SOPHOS FIREWALL

IAAS HANDLEIDING - SOPHOS FIREWALL IAAS HANDLEIDING - SOPHOS FIREWALL Contents IAAS HANDLEIDING - SOPHOS FIREWALL... 0 HANDLEIDING - SOPHOS FIREWALL... 2 STANDAARD FUNCTIONALITEITEN... 2 DNS... 2 DHCP... 2 BASIS INSTELLINGEN UITVOEREN...

Nadere informatie

Dropbox installatie. Inhoud

Dropbox installatie. Inhoud Dropbox installatie Inhoud Inleiding... 2 U heeft nog geen Dropbox account... 3 U heeft een Dropbox account!... 8 Waar kan ik Dropbox nu vinden?... 14 Is Dropbox een veilig medium... 15 Kan ik met één

Nadere informatie

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

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

Nadere informatie

Inhoudsopgave PC Software installeren... 2 BlackBerry back-up maken of terugplaatsen... 7 BlackBerry resetten... 9 BlackBerry Activeren...

Inhoudsopgave PC Software installeren... 2 BlackBerry back-up maken of terugplaatsen... 7 BlackBerry resetten... 9 BlackBerry Activeren... Wanneer bepaalde applicaties niet meer naar behoren functioneren of wanneer je BlackBerry erg traag is, dan kun je het toestel terugzetten naar de fabrieksinstellingen. De telefoon wordt daardoor teruggezet

Nadere informatie

Cloud Backup Handleiding

Cloud Backup Handleiding Cloud Backup Handleiding 1 Cloud Backup handleiding In deze handleiding zullen we stap voor stap uitleggen hoe u Cloud Backup kunt installeren, backups kunt maken en terugzetten. Met het Backup programma

Nadere informatie

5/5 Red Carpet. 5/5.1 Inleiding

5/5 Red Carpet. 5/5.1 Inleiding Management Services 5/5 Red Carpet 5/5.1 Inleiding Met de overname van Ximian is Novell ook eigenaar geworden van de Red Carpet-technologie. Hoewel het aannemelijk is dat het hier een tijdelijke oplossing

Nadere informatie

Remote Back-up Personal

Remote Back-up Personal handleiding Remote Back-up Personal Versie 4 1 INLEIDING... 3 1.1 SYSTEEMEISEN... 3 1.2 BELANGRIJKSTE FUNCTIES... 3 2 INSTALLATIE BACK-UP MANAGER... 4 2.1 VOLLEDIGE DATA BESCHIKBAARHEID IN 3 STAPPEN...

Nadere informatie

INSTALLATIE NIS UPDATE 2014-Q4 2014-Q4

INSTALLATIE NIS UPDATE 2014-Q4 2014-Q4 INSTALLATIE NIS UPDATE 2014-Q4 2014-Q4 2014 Van Brug Software B.V. Hoewel deze handleiding met zeer veel zorg is samengesteld, aanvaardt Van Brug Software B.V. geen aansprakelijkheid voor enige schade

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

INSTALLATIE NIS UPDATE Q2-2014-02 Q2-2014-02

INSTALLATIE NIS UPDATE Q2-2014-02 Q2-2014-02 INSTALLATIE NIS UPDATE Q2-2014-02 Q2-2014-02 2014 Van Brug Software B.V. Hoewel deze handleiding met zeer veel zorg is samengesteld, aanvaardt Van Brug Software B.V. geen aansprakelijkheid voor enige schade

Nadere informatie

Links controleren met Xenu s Link Sleuth

Links controleren met Xenu s Link Sleuth 1. Introductie 2. Xenu downloaden 3. Voorkeursinstellingen aanpassen 4. Links controleren 5. Het gebruiken van de Xenu rapporten 6. Het controleren van niet werkende links op de website 1. Introductie

Nadere informatie

Website bouwen met frontpage

Website bouwen met frontpage Website bouwen met frontpage Na het openen van frontpage komen we in volgend scherm terecht: hier gaan we in de rechter- Kolom kiezen voor Page Templates. Als vb ga ik de startpagina namaken van mijn site,

Nadere informatie

Katholieke Hogeschool Kempen. Plan Van Aanpak Uptime

Katholieke Hogeschool Kempen. Plan Van Aanpak Uptime Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica Plan Van Aanpak Uptime Stage : Analyse Proxy Servers Yorkim Parmentier 3TI4 Academiejaar

Nadere informatie

LES 11: VAN LOKAAL NAAR ONLINE. Lesoverzicht: Aan de slag Domeinnaam Web hosting FTP gegevens FTP programma s Database exporteren Samenvatting

LES 11: VAN LOKAAL NAAR ONLINE. Lesoverzicht: Aan de slag Domeinnaam Web hosting FTP gegevens FTP programma s Database exporteren Samenvatting LES 11: VAN LOKAAL NAAR ONLINE Lesoverzicht: Aan de slag Domeinnaam Web hosting FTP gegevens FTP programma s Database exporteren Samenvatting Tijd: 10 minuten Doel: Aan het einde van de les kun je de lokale

Nadere informatie

Inrichting Systeem: Locaties & Toegang

Inrichting Systeem: Locaties & Toegang Inrichting Systeem: Locaties & Toegang EasySecure International B.V. +31(0)88 0000 083 Info@EasySecure.nl Support.EasySecure.nl v1.0 01-12-2011 In deze handleidingen worden de volgende functies binnen

Nadere informatie

1 van 8 22-2-2012 20:43

1 van 8 22-2-2012 20:43 1 van 8 22-2-2012 20:43 Garmin Basecamp is een gratis software programma van Garmin. Het vergelijkbaar met mapsource, echter met de nieuwe toestellen (oregon, dakota en gpsmap 62) heeft het een aantal

Nadere informatie

Friesland College Leeuwarden

Friesland College Leeuwarden Voorwoord In dit project vertel ik wat Open Source is en wat ik daarover heb gevonden. Ik laat zien hoe ik een Virtuele machine geschikt maak voor Dual Boot. Dan laat ik zien hoe je 2 besturingssystemen

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

Veel gestelde vragen nieuwe webloginpagina

Veel gestelde vragen nieuwe webloginpagina Veel gestelde vragen nieuwe webloginpagina Op deze pagina treft u een aantal veel gestelde vragen aan over het opstarten van de nieuwe webloginpagina http://weblogin.tudelft.nl: 1. Ik krijg de melding

Nadere informatie

ZIEZO Remote Back-up Personal

ZIEZO Remote Back-up Personal handleiding ZIEZO Remote Back-up Personal Versie 4 1 INLEIDING... 3 1.1 SYSTEEMEISEN... 3 1.2 BELANGRIJKSTE FUNCTIES... 3 2 INSTALLATIE BACK-UP MANAGER... 4 2.1 VOLLEDIGE DATA BESCHIKBAARHEID IN 3 STAPPEN...

Nadere informatie

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

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

Nadere informatie

INSTALLATIEHANDLEIDING

INSTALLATIEHANDLEIDING INSTALLATIEHANDLEIDING Update van uw Mamut programma EEN GEDETAILLEERDE STAP-VOOR-STAP BESCHRIJVING VAN HOE U EEN UPDATE KUNT MAKEN VAN UW MAMUT BUSINESS SOFTWARE PROGRAMMA (VAN VERSIE 9.0 OF NIEUWER).

Nadere informatie

Beheer van databanken

Beheer van databanken Beheer van databanken Wim De Proost Jan Jochems Pieter Van den Akkerveken Departement Handelswetenschappen en Bedrijfskunde Bachelor Informatica 3 de jaar Academiejaar 2011-2012 2 Inhoud INLEIDING... 3

Nadere informatie

1. Etiketten en visitekaartjes

1. Etiketten en visitekaartjes 1. Etiketten en visitekaartjes In dit hoofdstuk gaan wij etiketten en kaartjes aanmaken. Deze zijn er van diverse merken, afmetingen,... Van enkele merken zijn de specifaties reeds voorhanden voor een

Nadere informatie

Easy Business Tools - Multi-user module

Easy Business Tools - Multi-user module Easy Business Tools Multi-user module Wat is de Multi-user module en wat kan ik er mee doen? De multi-user module is een gebruikerslicentie waardoor 5 computers in een netwerk kunnen samenwerken in Mijn

Nadere informatie

6. Het maken van een database

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

Nadere informatie

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

Gebruikers handleiding Telgids mutaties Versie 1.2

Gebruikers handleiding Telgids mutaties Versie 1.2 Gebruikers handleiding Telgids mutaties Versie 1.2 Bert Witte / Edwin Bom 2006 1 Inhoud Verbinding maken met de webinterface... 3 Hoe exporteer ik een overzicht naar Microsoft Excel... 5 Hoe krijg ik gedetailleerde

Nadere informatie

Optifile Server Installatie

Optifile Server Installatie Optifile Server Installatie Datum: Versie: de koppeling tussen Essibox en 2 mei 2012 1.0 Omschrijving: Dit document beschrijft de installatieprocedure voor Optifile software op een nieuwe server. Optifile

Nadere informatie

Kenmerken Nomadesk Software

Kenmerken Nomadesk Software Kenmerken Nomadesk Software DATABEVEILIGING Versleutelde lokale schijf Nomadesk creëert een veilige virtuele omgeving, een Vault, op uw lokale harde schijf. Alle mappen en bestanden opgeslagen op de Vault

Nadere informatie

Installatie Solid Edge ST5

Installatie Solid Edge ST5 Installatie Solid Edge ST5! NEEM DIT DOCUMENT DOOR VOORDAT U UW HUIDIGE SOLID EDGE VERSIE GAAT VERWIJDEREN! LET OP!! SOLID EDGE ST5 KUNT U NIET MEER OP WINDOWS XP INSTALLEREN LET OP!! DE ST5 LICENSE MANAGER

Nadere informatie

IBIS-TRAD Handleiding installatie IBIS-TRAD databases (MS-SQL)

IBIS-TRAD Handleiding installatie IBIS-TRAD databases (MS-SQL) Handleiding installatie IBIS-TRAD databases (MS-SQL) Inhoudsopgave 01 INSTALLATIE IBIS-TRAD DATABASES (MS-SQL) 1 01.01 Stap 1: Installeren IBIS-TRAD databases (MS-SQL) 2 01.02 Stap 2: Rechten verlenen

Nadere informatie

5. Documenten Wat kan ik met Documenten? 1. Over LEVIY. 5.1 Documenten terugvinden Uitleg over vinden van documenten.

5. Documenten Wat kan ik met Documenten? 1. Over LEVIY. 5.1 Documenten terugvinden Uitleg over vinden van documenten. Versie 1.0 23.03.2015 02 1. Over LEVIY Wat doet LEVIY? 08 5. Documenten Wat kan ik met Documenten? 2. Algemene definities Behandelen van terugkerende definities. 09 5.1 Documenten terugvinden Uitleg over

Nadere informatie

Versie: 1.0 Gemaakt door: Whisper380 Eigenaar: Whisper380-computerhulp.net Datum: 8-6-2011

Versie: 1.0 Gemaakt door: Whisper380 Eigenaar: Whisper380-computerhulp.net Datum: 8-6-2011 Versie: 1.0 Gemaakt door: Whisper380 Eigenaar: Whisper380-computerhulp.net Datum: 8-6-2011 Whisper380-computerhulp.net 1 Inhoudsopgave Libreoffice downloaden:...3 Libreoffice installeren...4 Java runtime

Nadere informatie

Installatie Datum: Versie: Informant Software

Installatie Datum: Versie: Informant Software Installatie 7.47 Datum: 19-12-2016 Versie: 7.47 Informant Software www.informant.nl support@informant.nl 1 Waar is deze handleiding voor bedoeld? De installatie van de update van Informant is op een dusdanige

Nadere informatie

Versturen van email vanuit een Delphi VCL toepassing

Versturen van email vanuit een Delphi VCL toepassing Versturen van email vanuit een Delphi VCL toepassing Voor Delphi bestaan uiteraard verschillende libraries om emails te versturen, maar in dit voorbeeld wordt een C# Dotnet library gebruikt en aangesproken

Nadere informatie

Intramed procedure. Intramed en Windows 7. 1. Upgraden naar Windows 7

Intramed procedure. Intramed en Windows 7. 1. Upgraden naar Windows 7 1. Upgraden naar Windows 7 Voorbereiding Als u straks gebruik wilt maken van een applicatie die nu op een andere computer draait, raden wij u aan om voordat u tot de installatie overgaat alle eventuele

Nadere informatie

Installeren van het programma Shop Pro

Installeren van het programma Shop Pro Installeren van het programma Shop Pro HET PROGRAMMA WERKT MOMENTEEL NOG NIET ONDER MS VISTA. GEBRUIK BINNEN EEN VIRTUELE MACHINE OP EEN VISTA-COMPUTER WORDT NOG UITGETEST. Deze handleiding met eventuele

Nadere informatie

EndNote Web handleiding

EndNote Web handleiding EndNote Web handleiding Bibliographic reference manager voor het verzamelen, beheren, delen van referenties en het maken van literatuurlijsten. 1. Een account aanmaken. Je kan je registreren via de databank

Nadere informatie

Hoe download en installeer ik de software 15.2? Lees voordat u begint dit document volledig door en sluit alle programma s af.

Hoe download en installeer ik de software 15.2? Lees voordat u begint dit document volledig door en sluit alle programma s af. Hoe download en installeer ik de software 15.2? Lees voordat u begint dit document volledig door en sluit alle programma s af. Let op! Als u nog offertes hebt opgeslagen in CBS 14.2, kunt u deze alleen

Nadere informatie

Standard Parts Installatie Solid Edge ST3

Standard Parts Installatie Solid Edge ST3 Hamersveldseweg 65-1b 3833 GL LEUSDEN 033-457 33 22 033-457 33 25 info@caap.nl www.caap.nl Bank (Rabo): 10.54.52.173 KvK Utrecht: 32075127 BTW: 8081.46.543.B.01 Standard Parts Installatie Solid Edge ST3

Nadere informatie

Configuratie. EasySecure International B.V. +31(0)88 0000 083 Info@EasySecure.nl Support.EasySecure.nl. v2.0.11 22-09-2014

Configuratie. EasySecure International B.V. +31(0)88 0000 083 Info@EasySecure.nl Support.EasySecure.nl. v2.0.11 22-09-2014 Configuratie EasySecure International B.V. +31(0)88 0000 083 Info@EasySecure.nl Support.EasySecure.nl v2.0.11 22-09-2014 In deze handleiding zal het configuratie menu binnen IdentySoft worden behandeld.

Nadere informatie

Configureren van een VPN L2TP/IPSEC verbinding. In combinatie met:

Configureren van een VPN L2TP/IPSEC verbinding. In combinatie met: Configureren van een VPN L2TP/IPSEC verbinding In combinatie met: Inhoudsopgave 1. Voorbereiding.... 3 2. Domaincontroller installeren en configuren.... 4 3. VPN Server Installeren en Configureren... 7

Nadere informatie

Degrande Frederik COMPUTER OVERNEMEN januari 2005

Degrande Frederik COMPUTER OVERNEMEN januari 2005 Een computer via internet overnemen Via internet kun je de bediening van een computer overnemen. Heel handig, als je iemand met een probleem wil helpen of iets wil demonstreren. Soms is het zeer handig

Nadere informatie

Roy Fijma Project 13 Friesland College Leeuwarden

Roy Fijma Project 13 Friesland College Leeuwarden Voorwoord In dit project laat ik zien hoe Ghost Image werkt en hoe je daar mee een image van je hele besturingssysteem laat maken. Ook laat ik zien hoe je een back up maakt in het backup centrum van Windows

Nadere informatie

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

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

Nadere informatie

DrICTVoip.dll v 2.1 Informatie en handleiding

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

Nadere informatie