
![]()

Naam:
Kenny Follon
Klas:
3 AON
Academiejaar: 2008-2009
Stageplaats: Xtendit Solutions
Provinciale Hogeschool Limburg (PHL)
Departement Handelswetenschappen en bedrijfskunde
Elfde-Liniestraat26
3500 Hasselt
t +32(0)11 23 87 77
e
h&b@phl.be
w www.phl.be
![]()
Voorwoord
Zoals elke laatstejaarsstudent Toegepaste Informatica van de
Provinciale Hogeschool Limburg heb ik ter afsluiting van mijn studie stage,gelopen
in een bedrijf. Gedurende 12 weken werkte ik bij Xtendit Solutions aan een
opdracht die aansloot bij de door mij gekozen afstudeerrichting
Applicatie-ontwikkeling.
Graag zou ik de mensen willen bedanken die het mij mogelijk
hebben gemaakt om mijn stage te voltooien. Vooral de personen van Xtendit
Solutions dank ik voor hun gastvriendelijkheid en omdat ze mij de kans gegeven
hebben om mijn stage bij hun te lopen.
Daarnaast zou ik iedereen willen bedanken voor het geduld
en vertrouwen dat zij mij gegeven hebben
tijdens mijn studies. Mijn moeder bedank ik speciaal voor haar jarenlange inzet
en steun tijdens de zwaardere periodes van mijn studies.
Tot slot wens ik mevrouw Janssen, mijn stagelector, te bedanken
voor het begeleiden van mijn stage.
Inhoudstafel
1. Inleiding P.5.
1.1 Overzicht P.5.
2. Stagebedrijf: Xtendit P.5.
2.1 Ontstaan P.5.
2.2 Fusie Xtendit en Interoffice P.6.
2.3 Outsourcing - (SPEX) P.7.
2.4 System Management P.7.
2.5 Hardware P.7.
2.6 Diensten P.8.
2.6.1 (Mobile) diensten & technologieën P.8.
2.6.2 WPAmobile P.8.
2.6.3 XtenditFleet P.9.
2.6.4 Webdevelopment - ProSite Website P.10.
2.6.5 iSeries (AS400) P.11.
2.6.6 Carsolution P.12.
2.6.7 Windev 14 P.13.
2.6.7.1 Geschiedenis van WinDev P.13.
2.6.7.2 Wlanguage P.13.
2.6.7.3 Rapid
application development P.13.
2.6.7.4 Rapid
graphical Interface P.14
2.6.7.5 Windev 14 programmeeromgeving P.15
2.6.7.6 Dynamische compilatie P.15.
2.6.7.7 Franstalige omgeving P.15.
2.6.7.8 Componenten P.16.
2.6.7.9 Databeheer P.16.
2.6.7.10 Source Code Manager (SCM)/(GDS) P.17.
2.6.7.11
Persoonlijk besluit -
Windev 14 P.18.
3. Opdrachten P.18.
3.1 Opdracht
1 P.18.
3.2 Opdracht 2 P.19.
4. Uitwerken van de
opdrachten P.20.
4.1. Opdracht 1 P.20.
4.1.1 Oorspronkelijke/huidige situatie P.20.
4.1.2 Een stukje code als voorbeeld p.25.
4.1.3 Schermafbeeldingen p.29.
4.1.3.1 Openingsscherm p.30.
4.1.3.2 Gegevens tonen p.31.
4.1.3.3 Gegevens tonen
gesorteerd p.31.
4.1.3.4 Datum keuze P.32.
4.1.3.4 Exporteer keuze
menu p.32.
4.1.3.5 Afdruk zonder
groepering p.33.
4.1.3.5 Afdruk met groepering p.34.
4.2 Opdracht 2 p.35.
4.2.1 Databeheer P.35.
4.2.2 Hoofdmenu p.36.
4.2.3 Persoon gegevens p.37.
4.2.4 Project gegevens p.38.
4.2.5 Data pad p.39.
4.2.6 Kost/opbrengst berekenen p.40.
4.2.6.1 Ingave voorziene K/O p.40.
4.2.6.2 Overzicht Effectieve K/O p.41.
4.2.6.3 Totaal overzicht p.42.
5.Persoonlijke ervaring p.42.
6. Conclusie p.43.
7. Geraadpleegde bronnen p.44.
1. Inleiding
Gedurende 12 weken heb ik stage gelopen in het bedrijf Xtendit.
De naam van dit bedrijf is ontleend aan het Engelstalige woord “to extend” wat verruimen betekent. Daarnaast bevat het
einde van de naam een duidelijke verwijzing naar de sector waarin zij werkzaam
zijn “IT”
Het
bedrijf Xtendit is onlangs gefusioneerd met het bedrijf interoffice. Toch
blijft Xtendit onafhankelijk tot op een bepaald niveau. Mijn stage was in
opdracht voor Xtendit. Met Interoffice heb ik tijdens mijn stage weinig contact
gehad. Als begeleider werd Dhr. Erwin Olearts tot mijn beschikking gesteld. De
taak van Erwin binnen het bedrijf is WinDev programmeur. Indien ik met vragen
of problemen zat, was Erwin de persoon waar ik raad aan vragen moest. De
leidende persoon van Xtendit is Dhr. Paul Smeets. De applicatie die ik tijdens
mij stage ontwikkeld heb, zal door Dhr. Paul Smeets in gebruik genomen worden
voor het berekenen van de lonen.
1.1
Overzicht
Om
een duidelijk overzicht te kunnen creëren, zal ik starten met een beeld te
scheppen over mijn stage bedrijf.
Behalve
over het onstaan van het bedrijf zal ik in dit stage rapport uitleg geven over
de diensten die Xtendit aanbiedt aan hun klanten. Vervolgens kan u uitgebreide
informatie terugvinden over de programmeer-software waarmee ik gewerkt heb.
Gedurende die 12 weken heb ik meerdere opdrachten ontvangen en afgewerkt. Men
mag in dit stage rapport een duidelijke omschrijving verwachten omtrent deze
opdrachten.
Ter
verduidelijking wordt het geheel voorzien van schermafbeeldingen. Ook deze
worden voorzien van de nodige commentaar.
2. Stagebedrijf: Xtendit
2.1 Ontstaan
Xtendit
is onstaan door het samen bundelen van enkele evaren Management en IT
consultants met diverse competentiegebieden. Hierdoor kan Xtendit concepten en
technologieën aanbieden op een multinationaal niveau tegen een acceptabele
prijs. De naam Xtendit is afgeleid van het engelstalige woord “extend” hetgeen
“verruimen” betekent. Xtend"it" omvat ook de component
"IT".

Missie:
Smart in ICT
S pecifieke
M eetbare
A anvaardbare
R esultaatgerichte
T ijdsgebonden
Xtendit
streeft ernaar om oplossingen te bieden voor bedrijven en de visie van het
management en hun bedrijfsprocessen verruimen. Hierbij wordt steeds sterk
gefocust op het gebruik van "state of the art" informatietechnologie.
M.a.w. maakt Xtendit steeds gebruik van
de laatst nieuwe technologieën. Xtendit streeft er naar toe op ieder
ogenblik rekening te houden met de eigenheid van het klantbedrijf en de daar
opgebouwde historiek. Het leveren van maatwerk tegen een betaalbare prijs is
het doel van Xtendit. Dit kan op regiebasis of volgens een forfaitaire prijs
gebeuren.
Door
met een vaste prijs te werken, kan Xtendit een oplossing implementeren binnen
het afgesproken budget en planning.
Xtendit
hecht groot belang aan:
-
Professionele
aanpak van informaticaprojecten
-
Automatiseren
van bedrijfsprocessen op een efficiënte manier
-
State-of-the-art
technologie
-
Up-to-date
kennis van zijn medewerkers
-
Kwalitatieve
oplossingen
-
Dienst
na verkoop
2.2 Fusie Xtendit en
Interoffice
Begin
2009 hebben de bedrijven Xtendit en interoffice de handen in elkaar geslagen en
samen 1 bedrijf gevormd. Xtendit is sinds zijn onstaan verantwoordelijk geweest
voor het software gedeelte van de informatica sector terwijl Interoffice zich
in hardware specialiseerde. In het verleden, voor de fusie plaats vond, kreeg
Xtendit dikwijls de vraag van klanten om hun te voorzien van hardware, en niet
enkel software. Interoffice had hetzelfde probleem, maar dan omgekeerd. Het was
dan ook logisch dat deze 2 bedrijven samen kwamen zodat de klanten op 1 adres
terecht kunnen voor al hun informatica behoeften. Men kan gerust stellen dat
deze twee bedrijven elkaar aanvullen.

2.3 Outsourcing -
SPecialisten en EXperts op uw maat (SPEX)
Vermits
niet alle bedrijven een eigen ICT afdeling ter beschikking hebben stelt Xtendit
voor deze bedrijven SPecialisten en Experten ter beschikking. Afhankelijk van
de eisen van het project zal Xtendit werknemers ter beschikking stellen met de
nodige kwalificaties om de klant op een professionele wijze tevreden te
stellen.
2.4 System Management
De
systeemgroep van Xtendit Solutions beschouwt het als haar missie om de klanten
in een snel veranderend informaticalandschap de nodige continuïteit te
garanderen door middel van kwaliteitsgerichte oplossingen, projectmatige aanpak
en sterk partnerschap met betrouwbare leveranciers
2.5 Hardware
Naast het leveren van IT-gerelateerde componenten en systemen voor zowel
business-to-business klanten als voor eindgebruikers, bouwt Xtendit(Interoffice)
complete configuraties op maat samen. Tevens wordt de nodige aandacht
besteed aan de bijhorende software componenten zoals operating-systemen,
security software zoals anti-virus, anti-spam, backup software, enz…
Xtendit levert toegevoegde waarde op vlak van professioneel advies en
ondersteuning, voorraad en logistiek, product- en marktinformatie.
Xtendit
beschikt over een eigen support-afdeling die zorgt voor een degelijke
afhandeling bij eventuele problemen met IT-apparatuur. Xtendit beschikt over
een groot magazijn met de nodige hardware op stock zodat de klanten meestal
onmiddellijk geholpen kunnen worden. Het aankopen van een grotere stock heeft
ook als voordeel dat Xtendit op deze manier de prijs laag kan houden. Het valt
toch voor dat klanten specifieke hardware nodig hebben die eigen zijn aan hun
bedrijf. Xtendit kan deze produkten uiteraard bijbestellen. Indien deze klant
duidelijk maakt op regelmatige basis hun specifieke hardware nodig te hebben,
zal Xtendit speciaal voor die klant een beperkte stock opbouwen om op deze
manier de klant in de toekomst nog sneller te kunnen helpen.
2.6 Diensten
De afdeling netwerken bij Xtendit bestaat uit gemotiveerde en technisch
onderlegde medewerkers, met een brede kennis op specifieke vakgebieden zoals
serverhardware, netwerktopologie, Microsoft serverplatformen, terminalservices,
firewalls en VPN-oplossingen. De meerwaarde wordt gevormd door de klant
voortdurend te betrekken in het doen en laten van de technici. Wij werken
steeds transparant, informeren de klant on-line over de stand van zijn project
en de wijzigingen in elke configuratie. Het beheer van de
'administratorpaswoorden' gebeurt steeds in samenspraak. Dit is volgens
ons de enige manier om een vertrouwensrelatie op te bouwen en te behouden.
2.6.1 (Mobile) diensten
& technologieën
Xtendit legt zich al meerdere jaren toe
op oplossingen voor het verbeteren van de service-efficiëntie in
dienstverlenende bedrijven door het implementeren van oplossingen zoals track
& trace toepassingen, geofencing, planning, digitale werkbonnen,
checklisten, tijdsregistratie, registratie van materialen, enz... en deze
mobiel ter beschikking te stellen aan field workers in o.a. de installatie-, de
onderhoud-, de energie-, de bouw-, de logistiek- en de transportsector. Xtendit
levert maaktwerk of een bestaande mobiele oplossing en deze kunnen naadloos geintegreerd
worden met het ERP- of CRM systeem van de klant.
2.6.2 WPAmobile
WPAmobile
is ontworpen met het oog op integratie met alle toonaangevende ERP of CRM
systemen. Het concept is zodanig ontwikkeld dat, in geval van integratie,
het back office systeem steeds "leading" blijft in het
hele proces. Hierdoor
vallen traditioneel tijdrovende en kostenintensieve taken weg.
De gegevens die gegenereerd worden door het backoffice systeem worden via
mobiel internet bezorgd aan de field worker. De gegevens die door de
medewerkers in de buitendienst worden ingevoerd , worden op hun beurt via
mobiel internet in real time in het ERP-systeem geregistreerd waardoor de
interne administratieve routines efficiënter worden. Dit levert aanzienlijke
besparingen en een stijgende cash flow op. WPAmobile kan geïntegreerd worden
met SAP, Navision, Axapta, Briljant, HandSoft Pro, e.v.a. ... Indien
gewenst laat WPAmobile ook toe om stand alone te werken in ASP mode.
In
2008 werd Xtendit erkend als “WPA mobile gold certified partner” voor de
Benelux.

2.6.3 XtenditFleet
XtenditFleet
is een intelligent programma dat het beheer en de verwerking van gegevens
afkomstig van lokalisatietoestellen mogelijk maakt. De mobiele eenheden worden
uitgerust met ingebouwde of draagbare apparaten (blackboxen) die
informatie verzamelen (km, tijd, snelheid, ID bestuurder, temperatuur,…) en een
lokalisatie van het voertuig (materieel) toelaten dankzij een
verbinding met het GPS netwerk. De totaliteit van gegevens wordt verstuurd, in
real time of gegroepeerd, naar een communicatieserver via het GPRS netwerk of
via SMS. Eenmaal beschikbaar op de server, worden de gegevens verwerkt en
op het computerscherm getoond. De gegenereerde database kan
gebruikt worden voor allerhande rapportages, exporten naar andere
toepassingen en integratie met bestaande beheersprogramma’s.
2.6.4 Webdevelopment -
ProSite Website
ProSite
Website - Het Content management systeem.
De websites die Xtendit aan hun klanten levert beschikken
allemaal over het content management systeem Prosite CMS. Met het CMS kan de
klant volledig zelfstandig de inhoud(pagina's, teksten, beeldmateriaal,
downloadbare bestanden, enz...) van hun website beheren. Ook heeft de klant
volledige controle over de navigatiestructuur. Functies en onderdelen die
buiten de website liggen zijn ook aanpasbaar door de klant.
Met
het CMS kan de klant eenvoudig zonder programmeerkennis hun website actueel
houden. Het CMS is een online programma waarmee de klant vanaf iedere locatie,
op elk moment, de structuur, de inhoud en de functies van hun website eenvoudig
kunnen aanpassen. Voor het gebruik van het CMS hoeft dus geen software te
worden geïnstalleerd: een computer met internettoegang is voldoende.
Het
CMS kan onbeperkt gebruikers toegang geven en rechten toekennen.
Het
is mogelijk om meerdere mensen toegang tot het CMS te geven (zonder extra
kosten: de klant kan onbeperkt gebruikers toegang tot het systeem geven met één
licentie van CMS). Gebruikersrechten kunnen op groeps- en gebruikersniveau
worden vastgelegd. Het is daardoor mogelijk verschillende medewerkers of zelfs
externe partijen (tekstschrijvers, reclame- en communicatiebureaus) decentraal
toegang te geven tot het systeem en tegelijkertijd centraal de regie en
eindcontrole in handen te houden.
Het
CMS programma is snel en flexibel aanpasbaar aan de eisen en wensen van de
klant. Dikwijls biedt de basisversie van het CMS met zijn standaard functies
een voldoende oplossing voor de klant. Wanneer dit echter niet het geval is kan
CMS snel en kostenefficiënt uitgebreid worden met diverse modules die voor
extra functionaliteiten zorgen. Enkele voorbeelden van modules die snel en
eenvoudig in het CMS geplaatst kunnen worden zijn: interactieve formulieren, Website
statistieken , Online betalingen verwerken, Makelaarsaanbod , Sitemap enzo... Indien de klant echter bijzondere
eisen heeft, kan het CMS op maat worden aangepast door de werknemers van
Xtendit.
2.6.5 iSeries (AS400)

Het
aankopen van AS400-systemen en de bijhorende software is een grote kost voor de
meeste klanten. Over het algemeen zijn de meeste klanten tevreden met de
werking van hun verouderde programma’s. Vervangen van deze systemen is in dit
geval uitgesloten voor de klant. Een nadeel van de oudere programma’s zijn de
typische “groene schermen”. Deze zorgen voor het verouderde gevoel dat deze
programma’s met hun meebrengen. Xtendit biedt hun klanten hiervoor een snelle
en kostefficiënte oplossing aan. Het is mogelijk om deze oude programma’s te
moderniseren en hun te voorzien van een "windowed look and feel".
Xtendit garandeerd dat de processen van de oorspronkelijke toepassing
onaangeraakt zullen blijven, behalve wanneer de klant om bepaalde aanpassingen
vraagt. Dankzij de expertise van de medewerkers van Xtendit is het relatief
eenvoudig om een bestaande AS400-applicatie extra functionaliteiten te geven
(client/server, internet, mobiel ...), zonder de toepassing zelf te wijzigen.
Van
het “verouderde” groene scherm
...
naar een modern gebruiksvriendelijke interface

2.6.6 Carsolution
Een
ander softwarepakket dat Xtendit aanbiedt is Carsolution. Dit software pakket
biedt een goede oplossing voor een efficiënt atelierbeheer in
carrosseriebedrijven. Carsolution beschikt over een realtime opvolging van de
volledige dossiercyclus. Op ieder moment kan worden opgevraagd in welke fase
een bepaalde herstelling zich bevindt. Het geïntegreerde tijdsregistratiesysteem
controleert de prestaties van de werknemers en er kan automatisch een
berekening voor het uurloon gemaakt worden.
Functionaliteiten
en voordelen:
-
eenvoudig
te gebruiken door mekaniekers
-
overzichtelijk
dossierbeheer
-
alle
opzoekmogelijkheden (op nummerplaat, klantnaam, automerk, maatschappij…)
-
tijdsbesparing
dankzij een eenmalige ingave van de gegevens
-
mogelijkheid
om per gebruiker machtigingen toe te kennen
-
import
en export-module naar om het even welke software
2.6.7 Windev 14
Voor
het ontwikkeling van software maakt Xtendit gebruik van Windev 14. Windev 14 is
een handig software pakket dat gekend staat om ontwikkelingstijden te beperken.
Dit zal de ontwikkelingskosten beperken. Windev zorgt voor een stabiele,
betrouwbare oplossing.
2.6.7.1 Geschiedenis van
WinDev
Windev
zag voor het eerst het daglicht in 1993 in een MS-DOS omgeving. PC-SOFT is de
ontwikkelaar van deze software. Windev is een IDE, wat staat voor integrated
development environment. IDE wordt ook als integrated design environment of
integrated debugging environment beschreven. Een IDE software pakket dient de
volgende eigenschappen te bezitten: Source code editor, compiler, build automation
tools en debugger. Deze eigenschappen lijken in deze tijd vrijwel standaard te
zijn, in 1993 was dit echter niet het geval.

2.6.7.2 Wlanguage
Windev
14 maakt gebruik van een 4de generatie programmeer-taal, Wlanguage. Het gebruik
van deze taal biedt verschillende
voordelen. Wlanguage kan door de ontwikkelaar gebruikt worden om vanaf nul een
programma op te bouwen.
2.6.7.3 Rapid application
development
Behalve
via programmatie is het ook mogelijk om op een snelle en eenvoudige manier
programma’s te genereren met de in Windev ingebouwde tool, RAD. Rapid
application development biedt verschillende vooraf gedefiniëerde oplossingen.
De eindgebruiker zal in principe geen verschil merken tussen een applicatie die
wel of niet via RAD is opgebouwd. Het nadeel van het gebruik van RAD is dat de
gegenereerde applicaties beperkt zijn in hun mogelijkheden. De ontwikkelaar kan
wel verschillende aanpassingen doen in de gegenereerde RAD applicaties, maar
indien de klant specifieke eisen heeft, voldoen de mogelijkheden van RAD niet
meer. Xtendit vraagt aan zijn ontwikkelaar om geen of allesinds zo weinig
mogelijk gebruik van RAD te maken. Xtendit probeert om zoveel mogelijk
ontwikkelde software (gedeeltelijk) te herbruiken bij toekomstige projecten.
Dit is bij RAD applicaties bijna niet mogelijk.
2.6.7.4 Rapid graphical
Interface
Een
met RAD vergelijkbare functie die men kan gebruiken voor aanpassingen in de
layout is RID (Rapid graphical Interface Design). Het principe van RID is
hetzelfde zoals bij RAD, vaste templates worden toegepast en op deze manier
wordt de layout telkens op dezelfde vooraf gekozen stijl opgebouwd. Dit is een
zeer handige tool die standaard in WinDev wordt meegeleverd. Het grote voordeel
van RID is dat de layout van alle schermen in een programma vrij snel en zonder
veel moeite aangepast kunnen worden. Het grote voordeel is echter dat men zeker
is dat het volledige programma bestaat uit éénzelfde layout. Xtendit maakt
meestal gebruik van deze RID functie.
Windev
14 programmeer omgeving.

2.6.7.5 Windev 14 programmeeromgeving.
Programma’s
die ontwikkelt zijn via Wlanguage zijn volledig platform onafhankelijk.
Applicaties ontwikkeldt in Windev werken zonder probleem op een Linux systeem
of dergelijke. Na het ontwikkelen van een applicatie kan er een executable
aangemaakt te worden. Afhankelijk van het besturingssysteem kiest men het
gewenste type executable. In plaats van een executable kan men ook kiezen voor
een installatiebestand te laten genereren. Het voordeel van zo’n
installatiebestand is dat de gebruiker die de installatie doet, zelf nog enkele
keuzes kan maken. Zoals de locatie van de databank kan tijdens de installatie
opgegeven worden. Met een executable bestand heeft de gebruiker geen keuze over
de locatie van de databank. In dit geval zal de gebruiker de databank op een
vaste locatie plaatsen die de ontwikkelaar vooraf heeft bepaald.

2.6.7.6 Dynamische compilatie
Windev
laat dynamische compilatie toe. Dit wil zeggen dat de ontwikkelaar tijdens het
compile/testen van de software aanpassingen in de code kan doen zonder eerst de
test te moeten stoppen.
WinDev
is voorzien van een groot aantal voorbeeld projecten. Deze projecten zijn
redelijk uitgebreid en tonen samen een groot deel van de mogelijkheden van
WinDev. Ontwikkelaars kunnen deze voorbeelden raadplegen om hier info uit te
halen om deze dan toe te passen op hun eigen project. Een ander goede hulp waar
de ontwikkelaar zich op kan baseren is de uitgebreide hulp functie waar Windev van
voorzien is. Vermits Xtendit de franstalige versie van Windev gebruikt is deze
helpfunctie enkel in het frans beschikbaar.
2.6.7.7 Franstalige omgeving
WinDev
is ontwikkeld door een franstalig bedrijf. Hierdoor is frans de standaard taal
voor WinDev. Engelse versies zijn ook beschikbaar. Deze zijn echter een stuk
hoger in prijs en de engelse versies lopen dikwijls een stuk achter op de
franse versie. Hierdoor werkt Xtendit enkel met de franse versies. Dit wil
zeggen dat de volledige interface franstalig is, alsook de helpfunctie. De code
mag echter ingegeven worden in het frans of engels. Het is zelfs zonder enige
probleem mogelijk om de 2 talen door elkaar
te gebruiken. Men mag dus b.v. een If-functie starten met “SI” en
eindigen met “END” i.p.v. “FIN”. WinDev heeft de mogelijk om de code te
vertalen naar engels of frans. Uiteraard worden enkel de door Wlanguage
herkende woorden vertaald en geen namen van variabelen. De namen van variabelen
blijven ongewijzigd. Windev specialiseerd zich in applicaties die snel
ontwikkeld moeten worden en waar databeheer centraal staat. Het is voor WinDev
ook mogelijk om Java en dotnet applicaties samen met een Windev applicatie te
voegen.
Windev beschikt over een analyse bestand. Hierin staan
beschrijvingen van de databestanden die in een project gebruikt zullen worden.
Het is niet verplicht om een project aan een analyse te linken, het word echter
sterk aangeraden. Een analyse kan gebruikt worden door meerdere projecten.
2.6.7.8 Componenten
Windev
heeft verschillende componenten beschikbaar voor de ontwikkelaar. Een voorbeeld
van deze componenten is het email-component. Dit maakt het voor de ontwikkelaar
zeer eenvoudig een email functie in een programma te plaatsen. Dit kan op zeer
eenvoudige wijze via de drag and drop methode in ieder bestaand project
geplaatst worden. Windev 14 beschikt over een groot aantal componenten die het
werk van de ontwikkelaar sterk zullen doen dalen. Enkele andere voorbeelden van
dit soort componenten zijn: FTP-bestanden doorsturen, rapporten tonen,
streaming video’s beheren, webservices enzo...
2.6.7.9 Databeheer
WinDev
ondersteunt de meeste soorten databanken zoals Ms.Access, SQL,XML,AS400 enzo...
Windev beschikt ook over een eigen datatype voor het bijhouden van gegevens,
namelijk HyperFileSQL. Het is mogelijk om de WinDev HyperFileSQL in
Client/Server mode te laten werken. In dit geval zal de databank meestal op een
server staan. De ontwikkelaars hebben in dit geval centraal toegang tot de
databank. Dit is zeer handig wanneer men met meerdere ontwikkelaars werkt aan 1
project. Een ander voordeel van Client/Server mode is dat alle processen
(queries, lezen, schrijven enzo...) uitgevoerd worden door de server. Dit kan echter ook nadelig zijn in sommige
gevallen. Wanneer meerdere ontwikkelaars samen aan 1 project werken, valt het
regelmatig voor dat ze op hetzelfde ogenblik de server zullen belasten, met
oplopende vertragingen als gevolg. Dit probleem viel af en toe voor gedurende
mij stage periode.
2.6.7.10
Source Code Manager (SCM)/ Gestionnaire de sources(GDS)

SCM
zorgt voor een eenvoudiger manier van samenwerken tussen meerdere teamleden. De
Source Code Manager maakt het mogelijk dat verschillende ontwikkelaars van op
een afstand toch samen aan 1 project kunnen werken. Bestanden kunnen heel eenvoudig
onderling uitgewisseld worden.
Het
is mogelijk om via SCM samen te werken via een locale netwerkverbinding,
internet of in offline mode of een combinatie van deze 3 mogelijkheden.
In
offline mode zal SCM de offline bestanden uploaden zodra de ontwikkelaar de
eerst volgende keer verbinding met het hoofdsysteem maakt.
SCM
houdt een databank bij met hierin de gegevens over het verleden van het
project.
Xtendit
maakt goed gebruik van deze functie die standaard wordt geleverd met dit
softwarepakket. Alle projecten uit het verleden zijn voor alle ontwikkelaars
beschikbaar op ieder moment via de Source Code Manager.
2.6.7.11 Persoonlijk besluit
i.v.m. Windev 14
Op
het begin van mijn stage was het niet zo eenvoudig om aan WinDev 14 te wennen.
De programmeer omgeving was in het frans. Dit was op het begin een zeer zwaar
struikelpunt. Na mijn 3 maanden stage heb ik een volledig andere kijk gekregen
op WinDev. Het werken in WinDev lukt mij ondertussen redelijk goed. Er valt
uiteraard nog steeds veel bij te leren.
3. Opdrachten
3.1 Opdracht 1: Aanpassen Xtendit
Timecard Addition project
De
eerste opdracht die mij gegeven werd was het uitbreiden van een
registratie-tool die reeds bij Xtendit gebruikt werd. De werknemers van Xtendit
moeten iedere week hun werkuren doorgeven samen met het aantal uur dat ze aan
een bepaald project gewerkt hebben voor een bepaalde klant. Het is de bedoeling
dat deze gegevens via een programma worden verwerkt. Het maandloon van de werknemers
is hiervan afhankelijk. Het oorsprongkelijke programma was echter vrij beperkt
in mogelijkheden. Het tonen van gegevens en deze gegevens afdrukken was de
enige mogelijkheid die de gebruiker had. Verschillende gebreken zijn aan het licht
gekomen tijdens het gebruik. Mijn opdracht was het oplossen van deze gebreken.
De
opdracht die men mij gegeven had bestond verschillende eisen:
-
Het
was belangrijk dat het programma werd voorzien van een duidelijkere,
overzichtelijkere manier van werken. Het selecteren van een datum was in het
oorspronkelijk programma vrij omslachtig. Hier moest een eenvoudigere oplossing
voor worden voorzien.
-
Een
ander punt waar veel belang aan werd gehecht was dat de mogelijkheid tot
groeperen werd voorzien in het programma. De opdracht bestond eruit om te
kunnen groeperen op 4 verschillende waarden: Datum, Klant,Project en Persoon.
Elke groepering moest voorzien worden van een subtotaal.
-
De
mogelijk om bepaalde records te selecteren moest ook worden voorzien. In de
tabel diende in de eerste kolom een selectiebox per record worden getoond.
Boven deze kolom moest een knop worden voorzien om alle records ineens te
kunnen selecteren of juist déselecteren.
-
De
gegevens moesten in een grafiek kunnen worden getoond.
-
In
het verleden was het niet mogelijk om gegevens aan te passen in de tabel. Men
kon enkel de gegevens inlezen en afdrukken. Het wijzigen van gegevens moest
worden voorzien. Nieuwe records toevoegen behoorde niet tot de opdracht.
-
Een
handleiding met daarin een duidelijke uitleg over de werking van het programma
moest worden voorzien. De uitleg in deze handleiding moest op zulke manier
worden opgesteld dat zelfs een leek zonder veel moeite de werking van het
programma begrijpt.
3.2 Opdracht 2: Nieuwe
schermen toevoegen aan Xtendit Timecard Addition project
Deze
opdracht is een uitbreiding op de vorige opdracht. M.a.w. een uitbreiding op
het Xtendit Timecard Addition project. De huidige mogelijkheden van het project
zijn beperkt tot het opzoeken, wijzigen of afdrukken van gegevens. De
uitbreiding moet voor enkele nieuwe mogelijkheden zorgen. Er moet een 2de
databank worden aangemaakt. Bepaalde gegevens moeten van de oorspronkelijke
databank gekopieerd worden naar de nieuwe databank. Het is de bedoeling van deze
uitbreiding dat er berekeningen gemaakt kunnen worden via uit de database
opgehaalde waarden, maar ook via waarden die de gebruiker zelf moet ingeven.
Aan de hand van deze gegevens zullen berekeningen worden gemaakt. De ingevoerde
gegevens worden samen met de “oude” gegevens bijgehouden in de nieuwe databank.
Indien records worden toegevoegd(b.v. nieuwe klant), moet deze data ook in de
oorspronkelijke database aangepast worden.
Om
het geheel overzichtelijk te houden wordt er gevraagd om een hoofdmenu te voorzien.
Via dit hoofdmenu kunnen aparte schermen worden opgeroepen( multiple
document interface (MDI).
De berekeningen die moeten worden gedaan worden onderverdeeld in voorziene
kosten/opbrengsten en effectieve kosten/opbrengsten en de restante waarden. Voor
de voorziene en effectieve kosten/opbrengsten moeten totale kosten en totale
opbrengten en coëfficiënten berekend worden.
4.
Uitwerken van de opdrachten
4.1.
Opdracht 1 : Aanpassen Xtendit Timecard Addition
project
4.1.1 Oorspronkelijke- en huidige
situatie
Oorspronkelijk: Het is enkel mogelijk om
zelfstandig een datum in te geven of via een simpel keuzemenu de begin- en
einddatums te selecteren. De inhoud van de tabel is afhankelijk van de gekozen
begin- en einddatum. Enkel de gegevens waarvan de datum tussen de opgelegde
begin- en einddatum ligt, worden getoond.
Huidige project: Via de “opties” knop kan
men uit 10 vooraf gedefineerde start- en einddatums kiezen. B.v. datum van
vandaag, 1week terug,1maand terug, 1 jaar terug, begin van het jaar enzo... Ook
kan men door middel van een duidelijk menu zelf een datum aanklikken. De vooraf
gedefineerde start- en einddatums zijn niet aanpasbaar door de eindgebruiker.
Oorspronkelijk: De gegevens in de tabel
werden automatisch door WinDev opgevuld via RAD. Rapid Application
Developement.
Huidige project: De gegevens in de tabel
worden via een SQL-query opgevuld. Deze aanpassing was nodig om het groeperen
mogelijk te maken. Rapid Application Developement heeft als voordeel om op een
korte periode toch een vrij uitgebreid programma tot stand te kunnen brengen.
Een nadeel van RAD is dat het beperkter is in zijn functionaliteiten. RAD laat
zich achteraf nogal moeilijk aanpassen, wat op zich al een grote beperking is.
Oorspronkelijk: Alle gegevens werden getoond in de tabel
zonder de mogelijkheid voor het opzoeken van gegevens. Indien er veel records
worden getoond is het kunnen opzoeken van een bepaalde waarde, geen overbodige
luxe.
Huidige project: Per kolom kan men zoeken op
een bepaalde waarde. Naast de titel van elke kolom staat een vergrootglas, hier
kan met de te zoeken waarde ingeven. Het
zoeken van een waarde in een bepaalde kolom gaat vrij eenvoudig op deze manier.
Wanneer men in de zoekfunctie de eerste letter ingeeft zullen dadelijk alle resultaten
die met deze letter beginnen, getoond worden. De manier waarop deze zoekfunctie
tewerk gaat, is het positioneren in de tabel, zodra de gezochte waarde in de
tabel gevonden is. De zoekfunctie zal geen gegevens verbergen of filteren. Het
gebruik van de zoekfunctie zal geen invloed hebben op het afdrukken of
exporteren van gegevens. Het aanpassen en verwijderen van gegevens is ook
zonder enige problemen mogelijk als men gebruikt maakt van de zoekfunctie.
Oorspronkelijk: In bepaalde
combo-boxen(b.v. Projecten)kwamen dubbele gegevens voor. Een klant kan b.v.
meedere projecten hebben waardoor hij meerdermaals voorkomt in de
projecten-tabel.
Huidige project: De query’s die verantwoordelijk zijn voor het
opvullen van deze combo-boxen zijn aangepast zodat er geen dubbele waarden meer
voorkomen. Ook zorgt deze query dat de gegevens alfabetisch worden getoond in
de combo-boxen.
Oorspronkelijk: Het was enkel mogelijk om
gegevens te filteren op een bepaalde Persoon, Klant of Project. Groeperen was
niet mogelijk. Het is de bedoeling dat men kan groeperen op 1 of op meerdere
waarden. Op deze manier kan men zelf beslissen welke totalen er getoond moeten
worden. Men moet b.v. kunnen groeperen
op Persoon en op Klant. Er zou dan getoond moeten worden hoeveel werk-uren een
bepaalde persoon(werknemer) aan bepaalde klant(en) heeft besteed.
Huidige project: Men kan in het project 3 combo-boxen
terugvinden waar men uit 4 waarden kan kiezen, afhankelijk op welke waarden men
wilt groeperen. (Klanten, Personen, Projecten en Dagen). Het opvullen van de
combo-boxen gebeurt volledig dynamisch. Dit is nodig omdat men vooraf niet weet
welke waarden in welke combo-boxen zullen komen te staan. De volgorde waarin
men de waarden kiest zijn ook van belang. Sorteren op Klanten-Project-Datum
geeft niet dezelfde uitkomst als sorteren op Project-Klant-Datum. Het kunnen
selecteren van 2 dezelfde waarden moet absoluut uitgesloten worden. Men mag
b.v. nooit 2x op Klanten kunnen groeperen. Wanneer in combo-box 1 de waarde
“klanten” wordt gekozen, mag men in combo-box 2(en 3) de keuze “klanten” niet
te zien krijgen.
Ook mag er geen waarde ingeven kunnen worden in
combo-box 2 (of 3) terwijl combo-box 1 leeg blijft. Om hier zeker van te zijn worden telkens de
waarden in combo-box2 en combo-box3 verwijderd wanneer men een aanpassing doet
in combo-box1. Hetzelfde telt voor combo-box3, deze wordt gewist wanneer er een
aanpassing in combo-box2 gebeurt. Dit geeft een voordeel bij het programmeren.
Men moet niet iedere keer gaan testen of er wel of niet een waarde in alle 3 combo-boxen staan. Men mag ervan uitgaan
dat als de 1ste combo-box leeg is, de andere 2 ook leeg zullen zijn.
Uiteraard telt ook hetzelfde voor combo-box3, deze inhoud wordt ook verwijderd
zodra er een aanpassing gebeurt in combo-box2.
Het
uitwerken van de SQL-string om het groeperen mogelijk te maken was een zwaar
knelpunt waar ik zeer veel tijd aan besteed heb. Het opbouwen van de SQL-string
was ook zonder twijfel tot nu toe de grootste uitdaging gedurende mijn stage.
De reden hiervoor zijn de verschillende mogelijkheden tot groeperen. Om dit
mogelijk te maken moet de SQL-string volledig dynamisch opgebouwd worden om
zich op ieder moment aan iedere situatie te kunnen aanpassen. Er zijn 4
situaties die zich kunnen voordoen. Men kan kiezen om niet te groepen, of om op
1 of om op 2 of op om 3 waarden te groeperen. Deze 4 situaties moeten ieder
apart opgevangen worden. Er moet eerst getest worden welk van de 4 situaties
van toepassing is, hierna worden de juiste procedures opgeroepen en op deze
manier wordt de SQL-string volledig opgebouwd afhankelijk van de gekozen
waarden. Wanneer men geen groepeer optie kiest wordt de SQL-query op de
“gewone” wijze opgebouwd. Wanneer men wel groepeerd moet men op een andere
wijze te werk gaan voor het opbouwen van de SQL-string. Bij het groepen zijn er
verschillende velden in de tabel die niet meer worden gebruikt zolang de
gegevens gegroepeerd zijn. Deze velden zijn leeg,maar er moet toch voor een
dummy-waarde gezorgd worden om deze velden toch op te vangen. Het niet opvangen
van waardes via de dummy-methode zal zorgen voor foutsituaties. Deze
dummy-waarden worden in de SQL-query opgevangen in plaats van de
oorspronkelijke waarde. Bij het groeperen worden de werkuren(per groepering)
opgeteld. Ook het totaal aantal werkuren wordt op het einde van de tabel
weergegeven.
Oorspronkelijk: Het was niet mogelijk om
een keuze te maken tussen bepaalde records. Er werd daarom gevraagd om een
selecteer optie te voorzien zodat er gekozen kan worden met welke records er
verder gewerkt dient te worden.
Huidige project: In de eerste kolom van de tabel is de
mogelijkheid voorzien om via een selectiebox bepaalde records
selecteren/déselecteren. Default zijn alle records automatisch geslecteerd.
Boven de selectiebox kan men een knop terugvinden waar men afhankelijk van de
huidige selectie-situatie, kan kiezen voor selecteer alles, of selecteer niets.
Deze knop wordt pas zichtbaar wanneer men gegevens gaat ophalen. Wanneer b.v.
enkele records niet geselecteerd zijn, zal de knop boven de selectiebox zorgen
dat men alles ineens kan selecteren. Wanneer alle records geselecteerd zijn,
zal de knop boven de selectiebox zorgen dat men alles ineens kan déselecteren.
De selecteer optie is van belang bij het afdrukken of bij het exporteren van
gegevens. Men heeft de keuze om via deze selecteer optie bepaalde records te
negeren. Het selecteren van gegevens heeft geen invloed over het aanpassen of
wissen van gegevens.
Oorspronkelijk: Afdrukken: enkel een
volledige afdruk mogelijk. Het was niet mogelijk om slechts een gedeelte van de
gegevens af te drukken. Op de laatste afdruk pagina werd enkel het totaal van
het aantal gewerkte uren opgeteld en weergeven.
Huidige project: Het is mogelijk om deel van de gegevens af te
drukken via de selecteer optie. Alle aanpassingen die men in de tabel doet,
zoals groeperen of bepaalde records selecteren, zullen automatisch meegenomen
worden in de afdruk.
Ook
is het type afdruk is afhankelijk of er gegroepeerd wordt of niet. Wanneer men
niet groepeert zal er een ander type document afgedrukt worden dan wanneer men
wel groepeert. Dit is nodig omdat de verdeling van de gegevens bij het
groeperen veranderen. Door het groeperen blijven bepaalde velden onopgevuld. De
titels van kolomen die leeg blijven worden niet weergeven.Op de laatste
afdrukpagina wordt er automatisch een verslag aangemaakt. Het aantal afgedrukte
records wordt vermeld en ook welke sorteer en groepeer opties men heeft
gekozen. Ook de gekozen begin- en einddatum waarop men heeft gesorteerd, staan
op de laatste afdruk pagina vermeld. Een goed verzorgde/duidelijke layout voor
de afdruk voor beide types was van groot belang. Een hoofding met het logo van
Xtendit moest worden voorzien. Op het einde van iedere afdrukpagina wordt een
paginanummer,het totaal aantal pagina’s, de datum van vandaag en de tekst
“prestatie overzicht” weergegeven.
Oorspronkelijk: Gegevens exporteren was
niet mogelijk. De enige mogelijkheid om gegevens naar de buitenwereld te
brengen, was het afdrukken van alle gegevens.
Huidige project: Via de knop exporteren kan men kiezen om de
huidige gegevens die in de tabel staan te exporteren naar: het klembord, Word,
Excel of naar een XML bestand. Zoals bij afdrukken worden alle aanpassingen die
men in de tabel doet, meegenomen bij het exporteren. Een record dat niet
geselecteerd is zal dus ook niet worden meegenomen in de geëxporteerde
gegevens. Indien men eerst groepeert en daarna exporteert, zullen enkel de
gegroepeerde gegevens afgedrukt worden. Uiteraard zijn onderlinge combinaties
mogelijk, zoals b.v. sorteren, groeperen en enkele records selecteren.
Oorspronkelijk: De gegevens werden uit de
databank opgehaald maar het aanpassen ervan was niet mogelijk. Dit zorgde voor
de nodige problemen wanneer er een fout in de gegevens ontdekt werd.
Huidige project: De gegevens worden uit de database opgehaald.
Hierna kan de gebruiker kiezen om gegevens te wijzigen. De wijzigingen worden
automatisch doorgevoerd naar de databank. Wanneer men op 1 of meer waarden
groepeerd, wordt de knop aanpassen gedisabled. Dit om er voor te zorgen dat men
geen gegevens kan aanpassen wanneer de tabel gegroepeerd is. Dit zou voor fout
situaties zorgen vermits bepaalde gegevens totalen zijn van een groep
afzonderlijke gegevens. Het aanpassen van de gegevens gebeurt in de tabel.
Nadat de aanpassingen gedaan zijn kan men op de knop “aanpassen” klikken om de
aangepaste gegevens door te voeren naar de databank. Het opslaan van de
gegevens gebeurt per record. Wanneer men op de knop “aanpassen” klikt, worden
enkel de gegevens op het huidig geselecteerde record opgeslaan
Oorspronkelijk: Het maken van een grafiek
was in het verleden niet mogelijk.
Huidige project: Men kan doormiddel van een rechtermuisklik
kiezen voor een grafiek te maken van de huidige gegevens in de tabel. Zoals bij
het exporteren en afdrukken worden alle aanpassingen aan de tabel opgenomen in
de grafiek. Het type grafiek kan door de eindgebruiker op ieder moment
aangepast worden door middel van het optiemenu dat via de rechtermuisknop beschikbaar
is. Het maken van een grafiek van een grotere hoeveelheid gegevens zou
onduidelijk worden. Het maken van een grafiek van (beperkte)gegroepeerde
gegevens zal in de meeste gevallen een stuk duidelijker zijn. Het wordt dan ook
aangeraden om niet teveel gegevens te selecteren bij het maken van een grafiek
om de leesbaarheid hoog te houden.
Oorspronkelijk: De gegevens werden uit de
databank opgehaald maar het verwijderen ervan was niet mogelijk. Dit zorgde
voor de nodige problemen wanneer er een fout in de gegevens ontdekt werd.
Huidige project: Gegevens kunnen worden verwijderd. Men kan 1
record selecteren en via de knop “verwijderen”, de gekozen gegevens wissen.
Voordat het record effectief verwijderd wordt, krijgt men eerst een pop-up box
met de vraag of men zeker is het record te willen verwijderen.
Zoals
bij het aanpassen van gegevens is het niet mogelijk om gegevens te verwijderen
wanneer er op 1 of meerdere waarden gegroepeerd wordt.Gegroepeerde gegevens
bestaan uit totalen van bepaalde gegevens, het verwijderen van zo een
verzameling gegevens zou voor foutsituaties zorgen.
Het
verwijderen/selecteren van meer dan 1 record op hetzelfde ogenblik is niet
mogelijk.
Andere knelpunten:
Datum
en tijd: Wanneer men groepeerd op datum en b.v. op project deed er zich een
foutje voor bij het groeperen. Sommige datums kwamen meerdere keren voor bij
hetzelfde project. Dit is uiteraard niet de bedoeling. Blijkbaar word ook het
tijdstip opgenomen in de database samen met de datum in éénzelfde veld. Bij het
uitvoeren van de SQL-string worden de gegevens gegroepeerd op datum en op tijd.
In de tabel word de tijd echter niet getoond, hierdoor was het niet simpel om
de oorzaak van het probleem op te sporen.
4.1.2 Een stukje code als
voorbeeld
Procedure
fillQuery: Deze procedure wordt opgeroepen wanneer men op de knop “zoeken”
klikt. Het is deze procedure die het groeperen mogelijk maakt door het
dynamisch opbouwen van de SQL-string. Deze procedure is verantwoordelijk voor
het opvullen van de tabel. Deze procedure is voorzien van de nodige commentaar
zodat men stap voor stap kan volgen wat er gebeurt in deze code.
PROCEDURE fillQuery()
//Initialiseren
van de tabel
TableDeleteAll(TBL_Reports)
//Declaraties
query,selection,sOrder,totalQ are strings
sBeginDate, sEindDate, sKlanten,sProjecten,sPersonen are strings
sBeginDate = SC_SélectionPériode.SAI_StartDate
sEindDate = SC_SélectionPériode.SAI_EndDate
//Testen of er
een waarde in de sorteer combo-boxen aanwezig is.
//Indien er een
waarde gevonden is, wordt deze waarde in een variabele geplaatst
IF ListSelect(COMBO_Customers) > 0 THEN sKlanten = COMBO_Customers[ListSelect(COMBO_Customers)]
IF ListSelect(COMBO_Projects) > 0 THEN sProjecten = COMBO_Projects
IF ListSelect(COMBO_Persons) > 0 THEN sPersonen = COMBO_Persons[ListSelect(COMBO_Persons)]
//standaard
dummy opvulling
sFieldMetFilter is string = [
'' AS strSubject,
'' AS strBody,
'' AS
strLocation,
'' AS strName_tb,
'' AS strCategory_tb,
]
//dummy
opvulling, afhaneklijk van de gekozen groepering(en)
//Deze variablen
kunnen onderling naar keuze worden opgeroepen op iedere gewenst moment om op
deze manier een dynamische query te vormen
sFieldProject is string = "tblMeta1.strName
AS strName, "
sFieldProject2 is string =" '' AS
strName, "
sFieldDatum is string = "tblReports.dtmDate
AS dtmDate, ""
sFieldDatum2 is string ="00000000 AS
dtmDate, "
sFieldKlant is string = "tblMeta1.strCategory AS strCategory, "
sFieldKlant2 is string = " '' AS
strCategory, "
sFieldPersoon is string = "tblPersons.strPersonName
AS strPersonName, "
sFieldPersoon2 is string = " '' AS
strPersonName, "
sFieldHour is string = "SUM(tblReports.numHours)
AS numHours "
//standaard
opvullen zonder groepering
sFieldZonderFilter is string = [
tblReports.numHours
AS numHours,
tblReports.strSubject
AS strSubject,
tblReports.dtmDate
AS dtmDate,
tblReports.strBody
AS strBody,
tblReports.strLocation
AS strLocation,
tblPersons.strPersonName
AS strPersonName,
tblMeta1.strName
AS strName,
tblMeta1.strCategory
AS strCategory,
tblMeta2.strName
AS strName_tb,
tblMeta2.strCategory
AS strCategory_tb
]
query = " SELECT "
//In deze
variabelen komen de waarden van de combo-boxen te staan om te groeperen.
sCombo1,sCombo2,sCombo3 are strings
//Zoeken of er
een waarde in de 1ste combo-box zit, om te groeperen.
//Als er een
waarde wordt gevonden, dan worden de juiste variable aan de query toegevoegd.
IF ListSelect(COMBO_Filter1) > 0 _AND_ NoSpace(COMBO_Filter1[ListSelect(COMBO_Filter1)]) <> "" THEN
sCombo1 = COMBO_Filter1[ListSelect(COMBO_Filter1)]
query += " " + sFieldMetFilter + " "
//sState = 0
IF sCombo1 = "Klanten" THEN
query += sFieldKlant
ELSE
IF sCombo1 = "Projecten" THEN
query += sFieldProject
ELSE
IF sCombo1 = "Dagen" THEN
query += sFieldDatum
ELSE
IF sCombo1 = "Personen" THEN
query += sFieldPersoon
END
END
END
END
//Zoeken of er
een waarde in de 2de combo-box zit, om te groeperen.
//Als er een
waarde wordt gevonden, dan worden de juiste variable aan de query toegevoegd.
//Indien er geen
waarde gevonden wordt in de eerste combo-box, wordt de code voor combo-box 2(en
3) niet uitgevoerd.
IF ListSelect(COMBO_Filter2) > 0 _AND_ NoSpace(COMBO_Filter2[ListSelect(COMBO_Filter2)]) <> "" THEN
sCombo2 = COMBO_Filter2[ListSelect(COMBO_Filter2)]
IF
sCombo2 = "Klanten" THEN
query += sFieldKlant
ELSE
IF sCombo2 = "Projecten" THEN
query += sFieldProject
ELSE
IF sCombo2 = "Dagen" THEN
query +=sFieldDatum
ELSE
IF sCombo2 = "Personen" THEN query += sFieldPersoon
END
END
END
//Zoeken of er
een waarde in de 3de combo-box zit, om te groeperen.
//Als er een
waarde wordt gevonden, dan worden de juiste variable aan de query toegevoegd.
//Indien er geen
waarde gevonden wordt in de eerste en tweede combo-box, wordt de code voor
combo-box 3 niet uitgevoerd.
IF ListSelect(COMBO_Filter3) > 0 _AND_ NoSpace(COMBO_Filter3[ListSelect(COMBO_Filter3)]) <> "" THEN
sCombo3 = COMBO_Filter3[ListSelect(COMBO_Filter3)]
IF sCombo3 = "Klanten" THEN
query += sFieldKlant
ELSE
IF sCombo3 = "Projecten" THEN
query += sFieldProject
ELSE
IF sCombo3 = "Dagen" THEN
query += sFieldDatum
ELSE
IF sCombo3 = "Personen" THEN
query += sFieldPersoon
END
END
END
END
END
END
ELSE
//indien er geen
waarde staat in combo-box1, dan wordt de variable gekozen met als inhoud de
SQL-string zonder groepering. Men mag er vanuit gaan dat er geen waarde in
combo-box2 of combo-box3 staat
query += sFieldZonderFilter
END
totalQ = query
NRes est un entier
//Als er wordt
gegroepeerd moeten er dummy waarden gebruikt worden om de niet gegroepeerde
waarden op te vangen.
//Standaard
worden voor alle velden dummy waarden ingevoerd.
//Hierna wordt
er getest of de dummy waarden vervangen moet worden door de te groeperen
waarde(n).
IF ListSelect(COMBO_Filter1) > 0 _AND_ NoSpace(COMBO_Filter1[ListSelect(COMBO_Filter1)]) <> "" THEN
NRes = Position(totalQ,sFieldProject,rtfMotComplet+rtfSensibleCasse)
IF NRes = 0 THEN totalQ += sFieldProject2
NRes = Position(totalQ,sFieldDatum,rtfMotComplet+rtfSensibleCasse)
IF NRes = 0 THEN totalQ += sFieldDatum2
NRes = Position(totalQ,sFieldKlant,rtfMotComplet+rtfSensibleCasse)
IF NRes = 0 THEN totalQ += sFieldKlant2
NRes = Position(totalQ,sFieldPersoon,rtfMotComplet+rtfSensibleCasse)
IF NRes = 0 THEN totalQ += sFieldPersoon2
totalQ += sFieldHour
END
//SQL-code:
inzetbaar bij gegroepeerde- en niet-gegroepeerde gegevens.
totalQ += " FROM
tblPersons,tblReports,tblMeta2,tblMeta1 "
selection = " WHERE
tblReports.intPersonID = tblPersons.intPersonID "
selection += " AND
tblReports.intMeta2ID = tblMeta2.intMeta2ID "
selection += " AND
tblReports.intMeta1ID = tblMeta1.intMeta1ID "
selection += " AND
tblReports.dtmDate BETWEEN " + sBeginDate + " AND " + sEindDate + " "
//De vooraf
opgevulde variablen worden getest op hun inhoud.
//Als ze niet
leeg zijn worden de nodige waardes aan de SQL-string toegevoegd.
IF sKlanten > 0 _AND_ NoSpace(sKlanten) <> "" THEN selection += " AND tblMeta1.strCategory =
'" + sKlanten + "' "
IF sPersonen > 0 _AND_ NoSpace(sPersonen) <> "" THEN selection += " AND
tblPersons.strPersonName = '" + sPersonen + "' "
IF sProjecten > 0 _AND_ NoSpace(sProjecten) <> "" THEN selection += " AND
tblReports.intMeta1ID = " + sProjecten + " "
totalQ += selection
//De nodige
parameters worden doorgegeven aan de procedure fillQueryPara als de combo-boxen
opgevult zijn.
//De procedure
fillQueryPara geeft een waarde terug die aan de query wordt toegevoegd.
//De fillQueryPara
procedure kan men lager in dit document terugvinden.
IF sCombo1 > 0 THEN
totalQ += " GROUP BY "
+ fillQueryPara(sCombo1)
IF sCombo2 > 0 THEN
totalQ += " , " + fillQueryPara(sCombo2)
IF sCombo3 > 0 THEN
totalQ += " , " + fillQueryPara(sCombo3)
END
END
END
//Het doorlopen
en effectief opvullen van de tabel.
dsTest is Data Source
IF HExecuteSQLQuery(dsTest, hQueryWithoutHFCorrection, totalQ) THEN
IF HReadFirst(dsTest) THEN
WHILE NOT HOut(dsTest) TableAddLine(TBL_Reports, True, dsTest.dtmDate, dsTest.strPersonName, dsTest.numHours,dsTest.strSubject,dsTest.strBody, dsTest.strLocation,dsTest.strName,dsTest.strCategory,dsTest.strName_tb,dsTest.strCategory_tb)
HReadNext(dsTest)
END
END
END
// fillQueryPara
procedure die een parameter opvangd en een resultaat terug stuurt
PROCEDURE fillQueryPara(groupfield)
sNewGroupField is string = ""
SWITCH groupfield
CASE "Dagen" : sNewGroupField = "tblReports.dtmDate"
CASE "Personen" : sNewGroupField = "tblPersons.strPersonName"
CASE "Klanten": sNewGroupField = "tblMeta1.strCategory"
CASE "Projecten": sNewGroupField ="tblMeta1.strName"
END
RESULT sNewGroupField
4.1.3
Schermafbeeldingen
4.1.3.1
Prestatie overzicht : openingsscherm

4.1.3.2
Prestatie overzicht : Gegevens tonen

4.1.3.3
Prestatie overzicht : Gegevens tonen gesorteerd op persoon en klant
4.1.3.4 Prestatie overzicht : Datum
keuze

4.1.3.4
Prestatie overzicht : Exporteer keuze menu

4.1.3.5
Prestatie overzicht : Afdruk zonder groepering


4.1.3.5
Prestatie overzicht : Afdruk met groepering


4.2 Opdracht 2 :
Nieuwe schermen toevoegen aan Xtendit Timecard Addition project
4.2.1 Databeheer
Zoals eerder reeds vermeld,was nodig om bepaalde
gegevens over te brengen naar een nieuwe, zelf aan te maken databank. Het
formaat van deze databank moest HyperFileSQL zijn, standaard door Windev
ondersteund. De onderstaande code zal hier iets meer duidelijkheid over
scheppen. Deze code wordt niet opgenomen in het uiteindelijk programma. Het is
enkel de bedoeling om eenmalig alle nodige data te kopiëren van de
oorspronkelijke MS Access databank naar de nieuwe HyperFileSQL databank.
PROCEDURE
HyperFileSQL_aanm()
tel est un entier = 0
QUAND
EXCEPTION DANS
//HfPersoon opvullen
IF HReadFirst(tblPersons) THEN
WHILE NOT HOut(tblPersons)
tel = 0
HChangeRep(HfPersoon,"c:\data")
HCréationSiInexistant(HfPersoon)
//HfPersoon aanmaken indien ze
nog niet bestaat
HfPersoon.intPersonID = tblPersons.intPersonID
HfPersoon.strPersonName = tblPersons.strPersonName
HfPersoon.strPersonCoeff = 0
HfPersoon.strPersonDirectKost = 0
HAjoute(HfPersoon)
HReadNext(tblPersons)
END
END
//HfProject opvullen
IF HReadFirst(tblMeta1) THEN
WHILE NOT HOut(tblMeta1)
tel = 0
HChangeRep(HfProject,"c:\data")
HCréationSiInexistant(HfProject)
//HfProject aanmaken indien ze
nog niet bestaat
HfProject.intMeta1ID = tblMeta1.intMeta1ID
HfProject.strName = tblMeta1.strName
HfProject.strStatus = 0
HfProject.strCategory = tblMeta1.strCategory
HAjoute(HfProject)
HReadNext(tblMeta1)
END
END
FAIRE
Erreur("Fout op HyperFileSQL : " + HErreur())
SINON
Trace("Tabellen
succesvol aangemaakt")
FIN
4.2.2 Hoofdmenu

In het hoofdmenu heeft men
de keuze uit Menu, Bewerken of afsluiten
Wanneer men voor gegevens
opvragen kiest, dan krijg men de uitwerking van mijn eerste opdracht te zien.
Het hoofdmenu is aangemaakt in het begin van de tweede opdracht.
Wanneer men op
Kost/opbrengst berekenen klikt, dan krijgt men een berekenscherm te zien. Dit
scherm zal naderhand uitgelegd worden.

Als men in het hoofdmenu
voor bewerken kiest, dan krijgt men 3 opties te zien. Persoon gegevens, project
gegevens en Data pad. Persoon- en projectgegevens dienen zoals de naam als zeg,
voor het aanpassen van persoon- en projectgegevens. Data pad geeft de gebruiker
de optie om de plaats van de HyperSQLFiles te veranderen.
4.2.3 Persoon gegevens

In
dit scherm kan de gebruiker nieuwe personen aanmaken of de bestaande gegevens
aanpassen. De gebuiker moet geen knop indrukken om de aanpassen door te voeren.
Deze worden automatisch opgeslagen zonder dat de gebruiker hier iets voor hoeft
te doen. Behalve de naam van de persoon kan ook de Directe kost en de
Coëfficiënt ingegeven worden. De directe kost is de kost die een persoon voor
het bedrijf kost. De Coëfficiënt is de winstfactor die men telt voor die
bepaalde persoon. De gebruiker kan op een heel eenvoudige manier een nieuwe
persoon toevoegen. Er hoeft enkel een nieuwe naam onder het laatste record
ingegeven te worden. Deze zal automatisch bijgehouden worden in de database.
Deze gegevens zullen in de MS-access en in de hypersfiles bijgehouden worden.
Wijzigingen in de tabel worden ook in beide databanken aangepast.
4.2.4 Project gegevens
In
dit scherm kan de gebruiker nieuwe projecten aanmaken of de bestaande gegevens
aanpassen. De gebuiker moet geen knop indrukken om de aanpassen door te voeren.
Deze worden automatisch opgeslagen zonder dat de gebruiker hier iets voor hoeft
te doen. Behalve de naam van het project kan ook het status van het project en
de klantnaam voor een bepaald project aangepast worden. Met status van het
project wordt de vooruitgang van het project in percentage bedoeld.
De
gebruiker kan op een heel eenvoudige manier een nieuw project toevoegen. Er
hoeft enkel een nieuwe naam onder het laatste record ingegeven te worden. Deze
zal automatisch bijgehouden worden in de database. Deze gegevens zullen in de
MS-access en in de hypersfiles bijgehouden worden. Wijzigingen in de tabel
worden ook in beide databanken aangepast.
4.2.5 Data pad

In
dit scherm kan de gebruiker de locatie van de databanken op de harde schijf
bepalen. Deze aanpassing telt enkel voor de hyperSQLFile-bestanden, niet voor
de MS-Access database. De MS-Access database staat opslagen op een externe
locatie. Zodat het project niet enkel op het bedrijf van Xtendit zelf zou werken,
heb ik de MS-Access database offline gezet. Hierdoor is het mogelijk dat
iedereen de offline versie kan testen
die men op de cd die bij dit stagerapport zit, kan terugvinden.
4.2.6 Kost/opbrengst berekenen
4.2.6.1 Ingave voorziene K/O
Het
scherm Kost/opbrengst
berekenen is onderverdeeld in 3 tabbladen. Om te kunnen
starten moet de gebruiker eerst een project kiezen in de combo-box boven de
applicatie.
Zodra
de gebruiker dit heeft gedaan komt het status van het project naast de
combo-box te staan. In het eerste tabblad, Ingave voorziene K/O moet de
gebruiker enkele gegevens invoeren. Eerst moet er één of meerdere personen aan
het project toegevoegd worden. De gebruiker moet het aantal voorziene uren
ingeven dat wordt verwacht nodig te hebben voor dit project. Indien het project
al reeds gestart is kan de gebruiker het reeds gewerkte aantal uren ingeven. De
coëfficiënt wordt automastisch overgenomen uit de database. Maar de gebruiker
kan de coëfficiënt aanpassen per project.
In
de tabel “te berekenen gegevens” komen de toegevoegde gegevens te staan. Deze
gegevens worden automatisch opgeslaan en kunnen achteraf opnieuw opgevraagd en
aangepast worden.
Behalve personen kan men ook onderaannemingen
toevoegen aan een project. Er wordt automatisch een berekening gemaakt en
getoond. Via de knoppen “wis tabel” en “wis lijn” kunnen gegevens verwijderd
worden. De knop “wis tabel” zal alle voorziene EN effectieve berekeningen
wissen(voor 1 bepaald project). Via de knop wis lijn kan per lijn verwijderd
worden. Deze verwijdering wordt NIET doorgevoerd in de effectieve berekeningen.
Dit zodat de gebruiker toch controle heeft om onderscheid te kunnen maken
tussen voorziene en effectieve gegevens.
4.2.6.2 Overzicht Effectieve
K/O
In
dit scherm krijgt de gebruiker een overzicht van de effectieve K/O te zien. De
reeds gewerkte uren die men eventueel in het vorige tabblad ingegeven had,
worden opgenomen in dit tabblad. De Coëfficiënt en de kost worden automatisch
berekend op de reeds gewerkte uren. Men kan dit aantal gewerkte uren aanpassen
in dit tabblad. De Coëfficiënt en de kost
zullen automatisch herberekend worden. De berekeningen zijn afhankelijk
van het status van het project. B.v. de kost bij effectieve K/O is de kost die
men op dit ogenblik heeft verbruikt. Als een project voor 10% voltooid is,
zullen enkel de kosten die tijdens deze 10% gebruikt zijn meegetelt worden.
4.2.6.3 Totaal overzicht

In
dit scherm krijgt men een totaal overzicht te zien. De gegevens van de
voorziene K/O worden vergelijken met de Effectieve K/O. De gebruiker kan de
gegevens printen doormiddel van de rechtermuisknop te klikken op een tabel naar
keuze. Via een klik op de rechtermuisknop kan men ook een grafiek tevoorschijn
laten komen.
5. Persoonlijke ervaring
i.v.m. mijn stage verloop
Zoals
overal waarschijnlijk het geval is, was het begin van mijn stage een hele
aanpassing voor mij. Behalve een nieuwe omgeving met nieuwe gezichten was ook
de programmeertaal waarmee ik moest werken, volledig nieuw voor mij.
Zoals
bij iedere nieuwe ontwikkelingsomgeving heeft Windev een leerperiode nodig eer
men er vlot mee overweg kan. Vooral het feit dat Xtendit gebruikt maakt van de
franstalige versie van het ontwikkelingspakket, maakte het niet eenvoudiger.
Het aanpassen aan de WinDev omgeving heeft me toch enige tijd gevraagd.
Tijdens
mijn stage waren er bepaalde periodes dat de werknemers van Xtendit druk aan
hun eigen project bezig waren en hierdoor mij “aan mijn lot overlieten”. Dit
zorgde af en toe voor frustratie wanneer ik even vastzat, maar dit had echter
ook een positieve kant. Het zelfstandig zoeken naar een oplossing levert
misschien minder snel resultaat op, maar zorgt wel voor een zeer leerzame
evaring. Het lange tijd zoeken naar een oplossing kan een zeer frusterende en
vooral demotiverende taak zijn, maar wanneer men de oplossing eindelijk heeft
gevonden, is het omgekeerde waar. Het vinden van een oplossing na lange tijd
zoeken zorgt voor een zeer aangenaam, motiverend gevoel voor de ontwikkelaar.
De
laatste maand van mijn stage is zonder enige twijfel de meest leerzame maand
geweest. De (basis)kennis Windev 14 die ik in de eerste 2 maanden opgedaan heb,
kon ik volop in de praktijk toepassen tijdens de 3de en laatste maand van mijn stage. In die laatste maand
was het opvallend dat ik zelfstandiger tewerk kon gaan. Men zou kunnen zeggen
dat er na de 2de maand plotseling een lichtje was gaan branden.Dit
was duidelijk te merken aan de vooruitgang die ik in die maand maakte.
De
opdrachten die ik tijdens mijn stage ontving draaide rond de prestatie
overzicht applicatie. De oorspronkelijke en ook beperkte versie van deze
applicatie werd reeds gebruikt door Dhr. Paul Smeets, COO van Xtendit
Solutions. Mijn applicatie zal de oorspronkelijk versie vervangen. Dit wil
zeggen dat mijn applicatie daadwerkelijk gebruikt zal worden en niet zomaar aan
de kant geschoven zal worden om uiteindelijk onder een dikke laag stof terecht
te komen.
Een
ander voordeel hiervan was het direct werken voor een opdrachtgever/klant. Mijn
applicatie zal slechts door 1 persoon gebruikt worden, Dhr. Paul Smeets.
Hierdoor was het noodzakelijk om af en toe een tussentijdse testversie aan Dhr.
Smeets te tonen. Dit om te controleren of ik wel degelijk op het goede pad zat.
Met andere woorden, testen of mijn applicatie functioneerde naar de wensen van
Dhr. Smeets.
6. Conclusie
De
bedoeling van een stage is dat de student in praktijk werkervaring kan opdoen
en hier zoveel mogelijk uit bijleert.
Zonder
enig probleem mag ik stellen dat mijn stage een zeer leerzame ervaring voor mij
geweest is. Behalve de technische kennis die ik er heb opgedaan, heb ik een
beter idee gekregen over het doen en laten in het bedrijfsleven.
Het
was ook heel intressant om de theoretische kennis die ik in mijn schoolcarrière
heb opgedaan, in praktijk te kunnen toepassen voor een directe opdrachtgever.
Door
het positief beëindigen van mijn stage heb me tegenover mijn omgeving, maar
vooral tegenover mezelf bewezen dat ik in staat ben om degelijk te functionen
in een professionele werkomgeving.
7. Geraadpleegde bronnen
http://www-03.ibm.com/systems/i/
http://en.wikipedia.org/wiki/WinDev
http://www.pcsoft-windev-webdev.com/usconcepts/windev/WinDev-14-Concepts-US.pdf
http://helpdesk.ddmgr.com/WXUS_WEB/PAGE_Home.awp
http://www.windevcanada.com/en/
http://www.haypocalc.com/blog/index.php/2007/11/07/83-pc-soft-windev
http://forum.pcsoft.fr/group.awp?forum=pcsoft.us.windev&lang=us
http://www.windev.com/ts/download/index.html