Zilverstraat 26 8000 Brugge
2009 – 2010
Informaticabeheer Karel Stevens
6IB
nr.7
Zilverstraat 26 8000 Brugge
2009 – 2010
Informaticabeheer Karel Stevens
6IB
nr.7
GIP 2009 – 2010 1
De geïntegreerde proef Voorwoord en dankwoord Ik ben Karel Stevens en als laatstejaarsleerling van het Sint-JozefsInstituut te Brugge, is het schrijven van een GIP nodig om het diploma secundair onderwijs te behalen. De geïntegreerde proef is een verplicht onderdeel van het leerplan dat elementen van vakken zoals Nederlands, Engels, informatica (software ontwikkeling en BPR), economie en een stageperiode van twee weken bevat. Het doel van de GIP is de leerlingen te helpen overstappen van theorie naar praktijk en van het middelbaar naar het hoger onderwijs. Hierdoor leert men zelfstandig werken en plannen waardoor de integratie in een bedrijf later veel makkelijker zal verlopen. Ik wil graag de heer Thiel bedanken voor de steun en algemene hulp bij het maken van de GIP. Verder wil ik de heer Steven Clarissimo als stagementor van mijn leerrijke stage danken. De vakleerkrachten die ik speciaal wil bedanken zijn mevrouw De Meulder voor de vakken Nederlands en Engels, de heer Devriendt voor het vak BPR en mevrouw Devoldere voor het vak Economie.
GIP 2009 – 2010 2
GIP 2009 – 2010 3
1
BEDRIJFSECONOMISCHE ASPECTEN ................................................................................................... 6
1.1 1.1.1 1.1.2 1.2 1.2.1 1.2.2
STARTEN VAN EEN EIGEN ZAAK EN VENNOOTSCHAPSVORMEN............................................................................. 6 Juridische vorm ................................................................................................................................... 6 Starterformaliteiten en vergunningen ................................................................................................. 6 STEUNMAATREGELEN, VERZEKERINGEN EN E-BUSINESS ..................................................................................... 9 Steunmaatregelen .............................................................................................................................. 9 Verzekeringen ................................................................................................................................... 12
2
STAGE............................................................................................................................................... 15
2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.3 2.4
VOORSTELLING STAGEBEDRIJF: ECG PC - BLANKENBERGE .............................................................................. 15 Bondige voorstelling met beknopte historiek .................................................................................... 15 Identificatiegegevens........................................................................................................................ 15 bedrijfsactiviteiten: producten en/of diensten ................................................................................... 16 Organogram ..................................................................................................................................... 16 Werking van het stagebedrijf ............................................................................................................ 17 INTERVIEW........................................................................................................................................... 18 SOLLICITATIEBRIEF ................................................................................................................................. 19 STAGEVERSLAGEN.................................................................................................................................. 20
3
WEBSITES ......................................................................................................................................... 31
3.1
HET BOUWEN VAN EEN STATISCHE WEBSITE ................................................................................................. 31
4
INFORMATICAPROJECT .................................................................................................................... 37
4.1 4.2 4.2.1 4.2.2 4.3 4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.3.8 4.3.9 4.3.10 4.3.11 4.3.12 4.3.13 4.3.14 4.3.15 4.3.16 4.3.17 4.3.18
PROBLEEMSTELLING ............................................................................................................................... 37 DATABASE ONTWIKKELING....................................................................................................................... 39 Relatie-entiteitschema ...................................................................................................................... 39 Tabelvelden met veldtypes................................................................................................................ 40 PROJECTONTWIKKELING .......................................................................................................................... 41 SplashScreen1.vb .............................................................................................................................. 41 frmBasis.vb ....................................................................................................................................... 43 frmInloggen.vb ................................................................................................................................. 50 frmInscannen.vb ............................................................................................................................... 54 frmScannenVoor8Uur.vb .................................................................................................................. 63 frmVoor8Uur.vb................................................................................................................................ 68 frmBlijvenOverMiddag.vb ................................................................................................................. 74 frmStrafstudies.vb ............................................................................................................................ 80 frmAfdrukken.vb ............................................................................................................................... 88 frmAfdrukkenDag.vb ........................................................................................................................ 91 frmAfdrukkenVoormiddag.vb ........................................................................................................... 97 frmAfdrukkenNamiddag.vb ............................................................................................................ 103 frmAfdrukkenDatum.vb .................................................................................................................. 109 frmAfdrukkenTussen.vb .................................................................................................................. 115 frmAfdrukkenLeerlingen.vb............................................................................................................. 122 frmAfdrukkenSelecteer.vb............................................................................................................... 131 frmLeerlingWijzigen.vb ................................................................................................................... 146 frmGebruikersWijzigen.vb .............................................................................................................. 158
5
RICHTINGSPECIFIEK ENGELS ........................................................................................................... 167
5.1 5.1.1
SOFTWARE/HARDWARE SUPPLIERS IN THE UK ............................................................................................ 167 List of 10 software/hardware suppliers ........................................................................................... 167
GIP 2009 – 2010 4
5.1.2 5.1.3 5.2 5.3 5.4 5.4.1 5.4.2 5.4.3 5.4.4 5.4.5 5.4.6 5.5
Letter of enquiry ............................................................................................................................. 171 Compare 2 websites........................................................................................................................ 173 ENGLISH WEBSITE ................................................................................................................................ 174 BESLUIT ............................................................................................................................................ 182 HANDLEIDING TELAATKOMERS ............................................................................................................... 183 Inleiding.......................................................................................................................................... 184 Administratie .................................................................................................................................. 185 Lijst aanmaken ............................................................................................................................... 186 Afdrukken ....................................................................................................................................... 189 Leerling-informatie ......................................................................................................................... 190 Gebruikers ...................................................................................................................................... 190 CURRICULUM VITTAE ............................................................................................................................ 191
GIP 2009 – 2010 5
1 Bedrijfseconomische aspecten Dit hoofdstuk beschrijft de rechten en plichten bij het opstarten van een zaak, zoals startvoorwaarden, vestigingsvereisten, verzekeringen, … .
1.1 1.1.1
Starten van een eigen zaak en vennootschapsvormen Juridische vorm
Het bedrijf waar ik mijn stage zal volgen is ECG in Blankenberge. ECG heeft als juridische vorm een eenmanszaak. Hier volgt een schema van de belangrijkste kenmerken van deze juridische vorm.
Eenmanszaak Oprichtingsakte Minimum aantal personen Aansprakelijkheid Minimum in te brengen kapitaal Te volstorten kapitaal
Geen 1 Onbeperkt Geen minimumkapitaal -
De inbreng van kapitaal Verificatie bedrijfsrevisor bij inbreng goederen? Aandelen
Geen aandelen, u bent de enige eigenaar van het bedrijf -
Mogelijkheden van overdracht aandelen Bestuur Boekhoudkundige verplichtingen
Zaakvoerder Vereenvoudigde boekhouding wanneer de omzet maximaal 495.787,04 euro bedraagt (exclusief BTW)
Fiscaliteit Financieel plan verplicht
Personenbelasting Neen
1.1.2 A)
Starterformaliteiten en vergunningen Startvoorwaarden
Starten met een eigen zaak is een boeiende uitdaging. Maar om te slagen moet je vooraf over de nodige informatie beschikken. In principe mag in België iedereen een zaak beginnen. Als je een eenmanszaak wil opstarten, legt de wet wel bepaalde voorwaarden en beperkingen op: GIP 2009 – 2010 6
A1)
Je moet meerderjarig zijn
U moet minimum 18 jaar zijn. A2)
Je moet nog over al je burgerrechten beschikken.
De belangrijkste burgerrechten zijn:
Recht op privacy Recht op demonstratie Recht op een eerlijk proces A3)
Nationaliteit
U moet ofwel:
Een Europese nationaliteit hebben Een verblijfsvergunning en Een beroepskaart A4)
Je moet handelsbekwaam zijn
Dit kan u bewijzen door het behalen van een attest bedrijfsbeheer, door het volgen van een hogere studie. Relevante beroepservaring kan ook aanleiding geven tot het behalen van dit attest. In alle andere gevallen moet men een specifiek daartoe ingericht vak volgen. B) B1)
Vestigingsvereisten Bewijs van kennis van bedrijfsbeheer
Als bewijs van kennis gelden onder andere een getuigschrift bedrijfsbeheer, ieder diploma van het hoger onderwijs, bepaalde internationale getuigschriften … . Naast jezelf kunnen ook je echtgeno(o)t(e), samenwonende partner of diegene die het dagelijks bestuur uitoefent in de onderneming dit bewijs leveren. Er bestaan ook een aantal vrijstellingen voor dit getuigschrift, bijvoorbeeld voor zijn partner bij het overlijden van de ondernemer en overname (maar dit is slechts tijdelijk). B2)
Bewijs van beroepskennis: hoe bewijzen?
Men kan bewijs van kennis behalen aan de hand van diploma’s of getuigschriften die men voor dat beroep heeft behaald of door het leveren van bewijs aan de hand van praktijkervaring. Deze ervaring moet uiteraard met een officieel document aangetoond worden. Dit kan GIP 2009 – 2010 7
bijvoorbeeld een getuigschrift zijn van de belastingscontroleur, een attest van de sociale zekerheid, een loonfiche of een EG-verklaring zijn. B3)
Bewijs van beroepskennis: wie bewijst het?
Voor een eenmanszaak:
het ondernemingshoofd de echtgeno(o)t(e) of de sinds drie jaar samenwonende partner een helper die deel uitmaakt van het gezin van de zelfstandige in de 1ste, 2de of 3de graad een loontrekkende met een arbeidsovereenkomst voor onbepaalde duur C)
Formaliteiten
Voldoe je aan de voorwaarden om je te mogen inschrijven als zelfstandige, dan kan je beginnen met het vervullen van de voornaamste formaliteiten, zoals: C1)
Ondernemingsvaardigheid bewijzen
Dit doe je met behulp van een attest van voldoende kennis van bedrijfsbeheer, aangevuld met diploma’s en beroepskennis. C2)
Zichtrekening openen
Als zelfstandige handelaar of vakman moet je een zichtrekening openen bij een bank die gevestigd is in België, een spaarkas of bij de Post. Deze rekening moet op jouw naam staan. Dit rekeningnummer en de naam van de financiële instelling moet vermeld worden op al je facturen, brieven, bestelbons, … (alle inkomende en uitgaande facturen) anders kan je slechte betalers geen nalatigheidintresten aanrekenen. Voorbeeld:
779 – 5902896 – 85
Bank nr. C3)
Cliënt nr.
Controlecijfer
Inschrijving bij KBO
Bij het inschrijven bij de Kruispuntbank Ondernemingen krijg je een(bij wet verplicht) uniek ondernemingsnummer. Dit nummer zal moeten vermeld worden op alle facturen en bij communicatie met de overheid. Een ondernemingsnummer wordt samengesteld door: Landcode + 0 + BTW-nummer / ondernemingsnummer
GIP 2009 – 2010 8
C4)
Inschrijven bij de BTW-administratie
Deze inschrijving is van belang voor de activatie van je ondernemingsnummer / BTW – nummer. C5)
Aansluiten bij een sociaal verzekeringsfonds
Als zelfstandige in hoofd- en bijberoep, moet je je ook aansluiten bij een sociaal verzekeringsfonds. Dit fonds int de sociale bijdragen die je moet betalen en zorgt ervoor dat de uitkeringen correct gebeuren. De aansluiting moet binnen de 90 dagen na het starten van je zaak gebeuren. C6)
Aansluiten bij een ziekenfonds
Om in orde te zijn met je ziekteverzekering ben je verplicht je aan te sluiten bij een ziekenfonds. Als je al aangesloten bent, moet je gewoon je statuutwijziging melden. C7)
Vestigingsvereisten en formaliteiten bij ECG
Voor éénmanszaken zijn er 7 formaliteiten die zeker moeten gevolgd worden:
Een bezoek brengen aan de notaris Openen van een zichtrekening Een bezoek aan een erkend ondernemingsloket Inschrijving bij de Kruispuntbank van Ondernemingen (KBO) De inschrijving voor BTW van uw ondernemingsnummer Aansluiting bij Sociaal Verzekeringsfonds Aansluiting bij Sociaal Secretariaat
1.2 1.2.1 A) A1)
Steunmaatregelen, verzekeringen en e-business Steunmaatregelen Federale steunmaatregelen: De startlening
De Startlening biedt werklozen die werk zoeken de mogelijkheid om een zelfstandige activiteit op te starten met de steun van een voordelige lening. De lening bedraagt maximaal 30.000 EUR en de aanvrager moet zelf 25 % van het gevraagde bedrag inbrengen (via eigen middelen of bankkrediet). In het kader van de Startlening kunt u zich gratis laten begeleiden door een begeleidingsinstelling. Door die begeleiding krijgt u een korting van 1 % op de rente
GIP 2009 – 2010 9
en betaalt u dus maar 3 % rente. Voor de aanvraag van een startlening en de begeleiding kan u steeds terecht bij UNIZO Starterservice. A2)
Rosetta-plan
Als u jonger bent dan 30, werkloos en nog nooit een zelfstandige activiteit hebt uitgevoerd, dan kan je een beroep dan op het Rosetta-plan. Dit houdt in dat u gedurende 3 tot 6 maand gratis wordt bijgestaan en geadviseerd door een steunpunt voor starters zoals UNIZO starterservice. A3)
Behoud van recht op werkloosheidsuitkering
Het zijn maatregelen met betrekking tot het behoud van werkloosheidsuitkeringen in geval dat een zelfstandige activiteit slecht afloopt. A4)
Investeringsaftrek bij investeringen
Door de investeringsaftrek wordt de belastbare winst vrijgesteld tot een bepaald gedeelte van de door de onderneming aan een nieuwe investering bestede som. A5)
Solidaire lening
Deze lening dient om de mensen die over onvoldoende middelen beschikken voor het startkapitaal toch een kans te geven. A6)
Lening businessangel+
Dit is een aanvulling op de investering van de zogenaamde businessangels. Deze bedrijfsleiders en ondernemers investeren in jonge ondernemingen in ruil voor een potentieel interessante financiële opbrengst. Businessangels bieden u hun expertise en ervaring. B)
Provinciale steunmaatregelen: Vlaanderen
Sommige provincies kennen investering- of vestigingspremies toe aan KMO's. West-Vlaanderen kent onder bepaalde voorwaarden een provinciale jongerenpremie toe bij investeringen van ondernemers die jonger zijn dan 35 jaar. De investeringen kunnen zowel met een lening als met eigen middelen gefinancierd worden. Het minimum krediet is bepaald op 7436.80 €, de minimale investering met eigen middelen op 12394.67 €. In dit laatste geval is de premie gelijk aan 743.68 €. Voor een investering gefinancierd met een lening schommelt de premie tussen 15.000 en 867.63 €. De aanvraag wordt door de kredietinstelling ingediend bij de kredietverlening, of door de ondernemer binnen de drie maanden na de volledige investering ingeval van financiering met eigen middelen.
GIP 2009 – 2010 10
B1)
Waarborgregeling
Voor een gedeelte van het krediet dat u nodig heeft, voorziet de Vlaamse overheid een waarborgregeling. B2)
Ondernemerschapportefeuille
Met steun van de Vlaamse overheid kunt u goedkoper opleiding, advies, kennis en leiderschap inkopen. U betaalt slechts 2/3 van de dienstverlening en de overheid 1/3 via ondernemerschapportefeuille. B3)
Groeipremie
Wanneer een onderneming investeert, wordt er aan dat bedrijf een groeipremie uitgereikt. B4)
Private Equity
Een beursgenoteerd bedrijf kan extra aandelen uitgeven op de beurs als het geld nodig heeft, een niet-beursgenoteerd bedrijf kan dat niet. B5)
Financiële steun
Wanneer eigen geldelijke vermogens niet volstaan, kan men genieten van financiële steun bij de Participatiemaatschappij Vlaanderen. C) C1)
Vlaamse steunmaatregelen: Opleidingscheques
Voor werkgevers: Voorziet in een tussenkomst van de Vlaamse overheid voor opleidingen die u zelf of uw personeel volgen. Een onderneming kan per kalenderjaar maximaal 200 cheques kopen. De cheque heeft een waarde van 30 EUR, waarvan de helft door het Vlaams Gewest wordt betaald, de andere helft door de onderneming.
Voor werknemers: Voor elke opleiding die u bij een erkend opleidingsverstrekker volgt, kan u rekenen op een tussenkomst van de Vlaamse Overheid van 50% in de kosten. De opleidingscheques hebben een waarde van 5 EUR, 10 EUR en 25 EUR. U kunt maximum voor 250 EUR per jaar aan cheques bestellen. U betaalt slechts de helft van de waarde van de cheque. Aanvraag via VDAB of bij de lokale werkwinkel.
GIP 2009 – 2010 11
C2)
Adviescheques voor extern bedrijfsadvies
Wanneer u een beroep doet op een erkend extern adviseur voor bedrijfsadvies, voorziet de Vlaamse overheid in het kader van de Adviescheques onder bepaalde voorwaarden in een tussenkomst van 50 tot 75 % (voor startende kleine ondernemingen) in de advieskosten. De cheques hebben een waarde van 30 EUR, waarvan de helft door de Vlaamse overheid wordt betaald, de andere helft door de onderneming. Op jaarbasis kan u maximum 820 adviescheques aankopen. C3)
Groeipremie
Twee keer per jaar wordt er door de Vlaamse regering een "wedstrijd" uitgeschreven en kan u een dossier indienen. Uw dossier wordt beoordeeld op de levensvatbaarheid van uw onderneming en de mate waarin het beantwoordt aan de criteria die de Vlaamse regering belangrijk vindt. Starters zijn nu een beleidsprioriteit en hebben dus een stapje voor. Om deze groeipremie aan te vragen moet u een investeringsdossier indienen via internet. Voor een KMO jonger dan 5 jaar bedraagt het minimuminvesteringsbedrag 12.500 EUR (tot een maximum van 8.000.000 EUR). D) D1)
Gemeentelijke steunmaatregelen Steunmaatregelen voor bedrijven in Blankenberge
In Blankenberge kan u genieten van een eenmalige verhoogde investeringsaftrek van 13,5% en van 450€ aan groene stroomcertificaten over een periode van 20 jaar per geproduceerde MWh. In Blankenberge wordt de geproduceerde stroom rechtstreeks vergoed ten bedrage van de geldende dagtarief volgens het principe van de terugdraaiende kWh-teller. D2)
Steunmaatregelen bij ECG
Voor ECG is het niet mogelijk om van deze steunmaatregelen te genieten, als eenmanszaak is het namelijk niet mogelijk om vb. een groeipremie te krijgen.
1.2.2
Verzekeringen
Een zelfstandige loopt heel wat risico’s en het is dan ook aangewezen om de nodige verzekeringen af te sluiten. Hieronder worden er verschillende belangrijke verzekeringen besproken. A1)
Arbeidsongeschiktheidsverzekering
Wanneer een werknemer ziek wordt, of deze op een andere manier zijn werk niet meer kan uitvoeren, wordt hij toch nog betaald dankzij de verzekering. Voor zelfstandigen is deze voorziening er niet, deze zullen het risico op arbeidsongeschiktheid zelf met behulp van een GIP 2009 – 2010 12
verzekering moeten afdekken. De arbeidsongeschiktheidsverzekering is een complexe verzekering, waarin veel opties mogelijk zijn. Deze zijn per persoon verschillend. A2)
Arbeidsongevallenverzekering
Elke werkgever is verplicht om dergelijke verzekering af te sluiten. Hierdoor worden uw werknemers verzekerd voor ongevallen op het werk en op weg naar en van het werk. Wanneer deze niet afgesloten is worden de kosten op de werkgever geschoven en krijgt de werkgever een boete en kan hij veroordeeld worden. A3)
Levensverzekering en Lijfrenteverzekering
Als ondernemer wordt er geen premie voor je pensioen afgedragen door de werkgever. Om toch tijdig te kunnen stoppen met je bedrijf en nog een aardig pensioen te hebben, kun je een levensverzekering afsluiten. Net als bij een pensioen leg je geld in tijdens de jaren dat je werkt en op een gegeven moment wordt de verzekering in delen uitgekeerd. Ook zorgt deze verzekering ervoor dat je partner wanneer je overlijdt niet in de financiële problemen komt. Stel je hebt een goed lopend bedrijf, en je hebt een goede hypotheek afgesloten samen met je partner. Wanneer je komt te overlijden moet je partner alleen de hypotheek aflossen, hier is dan waarschijnlijk niet genoeg geld voor. De levensverzekering zorgt ervoor dat de kosten in deze situatie worden gedekt. A4)
Aansprakelijkheidsverzekering
Als eigenaar van een eenmanszaak ben je volledig verantwoordelijk, dit betekent ook verantwoordelijk met je privévermogen. Tegen wanbeleid kun je je niet verzekeren, maar wanneer je in de problemen raakt door een risico dat niet te overzien was (je rijdt je secretaresse aan die een kar met spullen vervoerde en ze breekt haar voet) kan dat wel. De Aansprakelijkheidsverzekering dekt dan de kosten. A5)
burgerlijke aansprakelijkheid auto
Deze verzekering is wettelijk verplicht. Bij een ongeval wordt de schade aan een derde partij gedekt. De schade aan uw eigen voertuig moet u zelf betalen. A6)
burgerlijke aansprakelijkheid in geval van brand of ontploffing
Deze verzekering dekt de lichamelijke en materiële schade die aan derden veroorzaakt wordt door een brand of ontploffing in de verzekerde ruimtes. Voor ruimtes die voor het publiek toegankelijk zijn, is een dergelijke verzekering verplicht (vb.: restaurants, cafés, winkelgalerijen, …).
GIP 2009 – 2010 13
A7)
Rechtsbijstandverzekering
De rechtsbijstandverzekering dekt de advocaatkosten, deurwaarderskosten en proceskosten wanneer een juridisch probleem zich voordoet. Zaken waar je als starter mee te maken krijgt (problemen met leveranciers) zijn vaak niet gedekt. Problemen met personeel zijn in het algemeen wel gedekt. A8)
Gewaarborgd inkomen
Wie door een ongeval een tijdje werkonbekwaam is. Het inkomensverlies wordt hier gecompenseerd door een uitkering. Het waarborgt dus een compensatie van je inkomstenverlies door de storting van een rente. A9)
Hospitalisatieverzekering
De hospitalisatieverzekering is een verzekering welke de kosten terugbetaald bij eventuele ziekenhuisopname. De hospitalisatieverzekering dekt ook de kosten voor en na de behandeling. A10)
Groepsverzekering
Een groepsverzekering is een verzekeringspolis die de werkgever afsluit voor zijn personeel. Via premiebetaling wordt een kapitaal opgebouwd dat de werknemer toebehoort. De groepsverzekering herbergt verschillende waarborgen, voorbeeld pensioensparen. = > Hiermee kan de werknemer zijn wettelijke pensioen aanvullen. A11)
Business ECG
ECG is een informatica bedrijf dat zich specialiseert in basisscholen. Er is geen mogelijkheid om online aankopen te doen. Wel om bestellingen te plaatsen via E-mail of telefoon.
GIP 2009 – 2010 14
2 Stage 2.1 2.1.1
Voorstelling Stagebedrijf: ECG PC - Blankenberge Bondige voorstelling met beknopte historiek
Ik heb mijn stage gevolgd in ECG PC – Blankenberge. Dit bedrijf koopt en verkoopt computer onderdelen, computers en toebehoren met de nadruk op service. Dit bedrijf werd opgericht in 1997 met als bedoeling eenvoudige IT -infrastructuren te leveren aan basisonderwijsinstellingen. In 2006 openden ze een nieuw bedrijfsgebouw in Blankenberge, voorzien van een montageafdeling, burelen en een opleidingscentrum, om mensen te leren omgaan met de producten die ze gekocht hebben. Vanaf dit jaar werd de merknaam CL@RIS gelanceerd met een volledig gamma gericht op onderwijs. Het idee achter het bedrijf kwam van de pedagogische achtergrond van de oprichters (Steven Clarissimo en Pieter Heytens), die beiden al enkele jaren voor de klas stonden, voornamelijk als ICT – coördinators. In deze functie groeide het idee voor het aanbieden van diensten naar scholen.
2.1.2
Identificatiegegevens ECG PC
Cl@ris Hanzestraat 26 8370 Blankenberge
Steven Clarissimo 0486/11.55.01 steven@claris.be
050 /42 95 98
GIP 2009 – 2010 15
Pieter Heytens 0476/75.19.35 pieter@claris.be
2.1.3
bedrijfsactiviteiten: producten en/of diensten
Momenteel hebben ze volgende producten in het gamma:
Interactieve schoolborden (ook gekend als Clarisborden) Werkstations (energiezuinig en zeer eenvoudig te beheren en goedkoop) Ncomputing Mustation - softxpand
Eenvoudige software voor het beheren van de computerklas Reborn kaarten Uiterst stevige koptelefoons
Om in een beperkte tijdspanne kennis te maken met de producten en diensten van Claris werd er een volledig ingericht klaslokaal gemaakt in een vrachtwagen, waarmee ze graag van school tot school rijden.
2.1.4
Organogram
Nick Rondolez ICT- Coördinator
Steven Clarissimo Beheerder
Pieter Heytens ICT- Coördinator
Karel Stevens
Remco Vanhooren
Anthony
Stagiair
Stagiair
Stagiair
GIP 2009 – 2010 16
2.1.5 A1)
Werking van het stagebedrijf Gebruikte besturingssystemen, softwarepakketten of ontwikkelingomgevingen
besturingssystemen Windows XP Windows 7 (transformation pack)
Softwarepakketten VMWare Microsoft Office 2007 Software in verband met Clarisborden A2)
Aanwezigheid op het internet http://www.ecgpc.be/index.html http://scholen.ecgpc.be/
A3)
bespreking beleid en datacommunicatie
Wij hebben vooral gewerkt als ICT – coördinators in een school. Uitwisseling van data gebeurde hier over het netwerk via UTP – kabels. In de school bevonden zich ook faxen, modems, switches, printers, kopieermachines … . Een databank was er niet, of we zijn er toch geen tegengekomen. Alle gegevens en programma’s bevonden zich op de servers, waarvan een virtuele machine werd doorgestuurd naar alle terminals. A4)
werkwijze voor herstellingen
Wanneer er ergens een probleem was, gingen we kijken of we het niet ter plaatse konden oplossen. Indien we teveel de les zouden storen, verplaatsten we de computers met het probleem, naar het ICT-lokaal, waar deze werd hersteld en daarna teruggebracht.
GIP 2009 – 2010 17
2.2
Interview
Op 3 februari 2010 mocht ik een interview afnemen van Steven Clarissimo, mijn stagementor van het bedrijf ECG – PC. Hij vertelde me dat hij eigenlijk onderwijzer wou worden en die opleiding heeft hij ook gevolgd, maar je kunt er veel kanten mee uit. Hij doet graag alles in de informatica afdeling, zeker als er een uitdaging bij komt kijken en zolang het geen repetitief werk is. Hij heeft ECG PC opgericht, om dat hij al intensief bezig was met computers en met IT infrastructuren op te richten in de scholengemeenschap en omdat hij werkte als onderwijzer, was het dus een logische volgende stap. Door ECG op te richten was hij niet meer gebonden aan die ene scholengemeenschap. De naam ECG komt van Eenvoudig Computer Gebruik, een geschikte naam omdat de infrastructuren die hij aanlegt in scholen goedkoop en gemakkelijk te onderhouden zijn. Hij heeft gekozen voor een eenmansbedrijf omdat dat het eenvoudigste was en geschikt voor het werk dat wilde doen. ECG bestaat ondertussen al 12jaar.
GIP 2009 – 2010 18
2.3
Sollicitatiebrief 2009-10-13
Karel Stevens Diksmuidse Heerweg 284 8200 Sint-Andries 050 81 39 05
ECG PC de heer Steven Clarissimo Hanzestraat 26 8370 Blankenberge
Geachte Mijnheer Clarissimo De stage in uw bedrijf wekte mijn interesse voor een job in verband met hardware op. Ik studeer, zoals u weet, momenteel Informaticabeheer in het Sint-Jozefsinstituut te Brugge en hierdoor ben ik ervan overtuigd dat ik voor ECG PC een goede aanwinst ben. Ik hou mij in mijn vrije tijd graag bezig met computer hardware en heb 2 weken stage gevolgd in uw bedrijf en heb zo al heel wat ervaring. Indien u nog verdere vragen hebt, kunt altijd bellen naar mijn persoonlijk nummer (050 81 39 05) of mij mailen op karel_stevens@hotmail.com . Ik hoop dat u gunstig reageert. U kunt van mij alvast een positieve en enthousiaste houding verwachten.
Hoogachtend
Karel Stevens Bijlage: Curriculum Vitae
GIP 2009 – 2010 19
2.4
Stageverslagen
GIP 2009 – 2010 20
GIP 2009 – 2010 21
GIP 2009 – 2010 22
GIP 2009 – 2010 23
GIP 2009 – 2010 24
GIP 2009 – 2010 25
GIP 2009 – 2010 26
GIP 2009 – 2010 27
GIP 2009 – 2010 28
GIP 2009 – 2010 29
GIP 2009 – 2010 30
3 Websites 3.1 A1)
Het bouwen van een statische website Index.html met home.html
GIP 2009 – 2010 31
Gebruikte programma’s: DreamWeaver CS4 PhotoShop CS4 Internet Explorer
GIP 2009 – 2010 32
A2)
Producten.html
Gebruikte programma’s: DreamWeaver CS4 Internet Explorer
GIP 2009 – 2010 33
A3)
Geschiedenis.html
Gebruikte programma’s: DreamWeaver CS4 Internet Explorer
GIP 2009 – 2010 34
A4)
Contact.html
Gebruikte programma’s: DreamWeaver CS4 Internet Explorer
GIP 2009 – 2010 35
A5)
Forum
Gebruikte programma’s: Internet Explorer:
GIP 2009 – 2010 36
4 Informaticaproject 4.1 A1)
Probleemstelling Project Telaatkomers
Het project moet het werk van het onthaal vereenvoudigen. De registratie van leerlingen die te laat zijn, moet op een efficiëntere manier worden ingevoerd en verwerkt. A2)
Opstarten van programma
1. Gebruikersnaam wordt gevraagd voor aanmelden door administrator of gebruiker (Gebruiker van het onthaal) (bij verkeerde invoer, waarschuwing weergeven) 2. Bij scannen van barcode: worden alle gegevens getoond van barcode Men kan ook de reden opgeven 3. Knopjes annuleren, volgende kaart en verzoek om strafstudiekaart tonen A3)
Afdrukken van gegevens mogelijk maken:
Een lijst met Telaatkomers: Alle informatie van de persoon
Een lijst met personen die een sanctie hebben (elke dag om 8u op school) Namen van de personen Datums van de volgende week
Andere zoekopdrachten (d.m.v. Datum, Naam persoon,…) Alle informatie van de persoon
Alle documenten moeten de mogelijkheid hebben om geëxporteerd te worden. B)
Vraag en antwoord
Wat moet er gebeuren bij het scannen van de barcode? Na het scannen van de barcode worden alle gegevens getoond van de leerling. Daarna kan men aanduiden of er een reden is. Indien er een reden is wordt een extra tekstvak voorzien. Moet er een reden worden ingevuld na het scannen? Ja, op aanvraag van het onthaal zal dit mogelijk zijn onmiddellijk na het scannen van de leerlingenkaart. GIP 2009 – 2010 37
Moet er een melding komen wanneer leerlingen ’s morgens of ’s middags 3 maal te laat komen? Deze melding zal weergegeven worden na het scannen van de leerlingenkaart. Daarna kan men deze lijst van alle leerlingen afprinten en zo de sancties makkelijk uitdelen aan de leerlingen. Moet de woonplaats zichtbaar zijn bij het afprinten van de lijst? Op aanvraag van het onthaal zal dit aanwezig zijn. Zo kan men makkelijk zien of er een overeenkomst is. Wie zijn de gebruikers van het programma? Het onthaal van de school. De basiskennis van programma’s zoals office is aanwezig. Zijn er verschillende rechten in het programma? Zeker, mensen die geen volledige rechten hebben kunnen geen leerlingen verwijderen of toevoegen. Een gebruiker (met beperkte rechten) moet enkel het noodzakelijke kunnen doen, namelijk leerlingen inlezen. Kunnen er relaties gelegd worden in de tabellen? Relaties kunnen gelegd worden. De barcode van de leerling kan zo verbonden worden met de tabel “Leerlingen”(die alle leerlingen van de school bezit) en met de tabel “TeLaat” (leerlingen die enkel te laat kwamen op school). Zo kunnen we de gegevens snel oproepen wanneer nodig. Moet er een nieuw veld worden toegevoegd wanneer een leerling om 8 uur op school moet zijn? Dit is niet nodig, de waarschuwing komt na het scannen van de leerlingenkaart. De lijst kan ook worden afgeprint en daarna manueel worden ingevuld (wanneer deze sanctie wordt nagevolgd of niet). Moeten er nieuwe velden worden toegevoegd in de database? Op aanvraag van het onthaal zal er een nieuw veld worden toegevoegd. Namelijk het veld “Vervoermiddel”. Zo kan het personeel van het onthaal onmiddellijk zien of er overeenkomsten zijn van te late leerlingen (Doormiddel van vervoermiddel, bv. Trein van Beernem)
GIP 2009 – 2010 38
4.2 4.2.1
Database ontwikkeling Relatie-entiteitschema
GIP 2009 – 2010 39
4.2.2
Tabelvelden met veldtypes
GIP 2009 – 2010 40
4.3 4.3.1
Projectontwikkeling SplashScreen1.vb
Project
Telaatkomers
Type
Windows applicatie
Doel
Formulier dat getoond wordt terwijl het hoofdformulier laadt. Gebruiker kan de status volgen op de progressbar.
Printscreen
Besturingselementen Object
Eigenschap
Waarde
SplashScreen1
BackgroundImage
prjTeLaatKomers.My.Resources.Resources.achtergrond
Bedoeling: Hier is er geen interactie met de gebruiker. De gebruiker dient enkel te wachten tot het programma klaar is met laden. Procedures Object
Gebeurtenis
Doel
SplashScreen1
Load
Timer starten en controleren op eindtijd van timer. Daarna frmBasis openen.
GIP 2009 – 2010 41
Implementatie Public NotInheritable Class SplashScreen1 Dim intSluiten As Integer Private Sub SplashScreen1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 'Set up the dialog text at runtime according to the application's assembly information. 'TODO: Customize the application's assembly information in the "Application" pane of the project ' properties dialog (under the "Project" menu). 'Application title If My.Application.Info.Title <> "" Then ApplicationTitle.Text = " Te laat komers " 'My.Application.Info.Title Else 'If the application title is missing, use the application name, without the extension ApplicationTitle.Text = System.IO.Path.GetFileNameWithoutExtension(My.Application.Info.AssemblyName ) End If Me.CenterToScreen() 'de parameters van timer en progressbar goedzetten en starten tmrLaden.Interval = 10 pgrLaden.Value = 0 pgrLaden.Maximum = 300 tmrLaden.Enabled = True End Sub Private Sub tmrLaden_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrLaden.Tick ' de progressbar en de tijd +1 intSluiten += 1 pgrLaden.Value += 1 ' als hij bij 300 is stoppen = 3 seconden If intSluiten = 300 Then tmrLaden.Enabled = False Me.Close() frmBasis.Show() End If End Sub End Class
GIP 2009 â&#x20AC;&#x201C; 2010 42
4.3.2
frmBasis.vb
Project
Telaatkomers
Type
Windows applicatie
Doel
Het formulier waar alle andere formulieren in worden geladen bij het oproepen ervan.
Printscreen
Besturingselementen Object
Eigenschap
Waarde
frmBasis
Text
Telaatkomers
WindowState
Maximized
BackgroundImage
prjTeLaatKomers.My.Resources.Resources.achtergrond
Icon
Icon
IsMdiContainer
True
MenuStrip
Items
Start Inloggen Uitloggen Afsluiten
Administratie Scannen
GIP 2009 â&#x20AC;&#x201C; 2010 43
Scannen voor 8 uur Lijst aanmaken Voor ochtend Voor middag Strafstudies
Afdrukken Leerlingen informatie Gebruikers Statusstrip
Text
Menu
Text
Welkom
tmrOpstarten
Bedoeling: Dit formulier is de basis van het project, het voegt alle formulieren samen in 1 formulier. Procedures Object
Gebeurtenis
Doel
InloggenToolStripMenuItem
Click
Gebruiker moet hier kunnen aanmelden
UitloggenToolStripMenuItem
Click
De ingelogde gebruiker afmelden
AfsluitenToolStripMenuItem
Click
Het programma volledig afsluiten
mnuStart
Click
Pagina openen om leerlingen te scannen
StartScannenVoor8UurToolStripMenuItem Click
Pagina openen om leerlingen voor 8 uur te scannen
VoorOchtendToolStripMenuItem
Click
Pagina openen om lijst aan te maken
VoorMiddagToolStripMenuItem
Click
Pagina openen om lijst aan te maken
StrafstudiesToolStripMenuItem1
Click
Pagina openen om lijst aan te maken
AfdrukkenToolStripMenuItem
Click
Pagina openen om lijsten af te printen
LeerlingenInformatieToolStripMenuItem
Click
Pagina openen om leerlingeninformatie te wijzigen
GebruikersToolStripMenuItem
Click
Pagina openen om gebruikersinformatie te wijzigen
GIP 2009 – 2010 44
frmBasis
Load
Formulier laden met het inlogscherm. Vooraf wordt het splashscreen getoond
Implementatie Imports System.Threading Public Class frmBasis Dim intStart As Integer Private Sub InloggenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InloggenToolStripMenuItem.Click 'Alle formulieren sluiten AlleFormulierenSluiten() 'Formulier openen in container frmInloggen.WindowState = FormWindowState.Maximized frmInloggen.MdiParent = Me frmInloggen.Show() End Sub Private Sub UitloggenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UitloggenToolStripMenuItem.Click 'Alle formulieren sluiten AlleFormulierenSluiten() 'Gebruiker Afmelden 'Alle formulieren afsluiten AlleFormulierenSluiten() 'Knoppen ontoegankelijk KnoppenOntoegankelijk() 'Formulier weergeven frmInloggen.WindowState = FormWindowState.Maximized frmInloggen.MdiParent = Me frmInloggen.Show() End Sub Private Sub AfsluitenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AfsluitenToolStripMenuItem.Click 'bevestiging vragen aan de gebruiker If MsgBox("Weet uw zeker dat u wil afsluiten?", MsgBoxStyle.YesNo, "Afsluiten") = MsgBoxResult.Yes Then Me.Close() End If End Sub Private Sub StartToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuStart.Click
GIP 2009 â&#x20AC;&#x201C; 2010 45
'Alle formulieren sluiten AlleFormulierenSluiten() 'Formulier openen in container frmInscannen.WindowState = FormWindowState.Maximized frmInscannen.MdiParent = Me frmInscannen.Show() End Sub Private Sub VolledigeDagToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'Alle formulieren sluiten AlleFormulierenSluiten() 'Formulier openen in container frmAfdrukkenDag.WindowState = FormWindowState.Maximized frmAfdrukkenDag.MdiParent = Me frmAfdrukkenDag.Show() End Sub Private Sub SMorgensToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'Alle formulieren sluiten AlleFormulierenSluiten() 'Formulier openen in container frmAfdrukkenVoormiddag.WindowState = FormWindowState.Maximized frmAfdrukkenVoormiddag.MdiParent = Me frmAfdrukkenVoormiddag.Show() End Sub Private Sub SMiddagsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'Alle formulieren sluiten AlleFormulierenSluiten() 'Formulier openen in container frmAfdrukkenNamiddag.WindowState = FormWindowState.Maximized frmAfdrukkenNamiddag.MdiParent = Me frmAfdrukkenNamiddag.Show() End Sub Private Sub Tussen2DatasToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'Alle formulieren sluiten AlleFormulierenSluiten() 'Formulier openen in container frmAfdrukkenTussen.WindowState = FormWindowState.Maximized frmAfdrukkenTussen.MdiParent = Me frmAfdrukkenTussen.Show() End Sub Private Sub BepaaldeDagToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
GIP 2009 â&#x20AC;&#x201C; 2010 46
'Alle formulieren sluiten AlleFormulierenSluiten() 'Formulier openen in container frmAfdrukkenDag.WindowState = FormWindowState.Maximized frmAfdrukkenDag.MdiParent = Me frmAfdrukkenDag.Show() End Sub Private Sub LeerlingToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'Alle formulieren sluiten AlleFormulierenSluiten() 'Formulier openen in container frmAfdrukkenLeerlingen.WindowState = FormWindowState.Maximized frmAfdrukkenLeerlingen.MdiParent = Me frmAfdrukkenLeerlingen.Show() End Sub Private Sub frmBasis_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Tonen van splashscreen Me.Hide() Me.Visible = False SplashScreen1.Show() SplashScreen1.Update() KnoppenOntoehankelijk() 'Laden van inlogscherm frmInloggen.WindowState = FormWindowState.Maximized frmInloggen.MdiParent = Me frmInloggen.Show() End Sub Private Sub LeerlingenInformatieToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LeerlingenInformatieToolStripMenuItem.Click 'Alle formulieren sluiten AlleFormulierenSluiten() 'Formulier openen in container frmLeerlingWijzigen.WindowState = FormWindowState.Maximized frmLeerlingWijzigen.MdiParent = Me frmLeerlingWijzigen.Show() End Sub Private Sub GebruikersToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GebruikersToolStripMenuItem.Click 'Alle formulieren sluiten AlleFormulierenSluiten() 'Formulier openen in container
GIP 2009 â&#x20AC;&#x201C; 2010 47
frmGebruikersWijzigen.WindowState = FormWindowState.Maximized frmGebruikersWijzigen.MdiParent = Me frmGebruikersWijzigen.Show() End Sub Private Sub StartScannenVoor8UurToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StartScannenVoor8UurToolStripMenuItem.Click 'Alle formulieren sluiten AlleFormulierenSluiten() 'Formulier openen in container frmScannenVoor8Uur.WindowState = FormWindowState.Maximized frmScannenVoor8Uur.MdiParent = Me frmScannenVoor8Uur.Show() End Sub Private Sub VoorOchtendToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VoorOchtendToolStripMenuItem.Click 'Alle formulieren sluiten AlleFormulierenSluiten() 'Formulier openen in container frmVoor8Uur.WindowState = FormWindowState.Maximized frmVoor8Uur.MdiParent = Me frmVoor8Uur.Show() End Sub Private Sub StrafstudiesToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StrafstudiesToolStripMenuItem1.Click 'Alle formulieren sluiten AlleFormulierenSluiten() 'Formulier openen in container frmStrafstudies.WindowState = FormWindowState.Maximized frmStrafstudies.MdiParent = Me frmStrafstudies.Show() End Sub Private Sub VoorMiddagToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VoorMiddagToolStripMenuItem.Click 'Alle formulieren sluiten AlleFormulierenSluiten() 'Formulier openen in container frmBlijvenOverMiddag.WindowState = FormWindowState.Maximized frmBlijvenOverMiddag.MdiParent = Me frmBlijvenOverMiddag.Show() End Sub Private Sub AlleFormulierenSluiten() 'Alle Formulieren sluiten
GIP 2009 â&#x20AC;&#x201C; 2010 48
frmAfdrukken.Close() frmAfdrukkenDag.Close() frmAfdrukkenDatum.Close() frmAfdrukkenLeerlingen.Close() frmAfdrukkenNamiddag.Close() frmAfdrukkenSelecteer.Close() frmAfdrukkenTussen.Close() frmAfdrukkenVoormiddag.Close() frmBlijvenOverMiddag.Close() frmGebruikersWijzigen.Close() frmInloggen.Close() frmInscannen.Close() frmLeerlingWijzigen.Close() frmScannenVoor8Uur.Close() frmStrafstudies.Close() frmVoor8Uur.Close() End Sub Private Sub KnoppenOntoegankelijk() 'Alle items ontoegankelijk StartToolStripMenuItem.Enabled = True InloggenToolStripMenuItem.Enabled = True UitloggenToolStripMenuItem.Enabled = False AdministratieToolStripMenuItem.Enabled = False AfdrukkenToolStripMenuItem.Enabled = False LeerlingenInformatieToolStripMenuItem.Enabled = False GebruikersToolStripMenuItem.Enabled = False End Sub Private Sub AfdrukkenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AfdrukkenToolStripMenuItem.Click 'Alle formulieren sluiten AlleFormulierenSluiten() 'Formulier openen in container frmAfdrukken.WindowState = FormWindowState.Maximized frmAfdrukken.MdiParent = Me frmAfdrukken.Show() End Sub End Class
GIP 2009 â&#x20AC;&#x201C; 2010 49
4.3.3
frmInloggen.vb
Project
Telaatkomers
Type
Windows applicatie
Doel
Gebruikers kunnen hier inloggen
Printscreen
Besturingselementen Object
Eigenschap
Waarde
frmInloggen
Text
Aanmeldscherm
Topmost
True
BackgroundImage
prjTeLaatKomers.My.Resources.Resources.achtergrond
Icon
Icon
picLogo
Images
System.Drawing.Bitmap
lblNaam
Text
Gebruikersnaam:
lblWachtwoord
Text
Wachtwoord:
txtGebruikersnaam
GIP 2009 â&#x20AC;&#x201C; 2010 50
txtWachtwoord
PasswordChar
*
btnInloggen
Text
Aanmelden
btnAfsluiten
Text
Afsluiten
Bedoeling: Dit formulier zorgt ervoor dat enkel de bevoegde personen kunnen werken met dit programma. Procedures Object
Gebeurtenis
Doel
btnInloggen
Click
Controleren van inloggegevens + inloggen indien correct, anders foutmelding tonen
btnAfsluiten
Click
Het programma afsluiten
Implementatie Public Class frmInloggen Private Sub btnAfsluiten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAfsluiten.Click 'programma aflsuiten Me.Close() frmBasis.Close() End Sub Private Sub btnInloggen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInloggen.Click inlogprocedure() End Sub Private Sub inlogprocedure() 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdGebruikers As New SqlClient.SqlCommand Dim sdrGebruikers As SqlClient.SqlDataReader 'connectie initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers scmdGebruikers.Connection = cnnLaatkomers 'opmaak van sql instructie Dim strSQL As String strSQL = "select gebruikersnaam, wachtwoord, rechten from tbltelaatgebruikers" scmdGebruikers.CommandText = strSQL 'connectie met database openen Try cnnLaatkomers.Open() sdrGebruikers = scmdGebruikers.ExecuteReader 'controleren of de gebruikersnaam bestaat
GIP 2009 â&#x20AC;&#x201C; 2010 51
Do While sdrGebruikers.Read = True If txtGebruikersnaam.Text = sdrGebruikers.Item("Gebruikersnaam") And txtWachtwoord.Text = sdrGebruikers.Item("Wachtwoord") Then If sdrGebruikers.Item("Rechten") = "1" Then 'Knoppen KnoppenToegankelijkAdministrator() 'Naam weergeven in balk frmBasis.lblGebruikersnaam.Text = "Welkom " & txtGebruikersnaam.Text 'Formulier sluiten Me.Close() Else 'Knoppen KnoppenToegankelijkGebruiker() 'Naam weergeven in balk frmBasis.lblGebruikersnaam.Text = "Welkom " & txtGebruikersnaam.Text 'Formulier sluiten Me.Close() End If Else 'bij fout antwoord --> niet aanmelden lblFout.Text = " U kan niet aangemeld worden" & vbCrLf & "geef het juiste wachtwoord en gebruikersnaam op" End If Loop Catch ex As Exception MessageBox.Show("Er is een fout opgetreden bij het inloggen", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try 'connectie sluiten cnnLaatkomers.Close() 'Plaatsen van focus + leegmaken van wachtwoord txtWachtwoord.Text = String.Empty txtWachtwoord.Focus() End Sub Private Sub KnoppenToegankelijkAdministrator() 'Alle items wijzigen frmBasis.InloggenToolStripMenuItem.Enabled = False frmBasis.StartToolStripMenuItem.Enabled = True frmBasis.UitloggenToolStripMenuItem.Enabled = True frmBasis.AdministratieToolStripMenuItem.Enabled = True frmBasis.AfdrukkenToolStripMenuItem.Enabled = True frmBasis.LeerlingenInformatieToolStripMenuItem.Enabled = True frmBasis.GebruikersToolStripMenuItem.Enabled = True End Sub Private Sub KnoppenToegankelijkGebruiker() 'Alle items wijzigen frmBasis.InloggenToolStripMenuItem.Enabled = False frmBasis.StartToolStripMenuItem.Enabled = True frmBasis.UitloggenToolStripMenuItem.Enabled = True frmBasis.AdministratieToolStripMenuItem.Enabled = True frmBasis.AfdrukkenToolStripMenuItem.Enabled = True
GIP 2009 â&#x20AC;&#x201C; 2010 52
frmBasis.LeerlingenInformatieToolStripMenuItem.Enabled = True frmBasis.GebruikersToolStripMenuItem.Enabled = False End Sub Private Sub frmInloggen_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Focus plaatsen op tekstvak txtGebruikersnaam.Focus() End Sub Private Sub txtWachtwoord_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtWachtwoord.KeyDown 'als je op enter of numpad enter drukt --> procedure uitvoeren If e.KeyValue = 13 Then inlogprocedure() End If End Sub End Class
GIP 2009 â&#x20AC;&#x201C; 2010 53
4.3.4
frmInscannen.vb
Project
Telaatkomers
Type
Windows applicatie
Doel
Het formulier waar een leerling wordt ingescand en zo in de database wordt geplaatst als te laat.
Printscreen
Besturingselementen Object
Eigenschap
Waarde
frmInscannen
Text
Leerling inscannen
BackgroundImage prjTeLaatKomers.My.Resources.Resources.achtergrond Icon
Icon
lblCode
Text
Barcodenummer:
txtCode
TextAllign
Center
Text
Vervoer:
cboLeerlingen lblVervoer cboVervoer
GIP 2009 â&#x20AC;&#x201C; 2010 54
lblAgenda
Text
Agenda bij:
lblReden
Text
Reden:
txtReden
Multiline
True
lblOpmerking
Text
Opmerking:
txtOpmerking
Multiline
True
btnZoeken
BackgroundImage System.Drawing.Bitmap
btnToevoegen
BackgroundImage System.Drawing.Bitmap
cboAgenda
Bedoeling: De barcode van de leerling weergeven na het inscannen. Het is mogelijk om de reden op te geven. Procedures Object
Gebeurtenis
Doel
frmInscannen
Load
Gegevens van formulier laden met de inhoud
btnZoeken
Click
Zoekopdracht starten naar leerling
cboLeerlingen
SelectedIndexChanged
Bij leerlingen met dezelfde naam wordt dit geopend, daarna dient men een leerling te kiezen om de lijst aan te maken.
btnToevoegen
Click
Gegevens toevoegen
Implementatie Public Class frmInscannen 'Declareren over volledig formulier Dim strVoornaam, strFamilienaam As String Private Sub frmInscannen_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdVervoer As New SqlClient.SqlCommand Dim dteVervoer As SqlClient.SqlDataReader Dim strCommand As String
GIP 2009 â&#x20AC;&#x201C; 2010 55
'cboLeerlingen niet weergeven cboLeerlingen.Visible = False 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dteVervoer initialiseren scmdVervoer.Connection = cnnLaatkomers strCommand = "SELECT VervoerID, Vervoer FROM gebruiker.tblTeLaatVervoer" scmdVervoer.CommandText = strCommand Try 'Lezen van reader cnnLaatkomers.Open() dteVervoer = scmdVervoer.ExecuteReader Do While dteVervoer.Read = True cboVervoer.Items.Add(dteVervoer.Item("Vervoer")) Loop 'Connection sluiten cnnLaatkomers.Close() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try 'Standaard plaatsen cboVervoer.Text = "Selecteer" 'CboAgenda opvullen cboAgenda.Items.Add("Ja") cboAgenda.Items.Add("Neen") cboAgenda.Text = "Ja" 'Focus plaatsen in tekstvak txtCode.Focus() End Sub Private Sub cboLeerlingen_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboLeerlingen.SelectedIndexChanged 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdOpvragen As New SqlClient.SqlCommand Dim strCommand As String Dim strBarcode As String = String.Empty Dim dteLeerlingen As SqlClient.SqlDataReader Dim strKlas As String = String.Empty 'strKlas initialiseren strKlas = Split(cboLeerlingen.SelectedItem.ToString, " ")(2) 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers
GIP 2009 â&#x20AC;&#x201C; 2010 56
'dteVervoer initialiseren scmdOpvragen.Connection = cnnLaatkomers strCommand = "SELECT Voornaam, Familienaam , Klas, Barcode" strCommand &= " FROM tblTeLaatLeerling" strCommand &= " WHERE (Voornaam = N'" & strVoornaam & "') AND (Familienaam = N'" & strFamilienaam & "')AND (Klas = N'" & strKlas & "')" scmdOpvragen.CommandText = strCommand Try 'Connection openen + uitvoeren cnnLaatkomers.Open() dteLeerlingen = scmdOpvragen.ExecuteReader() Do While dteLeerlingen.Read = True strBarcode = dteLeerlingen.Item("Barcode") Loop 'Datareader sluiten dteLeerlingen.Close() 'Connectie sluiten cnnLaatkomers.Close() 'txtCode opvullen txtCode.Text = strBarcode 'cboLeerlingen cboLeerlingen.Visible = False cboLeerlingen.Items.Clear() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub Private Sub btnZoeken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnZoeken.Click 'Verwijderen van vorige resultaten cboLeerlingen.Items.Clear() txtCode.Text = String.Empty 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdOpvragen As New SqlClient.SqlCommand Dim strCommand, strNaam As String Dim strBarcode As String = String.Empty Dim dteLeerlingen As SqlClient.SqlDataReader 'Initialiseren strVoornaam = InputBox("Voornaam van de leerling", "Zoeken van leerling") strFamilienaam = InputBox("Familienaam van de leerling", "Zoeken van leerling") 'Cnn initialiseren
GIP 2009 â&#x20AC;&#x201C; 2010 57
cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dteVervoer initialiseren scmdOpvragen.Connection = cnnLaatkomers strCommand = "SELECT Voornaam, Familienaam , Klas, Barcode" strCommand &= " FROM tblTeLaatLeerling" strCommand &= " WHERE (Voornaam = N'" & strVoornaam & "') AND (Familienaam = N'" & strFamilienaam & "')" scmdOpvragen.CommandText = strCommand Try 'Connection openen + uitvoeren cnnLaatkomers.Open() dteLeerlingen = scmdOpvragen.ExecuteReader() Do While dteLeerlingen.Read = True strNaam = dteLeerlingen.Item("Voornaam") & " " & dteLeerlingen.Item("Familienaam") & " " & dteLeerlingen.Item("Klas") cboLeerlingen.Items.Add(strNaam) strBarcode = dteLeerlingen.Item("Barcode") Loop 'Datareader sluiten dteLeerlingen.Close() 'Connectie sluiten cnnLaatkomers.Close() 'Controleren van hoeveelheid antwoorden Select Case cboLeerlingen.Items.Count Case 0 MessageBox.Show("Leerling is niet gevonden", "Niet gevonden", MessageBoxButtons.OK) 'Cbo niet weergeven cboLeerlingen.Visible = False Case 1 cboLeerlingen.Text = cboLeerlingen.Items(0) txtCode.Text = strBarcode 'Cbo niet weergeven + clear cboLeerlingen.Visible = False cboLeerlingen.Items.Clear() cboLeerlingen.Text = String.Empty cboVervoer.Focus() Case Else 'Cbo weergeven cboLeerlingen.Visible = True cboLeerlingen.Text = "Selecteer" cboLeerlingen.Focus() End Select Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub Private Sub btnToevoegen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnToevoegen.Click
GIP 2009 â&#x20AC;&#x201C; 2010 58
'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdToevoegen As New SqlClient.SqlCommand Dim scmdTotaalTeLaatWijzigen As New SqlClient.SqlCommand Dim strCommand As String Dim strCommandW As String 'Declareren van antwoorden voor de tabel Dim strBarcode, strOchtend, strMiddag, strTijd, strReden, strAgenda, strOpmerking, strVervoerID As String 'Initialiseren van strings strBarcode = txtCode.Text strTijd = Now.ToShortTimeString strReden = txtReden.Text strAgenda = cboAgenda.SelectedItem strOpmerking = txtOpmerking.Text strVervoerID = cboVervoer.SelectedItem 'Declareren voor datum Dim strDag, strMaand, strJaar, strDatum As String strDag = Now.Day strMaand = Now.Month strJaar = Now.Year strDatum = strMaand & "/" & strDag & "/" & strJaar 'Controleren of er een barcode is ingevuld If strBarcode.Length < 16 Then MessageBox.Show("U moet eerst een barcode inscannen", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) 'Sluiten van sub txtCode.Focus() Exit Sub End If 'Controleren op reden If strReden = String.Empty Then If MessageBox.Show("Weet u zeker dat u geen reden wilt opgeven", "Informatie", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.No Then 'Sluiten van sub txtReden.Focus() Exit Sub End If End If 'strAgenda Select Case strAgenda Case "Ja" strAgenda = 1 Case "Neen" strAgenda = 0 Case Else
GIP 2009 â&#x20AC;&#x201C; 2010 59
MessageBox.Show("Foutieve ingave bij agenda", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Select 'strVervoer Select Case strVervoerID Case "Auto" strVervoerID = "1" Case "Bus" strVervoerID = "2" Case "Fiets" strVervoerID = "3" Case "Metro" strVervoerID = "4" Case "Tevoet" strVervoerID = "5" Case "Tram" strVervoerID = "6" Case "Trein" strVervoerID = "7" Case Else MessageBox.Show("Foutieve ingave bij vervoer", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Select 'strBarcode bekijken If Not IsNumeric(strBarcode) Then MessageBox.Show("Foutieve ingave bij barcode", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If 'strOchtend is voor 12uur + omgekeerd If Now.Hour.ToString < 12 Then strOchtend = 1 strMiddag = 0 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dteVervoer initialiseren scmdToevoegen.Connection = cnnLaatkomers strCommand = "INSERT INTO tblTeLaatLogboek" strCommand &= "(Barcode, Datum, Ochtend, Middag, Tijd, Reden, Agenda, Opmerking, VervoerID)" strCommand &= "VALUES (N'" & strBarcode & "','" & strDatum & "', N'" & strOchtend & "', N'" & strMiddag & "', N'" & strTijd & "', N'" & strReden & "', N'" & strAgenda & "', N'" & strOpmerking & "', " & strVervoerID & ")" scmdToevoegen.CommandText = strCommand scmdTotaalTeLaatWijzigen.Connection = cnnLaatkomers strCommandW = "UPDATE tblTeLaatLeerling "
GIP 2009 â&#x20AC;&#x201C; 2010 60
strCommandW &= "SET smorgens = smorgens + 1, AantalvrOchtend = AantalvrOchtend + 1 " strCommandW &= "WHERE (Barcode = N'" & strBarcode & "')" scmdTotaalTeLaatWijzigen.CommandText = strCommandW Try 'Connection openen + uitvoeren cnnLaatkomers.Open() scmdToevoegen.ExecuteNonQuery() scmdTotaalTeLaatWijzigen.ExecuteNonQuery() 'Connectie sluiten cnnLaatkomers.Close() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try Else strOchtend = 0 strMiddag = 1 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dteVervoer initialiseren scmdToevoegen.Connection = cnnLaatkomers strCommand = "INSERT INTO tblTeLaatLogboek" strCommand &= "(Barcode, Datum, Ochtend, Middag, Tijd, Reden, Agenda, Opmerking, VervoerID)" strCommand &= "VALUES (N'" & strBarcode & "','" & strDatum & "', N'" & strOchtend & "', N'" & strMiddag & "', N'" & strTijd & "', N'" & strReden & "', N'" & strAgenda & "', N'" & strOpmerking & "', " & strVervoerID & ")" scmdToevoegen.CommandText = strCommand scmdTotaalTeLaatWijzigen.Connection = cnnLaatkomers strCommandW = "UPDATE tblTeLaatLeerling " strCommandW &= "SET smiddags = smiddags + 1, AantalvrMiddag = AantalvrMiddag + 1 " strCommandW &= "WHERE (Barcode = N'" & strBarcode & "')" scmdTotaalTeLaatWijzigen.CommandText = strCommandW Try 'Connection openen + uitvoeren cnnLaatkomers.Open() scmdToevoegen.ExecuteNonQuery() scmdTotaalTeLaatWijzigen.ExecuteNonQuery() 'Connectie sluiten cnnLaatkomers.Close() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End If
GIP 2009 â&#x20AC;&#x201C; 2010 61
'Focus terugplaatsen + tekstvakken leegmaken txtCode.Text = String.Empty cboVervoer.Text = "Selecteer" cboAgenda.Text = "Ja" txtReden.Text = String.Empty txtOpmerking.Text = String.Empty txtCode.Focus() End Sub End Class
GIP 2009 â&#x20AC;&#x201C; 2010 62
4.3.5
frmScannenVoor8Uur.vb
Project
Telaatkomers
Type
Windows applicatie
Doel
Het formulier waar een leerling wordt ingescand die voor 8uur aanwezig moet zijn op school.
Printscreen
Besturingselementen Object
Eigenschap
Waarde
frmScannenVoor8Uur
Text
Scannen voor 8 Uur
BackgroundImage prjTeLaatKomers.My.Resources.Resources.achtergrond Icon
Icon
lblCode
Text
Barcodenummer:
txtCode
TextAllign
Center
Text
Op Tijd:
cboLeerlingen lblOpTijd cboOptijd
GIP 2009 â&#x20AC;&#x201C; 2010 63
lblOpmerking
Text
Opmerking:
txtOpmerking
Multiline
True
btnZoeken
BackgroundImage System.Drawing.Bitmap
btnToevoegen
BackgroundImage System.Drawing.Bitmap
Bedoeling: De barcode van de leerling weergeven na het inscannen. Het is mogelijk om de reden op te geven. Dit formulier wordt gebruikt voor leerlingen die voor 8 uur aanwezig moeten zijn. Procedures Object
Gebeurtenis
Doel
frmScannenVoor8Uur
Load
Gegevens in formulier laden
btnToevoegen
Click
Gegevens aanpassen net als de procedure
btnZoeken
Click
Zoekopdracht starten naar leerling
cboLeerlingen
SelectedIndexChanged
Bij leerlingen met dezelfde naam wordt dit geopend, daarna dient men een leerling te kiezen om de lijst aan te maken.
Implementatie Public Class frmScannenVoor8Uur Private Sub frmScannenVoor8Uur_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Focus plaatsen in tekstvak txtCode.Focus() cboLeerlingen.Visible = False 'Items plaatsen in cbo cboOptijd.Items.Add("Ja") cboOptijd.Items.Add("Nee") If Now.Hour < 8 Then cboOptijd.Text = "Ja" Else cboOptijd.Text = "Nee" End If
GIP 2009 â&#x20AC;&#x201C; 2010 64
End Sub Private Sub btnZoeken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnZoeken.Click 'Verwijderen van vorige resultaten cboLeerlingen.Items.Clear() txtCode.Text = String.Empty 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdOpvragen As New SqlClient.SqlCommand Dim strCommand, strNaam As String Dim strBarcode As String = String.Empty Dim dteLeerlingen As SqlClient.SqlDataReader Dim strVoornaam, strFamilienaam As String 'Initialiseren strVoornaam = InputBox("Voornaam van de leerling", "Zoeken van leerling") strFamilienaam = InputBox("Familienaam van de leerling", "Zoeken van leerling") 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dteVervoer initialiseren scmdOpvragen.Connection = cnnLaatkomers strCommand = "SELECT Voornaam, Familienaam , Klas, Barcode" strCommand &= " FROM tblTeLaatLeerling" strCommand &= " WHERE (Voornaam = N'" & strVoornaam & "') AND (Familienaam = N'" & strFamilienaam & "')" scmdOpvragen.CommandText = strCommand Try 'Connection openen + uitvoeren cnnLaatkomers.Open() dteLeerlingen = scmdOpvragen.ExecuteReader() Do While dteLeerlingen.Read = True strNaam = dteLeerlingen.Item("Voornaam") & " " & dteLeerlingen.Item("Familienaam") & " " & dteLeerlingen.Item("Klas") cboLeerlingen.Items.Add(strNaam) strBarcode = dteLeerlingen.Item("Barcode") Loop 'Datareader sluiten dteLeerlingen.Close() 'Connectie sluiten cnnLaatkomers.Close() 'Controleren van hoeveelheid antwoorden Select Case cboLeerlingen.Items.Count Case 0 MessageBox.Show("Leerling is niet gevonden", "Niet gevonden", MessageBoxButtons.OK)
GIP 2009 â&#x20AC;&#x201C; 2010 65
'Cbo niet weergeven cboLeerlingen.Visible = False Case 1 cboLeerlingen.Text = cboLeerlingen.Items(0) txtCode.Text = strBarcode 'Cbo niet weergeven + clear cboLeerlingen.Visible = False cboLeerlingen.Items.Clear() cboLeerlingen.Text = "Selecteer" Case Else 'Cbo weergeven cboLeerlingen.Visible = True End Select Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub Private Sub btnToevoegen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnToevoegen.Click 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdToevoegen As New SqlClient.SqlCommand Dim strCommand As String Dim strAanwezig As String = String.Empty Dim strOpmerking As String = String.Empty 'Declareren van antwoorden voor de tabel Dim strBarcode As String 'Initialiseren van strings strBarcode = txtCode.Text 'strOpmerking = 'Declareren voor datum Dim strDag, strMaand, strJaar, strDatum As String strDag = Now.Day strMaand = Now.Month strJaar = Now.Year strDatum = strMaand & "/" & strDag & "/" & strJaar 'Controleren of er een barcode is ingevuld If strBarcode.Length < 16 Then MessageBox.Show("U moet eerst een barcode inscannen", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) 'Sluiten van sub txtCode.Focus() Exit Sub End If 'strAanwezig initialiseren strAanwezig = cboOptijd.Text MsgBox(strAanwezig)
GIP 2009 â&#x20AC;&#x201C; 2010 66
If strAanwezig = "Ja" Then strAanwezig = "1" Else strAanwezig = "0" End If 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dteVervoer initialiseren scmdToevoegen.Connection = cnnLaatkomers strCommand = "INSERT INTO tblTeLaatOchtend" strCommand &= "(Barcode, Datum, Aanwezig, Opmerking)" strCommand &= " VALUES (N'" & strBarcode & "','" & strDatum & "', N'" & strAanwezig & "', N'" & strOpmerking & "')" scmdToevoegen.CommandText = strCommand Try 'Connection openen + uitvoeren cnnLaatkomers.Open() scmdToevoegen.ExecuteNonQuery() 'Connectie sluiten cnnLaatkomers.Close() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try 'Focus terugplaatsen + tekstvakken leegmaken txtCode.Text = String.Empty 'Terug controleren van tijd If Now.Hour < 8 Then cboOptijd.Text = "Ja" Else cboOptijd.Text = "Nee" End If txtOpmerking.Text = String.Empty txtCode.Focus() End Sub End Class
GIP 2009 â&#x20AC;&#x201C; 2010 67
4.3.6
frmVoor8Uur.vb
Project
Telaatkomers
Type
Windows applicatie
Doel
Formulier waar lijsten kunnen worden afgeprint voor leerlingen die voor 8uur op school aanwezig moeten zijn.
Printscreen
Besturingselementen Object
Eigenschap
Waarde
frmVoor8Uur
Text
Lijst voor 8 uur
BackgroundImage prjTeLaatKomers.My.Resources.Resources.achtergrond Icon
Icon
btnToevoegen
BackgroundImage System.Drawing.Bitmap
btnPrinten
BackgroundImage System.Drawing.Bitmap
btnAfdrukvoorbeeld
BackgroundImage System.Drawing.Bitmap
btnLijstVerwijderen
BackgroundImage System.Drawing.Bitmap
lsvLijst
View
Details
GIP 2009 â&#x20AC;&#x201C; 2010 68
Bedoeling: Leerlingen worden toegevoegd die voor 8uur aanwezig moeten zijn. Deze lijst kan ook worden afgeprint. Procedures Object
Gebeurtenis
Doel
btnToevoegen
Click
Gegevens aanpassen net als de procedure
btnPrinten
Click
Lijst afprinten
btnAfdrukvoorbeeld
Click
Afdrukvoorbeeld openen van lijst
btnVerwijderen
Click
Gegevens aanpassen net als de procedure
Implementatie Public Class frmVoor8Uur #Region "Print related declarations" Protected WithEvents pd As Printing.PrintDocument 'used by Print sub Protected Ratio As Single = 0, CurrRow As Integer = 0 #End Region Private Sub frmVoor8Uur_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load lsvLijst.Columns.Add("Naam en Voornaam", 175, HorizontalAlignment.Left) lsvLijst.Columns.Add("Klas", 65, HorizontalAlignment.Left) End Sub Private Sub PrintPreviewDialog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintPreviewDialog.Load PrintPreviewDialog.WindowState = FormWindowState.Maximized End Sub Private Sub PrintDocument_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument.PrintPage Dim g As Graphics = e.Graphics Dim l As Integer = 100 'Marge van de linkerkant van de pagina Dim iCount As Integer Dim f As Font = lsvLijst.Font Dim b As Brush = Brushes.Black
GIP 2009 â&#x20AC;&#x201C; 2010 69
'Tussen de hoofdtitel en de records Dim currentY As Integer = 0 Dim maxY As Integer = 0 'Declareren van lijntjes tussen elk record Dim gap As Integer = 1 'Declareren voor de items uit de listview te halen Dim lvsi As ListViewItem.ListViewSubItem 'Declareren van kolommen Dim colLefts(lsvLijst.Columns.Count) As Integer Dim colWidths(lsvLijst.Columns.Count) As Integer Dim idx As Integer = 0 Dim ii As Integer Dim lr As RectangleF e.HasMorePages = False 'Title Dim headfont As Font 'Marges (X = links, y= boven) Dim X As Integer = 250 Dim Y As Integer = 50 headfont = New Font("Courier New", 16, FontStyle.Bold) e.Graphics.DrawString("Leerlingen Voor 8 Uur", headfont, Brushes.Black, X, Y) 'Headings 'Marge bovenaan de pagina currentY = 100 For Each c In lsvLijst.Columns maxY = Math.Max(maxY, g.MeasureString(c.Text, f, c.Width).Height) colLefts(idx) = l colWidths(idx) = c.Width lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY) 'g.DrawString(c.Text, f, b, lr) ' print all columns including hidden columns If lr.Width > 0 Then g.DrawString(c.Text, f, b, lr) l += c.Width idx += 1 Next currentY += maxY + gap g.DrawLine(Pens.Black, 0, currentY, e.PageBounds.Width, currentY) currentY += gap 'Rows iCount = lsvLijst.Items.Count - 1 For ii = CurrRow To iCount If (currentY + maxY + maxY) > e.PageBounds.Height - 50 Then 'jump down another line to see if this line will fit CurrRow = ii - 1 e.HasMorePages = True Exit For 'does next page End If l = 0 maxY = 0 idx = 0
GIP 2009 â&#x20AC;&#x201C; 2010 70
For Each lvsi In lsvLijst.Items(ii).SubItems maxY = Math.Max(maxY, g.MeasureString(lvsi.Text, f, colWidths(idx)).Height) lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY) 'g.DrawString(lvsi.Text, f, b, lr) If lr.Width > 0 Then g.DrawString(lvsi.Text, f, b, lr) idx += 1 Next currentY += maxY + gap Next End Sub Private Sub btnToevoegen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnToevoegen.Click 'LsvLijst Leegmaken lsvLijst.Items.Clear() 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdVoor8Uur As New SqlClient.SqlCommand Dim strCommandVoor8Uur As String Dim dteVoor8Uur As SqlClient.SqlDataReader 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dte initialiseren scmdVoor8Uur.Connection = cnnLaatkomers strCommandVoor8Uur = "SELECT Barcode, Voornaam, Familienaam, Klas, AantalvrOchtend " strCommandVoor8Uur &= "FROM tblTeLaatLeerling" scmdVoor8Uur.CommandText = strCommandVoor8Uur Try 'Connection openen + uitvoeren cnnLaatkomers.Open() dteVoor8Uur = scmdVoor8Uur.ExecuteReader() Do While dteVoor8Uur.Read 'Declareren voor antwoord Dim strInput As String strInput = dteVoor8Uur.Item("Voornaam") & " " & dteVoor8Uur.Item("Familienaam") & vbTab & vbTab & dteVoor8Uur.Item("Klas") 'Controleren op strafstudies Dim intAantal As Integer intAantal = dteVoor8Uur.Item("AantalvrOchtend") 'Controleren of de persoon al meer dan 3x te laat was If intAantal >= 3 Then 'Toevoegen in listview Dim Inhoud(1) As String
GIP 2009 â&#x20AC;&#x201C; 2010 71
Dim LVI As ListViewItem Inhoud(0) = dteVoor8Uur.Item("Voornaam") & " " & dteVoor8Uur.Item("Familienaam") Inhoud(1) = dteVoor8Uur.Item("Klas") LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) End If Loop 'Conroleren op inhoud If lsvLijst.Items.Count = 0 Then Dim Inhoud As String Dim LVI As ListViewItem Inhoud = "Geen leerlingen gevonden" LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) End If 'Connectie sluiten cnnLaatkomers.Close() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub Private Sub btnAfdrukvoorbeeld_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAfdrukvoorbeeld.Click PrintPreviewDialog.Document = PrintDocument PrintPreviewDialog.ShowDialog() End Sub Private Sub btnPrinten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrinten.Click 'Keuzemogelijkheid voor pagina's PrintDialog1.AllowSomePages = True ' Show the help button. PrintDialog1.ShowHelp = True 'Document dat moet worden afgeprint PrintDialog1.Document = PrintDocument 'Afprinten door dialoogvenster Dim result As DialogResult = PrintDialog1.ShowDialog() 'Ok dan printen If (result = DialogResult.OK) Then PrintDocument.Print() End If End Sub Private Sub btnLijstVerwijderen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLijstVerwijderen.Click 'Declareren van integer voor antwoord
GIP 2009 â&#x20AC;&#x201C; 2010 72
Dim intAntwoord As Integer intAntwoord = MessageBox.Show("Weet u zeker dat u de gegevens wilt verwijderen uit de tabel?" & vbCrLf & vbCrLf & "Dit kan niet meer ongedaan gemaakt worden!", "Opgepast", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) 'Controleren If intAntwoord = 6 Then Try 'Antwoord JA 'Alle leerlingen op 0 plaatsen die in de lijst voorkomen 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdVerwijderen As New SqlClient.SqlCommand Dim strVerwijderen As String 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dte initialiseren scmdVerwijderen.Connection = cnnLaatkomers strVerwijderen = "UPDATE tblTeLaatLeerling " strVerwijderen &= "SET AantalvrOchtend = 0 " strVerwijderen &= "WHERE (AantalvrOchtend >= 3)" scmdVerwijderen.CommandText = strVerwijderen 'Connection openen + uitvoeren cnnLaatkomers.Open() scmdVerwijderen.ExecuteNonQuery() 'Connectie sluiten cnnLaatkomers.Close() 'Listview leegmaken + invoegen lsvLijst.Items.Clear() Dim Inhoud As String Dim LVI As ListViewItem Inhoud = "Geen leerlingen gevonden" LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try Else MessageBox.Show("Geannuleerd door gebruiker", "Annulatie", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End Sub End Class
GIP 2009 â&#x20AC;&#x201C; 2010 73
4.3.7
frmBlijvenOverMiddag.vb
Project
Telaatkomers
Type
Windows applicatie
Doel
Formulier waar lijsten kunnen worden afgeprint voor leerlingen die tussen de middag aanwezig moeten zijn.
Printscreen
Besturingselementen Object
Eigenschap
Waarde
frmBlijvenOverMidda g
Text
Lijst blijven tussen de middag
BackgroundImag e Icon
prjTeLaatKomers.My.Resources.Resources.achtergron d Icon
btnToevoegen
BackgroundImag e
System.Drawing.Bitmap
btnPrinten
BackgroundImag e BackgroundImag e
System.Drawing.Bitmap
btnAfdrukvoorbeeld
System.Drawing.Bitmap
GIP 2009 â&#x20AC;&#x201C; 2010 74
btnLijstVerwijderen lsvLijst
BackgroundImag e View
System.Drawing.Bitmap Details
Bedoeling: Leerlingen worden toegevoegd die moeten blijven tussen de middag. Deze lijst kan ook worden afgeprint. Procedures Object
Gebeurtenis
Doel
btnToevoegen
Click
Aanmaken van lijst
btnLijstVerwijderen
Click
Alle leerlingen uit de lijst verwijderen uit de database
btnPrinten
Click
Lijst afprinten
btnAfdrukvoorbeeld
Click
Afdrukvoorbeeld openen van lijst
Implementatie Public Class frmBlijvenOverMiddag #Region "Print related declarations" Protected WithEvents pd As Printing.PrintDocument 'used by Print sub Protected Ratio As Single = 0, CurrRow As Integer = 0 #End Region Private Sub frmBlijvenOverMiddag_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load lsvLijst.Columns.Add("Naam en Voornaam", 175, HorizontalAlignment.Left) lsvLijst.Columns.Add("Klas", 65, HorizontalAlignment.Left) End Sub Private Sub PrintPreviewDialog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintPreviewDialog.Load PrintPreviewDialog.WindowState = FormWindowState.Maximized End Sub Private Sub PrintDocument_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument.PrintPage Dim g As Graphics = e.Graphics
GIP 2009 â&#x20AC;&#x201C; 2010 75
Dim l As Integer = 100 'Marge van de linkerkant van de pagina Dim iCount As Integer Dim f As Font = lsvLijst.Font Dim b As Brush = Brushes.Black 'Tussen de hoofdtitel en de records Dim currentY As Integer = 0 Dim maxY As Integer = 0 'Declareren van lijntjes tussen elk record Dim gap As Integer = 1 'Declareren voor de items uit de listview te halen Dim lvsi As ListViewItem.ListViewSubItem 'Declareren van kolommen Dim colLefts(lsvLijst.Columns.Count) As Integer Dim colWidths(lsvLijst.Columns.Count) As Integer Dim idx As Integer = 0 Dim ii As Integer Dim lr As RectangleF e.HasMorePages = False 'Title Dim headfont As Font 'Marges (X = links, y= boven) Dim X As Integer = 250 Dim Y As Integer = 50 headfont = New Font("Courier New", 16, FontStyle.Bold) e.Graphics.DrawString("Leerlingen Voor 8 Uur", headfont, Brushes.Black, X, Y) 'Headings 'Marge bovenaan de pagina currentY = 100 For Each c In lsvLijst.Columns maxY = Math.Max(maxY, g.MeasureString(c.Text, f, c.Width).Height) colLefts(idx) = l colWidths(idx) = c.Width lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY) 'g.DrawString(c.Text, f, b, lr) ' print all columns including hidden columns If lr.Width > 0 Then g.DrawString(c.Text, f, b, lr) l += c.Width idx += 1 Next currentY += maxY + gap g.DrawLine(Pens.Black, 0, currentY, e.PageBounds.Width, currentY) currentY += gap 'Rows iCount = lsvLijst.Items.Count - 1 For ii = CurrRow To iCount If (currentY + maxY + maxY) > e.PageBounds.Height - 50 Then 'jump down another line to see if this line will fit CurrRow = ii - 1 e.HasMorePages = True
GIP 2009 â&#x20AC;&#x201C; 2010 76
Exit For 'does next page End If l = 0 maxY = 0 idx = 0 For Each lvsi In lsvLijst.Items(ii).SubItems maxY = Math.Max(maxY, g.MeasureString(lvsi.Text, f, colWidths(idx)).Height) lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY) 'g.DrawString(lvsi.Text, f, b, lr) If lr.Width > 0 Then g.DrawString(lvsi.Text, f, b, lr) idx += 1 Next currentY += maxY + gap Next End Sub Private Sub btnPrinten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrinten.Click 'Keuzemogelijkheid voor pagina's PrintDialog1.AllowSomePages = True ' Show the help button. PrintDialog1.ShowHelp = True 'Document dat moet worden afgeprint PrintDialog1.Document = PrintDocument 'Afprinten door dialoogvenster Dim result As DialogResult = PrintDialog1.ShowDialog() 'Ok dan printen If (result = DialogResult.OK) Then PrintDocument.Print() End If End Sub Private Sub btnAfdrukvoorbeeld_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAfdrukvoorbeeld.Click PrintPreviewDialog.Document = PrintDocument PrintPreviewDialog.ShowDialog() End Sub Private Sub btnLijstVerwijderen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLijstVerwijderen.Click 'Declareren van integer voor antwoord Dim intAntwoord As Integer intAntwoord = MessageBox.Show("Weet u zeker dat u de gegevens wilt verwijderen uit de tabel?" & vbCrLf & vbCrLf & "Dit kan niet meer ongedaan gemaakt worden!", "Opgepast", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
GIP 2009 â&#x20AC;&#x201C; 2010 77
'Controleren If intAntwoord = 6 Then Try 'Antwoord JA 'Alle leerlingen op 0 plaatsen die in de lijst voorkomen 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdVerwijderen As New SqlClient.SqlCommand Dim strVerwijderen As String 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dte initialiseren scmdVerwijderen.Connection = cnnLaatkomers strVerwijderen = "UPDATE tblTeLaatLeerling " strVerwijderen &= "SET AantalvrMiddag = 0 " strVerwijderen &= "WHERE (AantalvrMiddag >= 3)" scmdVerwijderen.CommandText = strVerwijderen 'Connection openen + uitvoeren cnnLaatkomers.Open() scmdVerwijderen.ExecuteReader() 'Connectie sluiten cnnLaatkomers.Close() 'Listview leegmaken + invoegen lsvLijst.Items.Clear() Dim Inhoud As String Dim LVI As ListViewItem Inhoud = "Geen leerlingen gevonden" LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try Else MessageBox.Show("Geannuleerd door gebruiker", "Annulatie", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End Sub Private Sub btnToevoegen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnToevoegen.Click 'LsvLijst Leegmaken lsvLijst.Items.Clear() 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdVoor8Uur As New SqlClient.SqlCommand Dim strCommandVoor8Uur As String Dim dteVoor8Uur As SqlClient.SqlDataReader
GIP 2009 â&#x20AC;&#x201C; 2010 78
'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dte initialiseren scmdVoor8Uur.Connection = cnnLaatkomers strCommandVoor8Uur = "SELECT Voornaam, Familienaam, Klas, AantalvrMiddag " strCommandVoor8Uur &= "FROM tblTeLaatLeerling" scmdVoor8Uur.CommandText = strCommandVoor8Uur Try 'Connection openen + uitvoeren cnnLaatkomers.Open() dteVoor8Uur = scmdVoor8Uur.ExecuteReader() Do While dteVoor8Uur.Read 'Declareren voor antwoord Dim strInput As String strInput = dteVoor8Uur.Item("Voornaam") & " " & dteVoor8Uur.Item("Familienaam") & vbTab & vbTab & dteVoor8Uur.Item("Klas") 'Controleren op strafstudies Dim intAantal As Integer intAantal = dteVoor8Uur.Item("AantalvrMiddag") 'Controleren of de persoon al meer dan 3x te laat was If intAantal >= 3 Then 'Toevoegen in listview Dim Inhoud(1) As String Dim LVI As ListViewItem Inhoud(0) = dteVoor8Uur.Item("Voornaam") & " " & dteVoor8Uur.Item("Familienaam") Inhoud(1) = dteVoor8Uur.Item("Klas") LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) End If Loop 'Conroleren op inhoud If lsvLijst.Items.Count = 0 Then Dim Inhoud As String Dim LVI As ListViewItem Inhoud = "Geen leerlingen gevonden" LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) End If 'Connectie sluiten cnnLaatkomers.Close() Catch ex As Exception MsgBox(ex) End Try End Sub End Class
GIP 2009 â&#x20AC;&#x201C; 2010 79
4.3.8
frmStrafstudies.vb
Project
Telaatkomers
Type
Windows applicatie
Doel
Formulier waar lijsten kunnen worden afgeprint voor leerlingen die strafstudie hebben.
Printscreen
Besturingselementen Object
Eigenschap
Waarde
frmStrafstudies
Text
Strafstudielijst
BackgroundImage prjTeLaatKomers.My.Resources.Resources.achtergrond Icon
Icon
btnToevoegen
BackgroundImage System.Drawing.Bitmap
btnPrinten
BackgroundImage System.Drawing.Bitmap
btnAfdrukvoorbeeld
BackgroundImage System.Drawing.Bitmap
btnLijstVerwijderen
BackgroundImage System.Drawing.Bitmap
lsvLijst
View
Details
GIP 2009 â&#x20AC;&#x201C; 2010 80
Bedoeling: Leerlingen worden toegevoegd die naar de strafstudie moeten. Deze lijst kan ook worden afgeprint. Procedures Object
Gebeurtenis
Doel
btnToevoegen
Click
Gegevens aanpassen net als de procedure
btnPrinten
Click
Lijst afprinten
btnAfdrukvoorbeeld
Click
Afdrukvoorbeeld openen van lijst
btnVerwijderen
Click
Gegevens aanpassen net als de procedure
Implementatie Public Class frmStrafstudies #Region "Print related declarations" Protected WithEvents pd As Printing.PrintDocument 'used by Print sub Protected Ratio As Single = 0, CurrRow As Integer = 0 #End Region Private Sub frmStrafstudies_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load lsvLijst.Columns.Add("Naam en Voornaam", 175, HorizontalAlignment.Left) lsvLijst.Columns.Add("Klas", 65, HorizontalAlignment.Left) lsvLijst.Columns.Add("Reden", 190, HorizontalAlignment.Left) End Sub Private Sub PrintDocument_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument.PrintPage Dim g As Graphics = e.Graphics Dim l As Integer = 100 'Marge van de linkerkant van de pagina Dim iCount As Integer Dim f As Font = lsvLijst.Font Dim b As Brush = Brushes.Black 'Tussen de hoofdtitel en de records Dim currentY As Integer = 0 Dim maxY As Integer = 0 'Declareren van lijntjes tussen elk record Dim gap As Integer = 1
GIP 2009 â&#x20AC;&#x201C; 2010 81
'Declareren voor de items uit de listview te halen Dim lvsi As ListViewItem.ListViewSubItem 'Declareren van kolommen Dim colLefts(lsvLijst.Columns.Count) As Integer Dim colWidths(lsvLijst.Columns.Count) As Integer Dim idx As Integer = 0 Dim ii As Integer Dim lr As RectangleF e.HasMorePages = False 'Title Dim headfont As Font 'Marges (X = links, y= boven) Dim X As Integer = 230 Dim Y As Integer = 50 headfont = New Font("Courier New", 16, FontStyle.Bold) e.Graphics.DrawString("Leerlingen Voor Strafstudie", headfont, Brushes.Black, X, Y) 'Headings 'Marge bovenaan de pagina currentY = 100 For Each c In lsvLijst.Columns maxY = Math.Max(maxY, g.MeasureString(c.Text, f, c.Width).Height) colLefts(idx) = l colWidths(idx) = c.Width lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY) 'g.DrawString(c.Text, f, b, lr) ' print all columns including hidden columns If lr.Width > 0 Then g.DrawString(c.Text, f, b, lr) l += c.Width idx += 1 Next currentY += maxY + gap g.DrawLine(Pens.Black, 0, currentY, e.PageBounds.Width, currentY) currentY += gap 'Rows iCount = lsvLijst.Items.Count - 1 For ii = CurrRow To iCount If (currentY + maxY + maxY) > e.PageBounds.Height - 50 Then 'jump down another line to see if this line will fit CurrRow = ii - 1 e.HasMorePages = True Exit For 'does next page End If l = 0 maxY = 0 idx = 0 For Each lvsi In lsvLijst.Items(ii).SubItems maxY = Math.Max(maxY, g.MeasureString(lvsi.Text, f, colWidths(idx)).Height) lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY)
GIP 2009 â&#x20AC;&#x201C; 2010 82
'g.DrawString(lvsi.Text, f, b, lr) If lr.Width > 0 Then g.DrawString(lvsi.Text, f, b, lr) idx += 1 Next currentY += maxY + gap Next End Sub Function RemoveDuplicates(ByVal lstView As ListView) As Boolean Dim itemI As ListViewItem Dim itemJ As ListViewItem Dim progress As Integer Dim count As Integer Dim ProgressDupCounter As Integer = lstView.Items.Count For i As Integer = lstView.Items.Count - 1 To 0 Step -1 itemI = lstView.Items(i) progress = progress + 1 ' start one after hence +1 For z As Integer = i + 1 To lstView.Items.Count - 1 Step 1 itemJ = lstView.Items(z) If itemI.Text = itemJ.Text Then 'duplicate found, now delete duplicate lstView.Items.Remove(itemJ) count = count + 1 Exit For End If Next z Next (i) End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click PrintPreviewDialog.Document = PrintDocument PrintPreviewDialog.ShowDialog() End Sub Private Sub btnPrinten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrinten.Click 'Keuzemogelijkheid voor pagina's PrintDialog1.AllowSomePages = True ' Show the help button. PrintDialog1.ShowHelp = True 'Document dat moet worden afgeprint PrintDialog1.Document = PrintDocument 'Afprinten door dialoogvenster Dim result As DialogResult = PrintDialog1.ShowDialog() 'Ok dan printen
GIP 2009 â&#x20AC;&#x201C; 2010 83
If (result = DialogResult.OK) Then PrintDocument.Print() End If End Sub Private Sub btnLijstVerwijderen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLijstVerwijderen.Click 'Declareren van integer voor antwoord Dim intAntwoord As Integer intAntwoord = MessageBox.Show("Weet u zeker dat u de gegevens wilt verwijderen uit de tabel?" & vbCrLf & vbCrLf & "Dit kan niet meer ongedaan gemaakt worden!", "Opgepast", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) 'Controleren If intAntwoord = 6 Then Try 'Antwoord JA 'Alle leerlingen op 0 plaatsen die in de lijst voorkomen 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdVerwijderen As New SqlClient.SqlCommand Dim strVerwijderen As String 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dte initialiseren scmdVerwijderen.Connection = cnnLaatkomers strVerwijderen = "DELETE FROM gebruiker.tblTeLaatOchtend " scmdVerwijderen.CommandText = strVerwijderen 'Connection openen + uitvoeren cnnLaatkomers.Open() scmdVerwijderen.ExecuteNonQuery() 'Connectie sluiten cnnLaatkomers.Close() 'Listview leegmaken + invoegen lsvLijst.Items.Clear() Dim Inhoud As String Dim LVI As ListViewItem Inhoud = "Geen leerlingen gevonden" LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try Else
GIP 2009 â&#x20AC;&#x201C; 2010 84
MessageBox.Show("Geannuleerd door gebruiker", "Annulatie", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End Sub Private Sub btnToevoegen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnToevoegen.Click 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdBekijkenOfHet5x As New SqlClient.SqlCommand Dim scmdBekijkenWaar As New SqlClient.SqlCommand Dim strBekijkenOfHet5x As String = String.Empty Dim strBekijkenWaar As String = String.Empty Dim dteBekijkenOfHet5x As SqlClient.SqlDataReader Dim dteBekijkenWaar As SqlClient.SqlDataReader 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dte initialiseren scmdBekijkenOfHet5x.Connection = cnnLaatkomers scmdBekijkenWaar.Connection = cnnLaatkomers strBekijkenOfHet5x = "SELECT COUNT(tblTeLaatOchtend.Barcode) AS Aantal, tblTeLaatOchtend.Barcode, tblTeLaatLeerling.Voornaam, tblTeLaatLeerling.Familienaam, tblTeLaatLeerling.Klas " strBekijkenOfHet5x &= "FROM tblTeLaatOchtend INNER JOIN tblTeLaatLeerling ON tblTeLaatOchtend.Barcode = tblTeLaatLeerling.Barcode " strBekijkenOfHet5x &= "GROUP BY gebruiker.tblTeLaatOchtend.Barcode, gebruiker.tblTeLaatLeerling.Voornaam, gebruiker.tblTeLaatLeerling.Familienaam, tblTeLaatLeerling.Klas" scmdBekijkenOfHet5x.CommandText = strBekijkenOfHet5x strBekijkenWaar = "SELECT tblTeLaatOchtend.Aanwezig, tblTeLaatLeerling.Voornaam, tblTeLaatLeerling.Familienaam, tblTeLaatLeerling.Klas, tblTeLaatLeerling.Barcode " strBekijkenWaar &= "FROM tblTeLaatOchtend INNER JOIN " strBekijkenWaar &= "tblTeLaatLeerling ON tblTeLaatOchtend.Barcode = tblTeLaatLeerling.Barcode" scmdBekijkenWaar.CommandText = strBekijkenWaar 'Connection openen + uitvoeren Try cnnLaatkomers.Open() dteBekijkenOfHet5x = scmdBekijkenOfHet5x.ExecuteReader 'Strings aanmaken Dim strAantal, strFamilienaam, strVoornaam, strKlas As String Do While dteBekijkenOfHet5x.Read strAantal = dteBekijkenOfHet5x.Item("Aantal") If Not strAantal = 5 Then 'Declareren
GIP 2009 â&#x20AC;&#x201C; 2010 85
Dim Inhoud(2) As String Dim LVI As ListViewItem 'Strings Toevoegen strFamilienaam = dteBekijkenOfHet5x.Item("Familienaam") strVoornaam = dteBekijkenOfHet5x.Item("Voornaam") strKlas = dteBekijkenOfHet5x.Item("Klas") Inhoud(0) = strVoornaam & " " & strFamilienaam Inhoud(1) = strKlas Inhoud(2) = "één of meerdere dagen niet gescand" LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) End If Loop 'Reader sluiten dteBekijkenOfHet5x.Close() '2 Query opstarten dteBekijkenWaar = scmdBekijkenWaar.ExecuteReader 'Strings aanmaken Dim strAanwezig As String Do While dteBekijkenWaar.Read strAanwezig = dteBekijkenWaar.Item("Aanwezig") If strAanwezig = "False" Then 'Declareren Dim Inhoud(2) As String Dim LVI As ListViewItem 'Strings Toevoegen strFamilienaam = dteBekijkenWaar.Item("Familienaam") strVoornaam = dteBekijkenWaar.Item("Voornaam") strKlas = dteBekijkenWaar.Item("Klas") Inhoud(0) = strVoornaam & " " & strFamilienaam Inhoud(1) = strKlas Inhoud(2) = "één of meerdere dagen te laat" LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) End If Loop 'Conroleren op inhoud If lsvLijst.Items.Count = 0 Then Dim Inhoud As String Dim LVI As ListViewItem Inhoud = "Geen leerlingen gevonden" LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) End If 'Dubbele items zoeken RemoveDuplicates(lsvLijst) 'Connectie sluiten
GIP 2009 – 2010 86
cnnLaatkomers.Close() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub Private Sub PrintPreviewDialog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintPreviewDialog.Load PrintPreviewDialog.WindowState = FormWindowState.Maximized End Sub End Class
GIP 2009 â&#x20AC;&#x201C; 2010 87
4.3.9
frmAfdrukken.vb
Project
Telaatkomers
Type
Windows applicatie
Doel
Het startformulier waar een afdruktaak kan worden gestart.
Printscreen
Besturingselementen Object
Eigenschap
Waarde
frmAfdrukken
Text
Afdrukken
BackgroundImage prjTeLaatKomers.My.Resources.Resources.achtergrond Icon
Icon
btnOK
BackgroundImage System.Drawing.Bitmap
grpKeuze
Text
Sorteren op
rdbVandaag
Text
De hele dag
rdbVoormiddag
Text
Voormiddag
rdbNamiddag
Text
Namiddag
GIP 2009 â&#x20AC;&#x201C; 2010 88
rdbDatum
Text
Datum
rdb1BepaaldeDatum
Text
Op 1 bepaalde datum
rdbTussenDatums
Text
Tussen 2 datums
rdbLeerlingen
Text
Leerling
rdbEigen
Text
Eigen filter maken
Bedoeling: Hier kan geselecteerd worden welke lijsten de gebruiker wil afprinten. Procedures Object
Gebeurtenis
Doel
btnOK
Click
Controleren wat aangeduid is. Daarna de daarbij horende pagina openen
frmAfdrukken
Load
Standaard iets aanduiden
Implementatie Public Class frmAfdrukken Private Sub btnToevoegen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click 'controleren wat geselecteerd is If rdbVandaag.Checked = True Then 'Formulier openen in container frmAfdrukkenDag.WindowState = FormWindowState.Maximized frmAfdrukkenDag.MdiParent = frmBasis frmAfdrukkenDag.Show() End If If rdbVoormiddag.Checked = True Then 'Formulier openen in container frmAfdrukkenVoormiddag.WindowState = FormWindowState.Maximized frmAfdrukkenVoormiddag.MdiParent = frmBasis frmAfdrukkenVoormiddag.Show() End If If rdbNamiddag.Checked = True Then 'Formulier openen in container frmAfdrukkenNamiddag.WindowState = FormWindowState.Maximized frmAfdrukkenNamiddag.MdiParent = frmBasis frmAfdrukkenNamiddag.Show() End If If rdbDatum.Checked = True Then MessageBox.Show("Gelieve een keuze te maken tussen 1 datum of meerdere datums", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Information)
GIP 2009 â&#x20AC;&#x201C; 2010 89
Exit Sub End If If rdb1BepaaldeDatum.Checked = True Then 'Formulier openen in container frmAfdrukkenDatum.WindowState = FormWindowState.Maximized frmAfdrukkenDatum.MdiParent = frmBasis frmAfdrukkenDatum.Show() End If If rdbTussenDatums.Checked = True Then 'Formulier openen in container frmAfdrukkenTussen.WindowState = FormWindowState.Maximized frmAfdrukkenTussen.MdiParent = frmBasis frmAfdrukkenTussen.Show() End If If rdbLeerlingen.Checked = True Then 'Formulier openen in container frmAfdrukkenLeerlingen.WindowState = FormWindowState.Maximized frmAfdrukkenLeerlingen.MdiParent = frmBasis frmAfdrukkenLeerlingen.Show() End If If rdbEigen.Checked = True Then 'Formulier openen in container frmAfdrukkenSelecteer.WindowState = FormWindowState.Maximized frmAfdrukkenSelecteer.MdiParent = frmBasis frmAfdrukkenSelecteer.Show() End If 'Na keuze formulier sluiten Me.Close() End Sub Private Sub frmAfdrukken_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'standaard rdbVandaag selecteren rdbVandaag.Select() End Sub End Class
GIP 2009 â&#x20AC;&#x201C; 2010 90
4.3.10
frmAfdrukkenDag.vb
Project
Telaatkomers
Type
Windows applicatie
Doel
Formulier waar lijsten kunnen worden afgeprint voor leerlingen die te laat waren.
Printscreen
Besturingselementen Object
Eigenschap
Waarde
frmAfdrukkenDag
Text BackgroundImage
Afdrukken van te laat komers (gesorteerd op volledige dag) prjTeLaatKomers.My.Resources.Resources.achtergrond
Icon
Icon
lsvLijst
View
Details
btnVorige
BackgroundImage
System.Drawing.Bitmap
btnPrinten
BackgroundImage
System.Drawing.Bitmap
btnAfdrukvoorbeeld
BackgroundImage
System.Drawing.Bitmap
GIP 2009 â&#x20AC;&#x201C; 2010 91
Bedoeling: Hier kan je alle telaatkomers van vandaag afdrukken. Procedures Object
Gebeurtenis
Doel
btnVorige
Click
Teruggaan naar frmAfdrukken.vb
btnPrinten
Click
Lijst afprinten
btnAfdrukvoorbeeld
Click
Afdrukvoorbeeld openen van lijst
frmAfdrukkenDag
Load
Aanmaken van lijst
Implementatie Public Class frmAfdrukkenDag #Region "Print related declarations" Protected WithEvents pd As Printing.PrintDocument 'used by Print sub Protected Ratio As Single = 0, CurrRow As Integer = 0 #End Region Private Sub frmAfdrukkenDag_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Kolommen toevoegen lsvLijst.Columns.Add("Naam en Voornaam", 175, HorizontalAlignment.Left) lsvLijst.Columns.Add("Klas", 65, HorizontalAlignment.Left) lsvLijst.Columns.Add("'s Morgens of 's Middags", 150, HorizontalAlignment.Left) lsvLijst.Columns.Add("Gemeente", 100, HorizontalAlignment.Left) lsvLijst.Columns.Add("Vervoer", 100, HorizontalAlignment.Left) 'Declaratie van data-objecten Dim cnnTelaatkomers As New SqlClient.SqlConnection Dim scmdLeerlingen As New SqlClient.SqlCommand Dim sdrLeerlingen As SqlClient.SqlDataReader 'initialisatie cnnTelaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers scmdLeerlingen.Connection = cnnTelaatkomers 'Opmaak van SQL instructie Dim strSQL As String Dim dteDatumDag As String = Now.Day.ToString Dim dteDatumMaand As String = Now.Month.ToString Dim dteDatumJaar As String = Now.Year.ToString Dim dteDatumVandaag As String = dteDatumJaar & "-" & dteDatumMaand & "-" & dteDatumDag
GIP 2009 â&#x20AC;&#x201C; 2010 92
'SQL instructie opvullen in de sqlCommand strSQL = "SELECT tblTeLaatLogboek.Datum, tblTeLaatLeerling.Voornaam, tblTeLaatLeerling.Familienaam, tblTeLaatLeerling.Klas, tblTeLaatLeerling.Gemeente , tblTeLaatLogboek.Ochtend, tblTeLaatLogboek.Middag, tblTeLaatLogboek.VervoerID " strSQL &= "FROM tblTeLaatLogboek INNER JOIN tblTeLaatLeerling ON tblTeLaatLogboek.Barcode = tblTeLaatLeerling.Barcode " strSQL &= "WHERE (tblTeLaatLogboek.Datum = CONVERT(DATETIME, '" & dteDatumVandaag & "', 102))" scmdLeerlingen.CommandText = strSQL 'Connectie met de database maken + opvragen van gegevens Try cnnTelaatkomers.Open() sdrLeerlingen = scmdLeerlingen.ExecuteReader Do While sdrLeerlingen.Read = True Dim strOchtendOfMiddag As String If sdrLeerlingen.Item("Middag") = True Then strOchtendOfMiddag = "'s Middags" Else strOchtendOfMiddag = "'s Morgens" End If 'Controleren op vervoer Dim strVervoerInvullen As String = sdrLeerlingen.Item("VervoerID") Select Case strVervoerInvullen Case "1" strVervoerInvullen = "Auto" Case "2" strVervoerInvullen = "Bus" Case "3" strVervoerInvullen = "Fiets" Case "4" strVervoerInvullen = "Metro" Case "5" strVervoerInvullen = "Tevoet" Case "6" strVervoerInvullen = "Tram" Case "7" strVervoerInvullen = "Trein" End Select Dim Inhoud(4) As String Dim LVI As ListViewItem Inhoud(0) = sdrLeerlingen.Item("Voornaam") & " " & sdrLeerlingen.Item("Familienaam") Inhoud(1) = sdrLeerlingen.Item("Klas") Inhoud(2) = strOchtendOfMiddag Inhoud(3) = sdrLeerlingen.Item("Gemeente") Inhoud(4) = strVervoerInvullen LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) Loop
GIP 2009 â&#x20AC;&#x201C; 2010 93
'Conroleren op inhoud If lsvLijst.Items.Count = 0 Then Dim Inhoud As String Dim LVI As ListViewItem Inhoud = "Geen leerlingen gevonden" LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) End If 'connectie en reader afslutien sdrLeerlingen.Close() cnnTelaatkomers.Close() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub Private Sub PrintPreviewDialog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintPreviewDialog.Load 'afdrukvoorbeeld gemaximaliseerd weergeven PrintPreviewDialog.WindowState = FormWindowState.Maximized End Sub Private Sub PrintDocument_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument.PrintPage Dim g As Graphics = e.Graphics Dim l As Integer = 100 'Marge van de linkerkant van de pagina Dim iCount As Integer Dim f As Font = lsvLijst.Font Dim b As Brush = Brushes.Black 'Tussen de hoofdtitel en de records Dim currentY As Integer = 0 Dim maxY As Integer = 0 'Declareren van lijntjes tussen elk record Dim gap As Integer = 1 'Declareren voor de items uit de listview te halen Dim lvsi As ListViewItem.ListViewSubItem 'Declareren van kolommen Dim colLefts(lsvLijst.Columns.Count) As Integer Dim colWidths(lsvLijst.Columns.Count) As Integer Dim idx As Integer = 0 Dim ii As Integer Dim lr As RectangleF e.HasMorePages = False 'Title Dim headfont As Font 'Marges (X = links, y= boven) Dim X As Integer = 200 Dim Y As Integer = 50 headfont = New Font("Courier New", 16, FontStyle.Bold)
GIP 2009 â&#x20AC;&#x201C; 2010 94
e.Graphics.DrawString("Leerlingen te laat op " & Now.ToShortDateString, headfont, Brushes.Black, X, Y) 'Headings 'Marge bovenaan de pagina currentY = 100 For Each c In lsvLijst.Columns maxY = Math.Max(maxY, g.MeasureString(c.Text, f, c.Width).Height) colLefts(idx) = l colWidths(idx) = c.Width lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY) ' print all columns including hidden columns If lr.Width > 0 Then g.DrawString(c.Text, f, b, lr) l += c.Width idx += 1 Next currentY += maxY + gap g.DrawLine(Pens.Black, 0, currentY, e.PageBounds.Width, currentY) currentY += gap 'Rows iCount = lsvLijst.Items.Count - 1 For ii = CurrRow To iCount If (currentY + maxY + maxY) > e.PageBounds.Height - 50 Then 'jump down another line to see if this line will fit CurrRow = ii - 1 e.HasMorePages = True Exit For 'does next page End If l = 0 maxY = 0 idx = 0 For Each lvsi In lsvLijst.Items(ii).SubItems maxY = Math.Max(maxY, g.MeasureString(lvsi.Text, f, colWidths(idx)).Height) lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY) If lr.Width > 0 Then g.DrawString(lvsi.Text, f, b, lr) idx += 1 Next currentY += maxY + gap Next End Sub Private Sub btnAfdrukvoorbeeld_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAfdrukvoorbeeld.Click PrintPreviewDialog.Document = PrintDocument PrintPreviewDialog.ShowDialog() End Sub Private Sub btnPrinten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrinten.Click
GIP 2009 â&#x20AC;&#x201C; 2010 95
' Keuzemogelijkheid voor pagina's PrintDialog1.AllowSomePages = True ' Show the help button. PrintDialog1.ShowHelp = True 'Document dat moet worden afgeprint PrintDialog1.Document = PrintDocument 'Afprinten door dialoogvenster Dim result As DialogResult = PrintDialog1.ShowDialog() 'Ok dan printen If (result = DialogResult.OK) Then PrintDocument.Print() End If End Sub Private Sub btnVorige_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVorige.Click 'Sluiten van formulier Me.Close() 'Openen van startformulier afdrukken 'Formulier openen in container frmAfdrukken.WindowState = FormWindowState.Maximized frmAfdrukken.MdiParent = frmBasis frmAfdrukken.Show() End Sub End Class
GIP 2009 â&#x20AC;&#x201C; 2010 96
4.3.11
frmAfdrukkenVoormiddag.vb
Project
Telaatkomers
Type
Windows applicatie
Doel
Formulier waar lijsten kunnen worden afgeprint met leerlingen die ’s morgens te laat waren.
Printscreen
Besturingselementen Object
Eigenschap
Waarde
frmAfdrukkenVoormiddag
Text
Afdrukken van te laat komers (gesorteerd op voormiddag)
BackgroundImage
prjTeLaatKomers.My.Resources.Resources.achtergrond
Icon
Icon
lsvLijst
View
Details
btnVorige
BackgroundImage
System.Drawing.Bitmap
btnPrinten
BackgroundImage
System.Drawing.Bitmap
btnAfdrukvoorbeeld
BackgroundImage
System.Drawing.Bitmap
GIP 2009 – 2010 97
Bedoeling: Hier kan je alle telaatkomers afdrukken die in de voormiddag te laat kwamen. Procedures Object
Gebeurtenis
Doel
btnVorige
Click
Teruggaan naar frmAfdrukken.vb
btnPrinten
Click
Lijst afprinten
btnAfdrukvoorbeeld
Click
Afdrukvoorbeeld openen van lijst
frmAfdrukkenVoormiddag
Load
Aanmaken van lijst
Implementatie Public Class frmAfdrukkenVoormiddag #Region "Print related declarations" Protected WithEvents pd As Printing.PrintDocument 'used by Print sub Protected Ratio As Single = 0, CurrRow As Integer = 0 #End Region Private Sub frmAfdrukkenVoormiddag_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Kolommen toevoegen lsvLijst.Columns.Add("Naam en Voornaam", 175, HorizontalAlignment.Left) lsvLijst.Columns.Add("Klas", 65, HorizontalAlignment.Left) lsvLijst.Columns.Add("Gemeente", 100, HorizontalAlignment.Left) lsvLijst.Columns.Add("Vervoer", 100, HorizontalAlignment.Left) 'Declaratie van data-objecten Dim cnnTelaatkomers As New SqlClient.SqlConnection Dim scmdLeerlingen As New SqlClient.SqlCommand Dim sdrLeerlingen As SqlClient.SqlDataReader 'initialisatie cnnTelaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers scmdLeerlingen.Connection = cnnTelaatkomers 'Opmaak van SQL instructie Dim strSQL As String Dim dteDatumDag As String = Now.Day.ToString Dim dteDatumMaand As String = Now.Month.ToString Dim dteDatumJaar As String = Now.Year.ToString Dim dteDatumVandaag As String = dteDatumJaar & "-" & dteDatumMaand & "-" & dteDatumDag 'SQL instructie opvullen in de sqlCommand
GIP 2009 â&#x20AC;&#x201C; 2010 98
strSQL = "SELECT tblTeLaatLogboek.Datum, tblTeLaatLeerling.Voornaam, tblTeLaatLeerling.Familienaam, tblTeLaatLeerling.Klas, tblTeLaatLeerling.Gemeente , tblTeLaatLogboek.Ochtend, tblTeLaatLogboek.Middag, tblTeLaatLogboek.VervoerID " strSQL &= "FROM tblTeLaatLogboek INNER JOIN tblTeLaatLeerling ON tblTeLaatLogboek.Barcode = tblTeLaatLeerling.Barcode " strSQL &= "WHERE (tblTeLaatLogboek.Datum = CONVERT(DATETIME, '" & dteDatumVandaag & "', 102)) AND (tblTeLaatLogboek.Ochtend = N'1')" scmdLeerlingen.CommandText = strSQL 'Connectie met de database + opvragen van gegevens Try cnnTelaatkomers.Open() sdrLeerlingen = scmdLeerlingen.ExecuteReader Do While sdrLeerlingen.Read = True 'Controleren op vervoer Dim strVervoerInvullen As String = sdrLeerlingen.Item("VervoerID") Select Case strVervoerInvullen Case "1" strVervoerInvullen = "Auto" Case "2" strVervoerInvullen = "Bus" Case "3" strVervoerInvullen = "Fiets" Case "4" strVervoerInvullen = "Metro" Case "5" strVervoerInvullen = "Tevoet" Case "6" strVervoerInvullen = "Tram" Case "7" strVervoerInvullen = "Trein" End Select Dim Inhoud(3) As String Dim LVI As ListViewItem Inhoud(0) = sdrLeerlingen.Item("Voornaam") & " " & sdrLeerlingen.Item("Familienaam") Inhoud(1) = sdrLeerlingen.Item("Klas") Inhoud(2) = sdrLeerlingen.Item("Gemeente") Inhoud(3) = strVervoerInvullen LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) Loop 'Conroleren op inhoud If lsvLijst.Items.Count = 0 Then Dim Inhoud As String Dim LVI As ListViewItem Inhoud = "Geen leerlingen gevonden"
GIP 2009 â&#x20AC;&#x201C; 2010 99
LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) End If 'connectie en reader afslutien sdrLeerlingen.Close() cnnTelaatkomers.Close() 'bij een database fout --> tonen van die fout via een messagebox Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub Private Sub PrintDocument_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument.PrintPage Dim g As Graphics = e.Graphics Dim l As Integer = 100 'Marge van de linkerkant van de pagina Dim iCount As Integer Dim f As Font = lsvLijst.Font Dim b As Brush = Brushes.Black 'Tussen de hoofdtitel en de records Dim currentY As Integer = 0 Dim maxY As Integer = 0 'Declareren van lijntjes tussen elk record Dim gap As Integer = 1 'Declareren voor de items uit de listview te halen Dim lvsi As ListViewItem.ListViewSubItem 'Declareren van kolommen Dim colLefts(lsvLijst.Columns.Count) As Integer Dim colWidths(lsvLijst.Columns.Count) As Integer Dim idx As Integer = 0 Dim ii As Integer Dim lr As RectangleF e.HasMorePages = False 'Titel Dim headfont As Font 'Marges (X = links, y= boven) Dim X As Integer = 100 Dim Y As Integer = 50 headfont = New Font("Courier New", 16, FontStyle.Bold) e.Graphics.DrawString("Leerlingen te laat op " & Now.ToShortDateString & "(Voormiddag)", headfont, Brushes.Black, X, Y) 'Hoofdingen 'Marge bovenaan de pagina currentY = 100 For Each c In lsvLijst.Columns maxY = Math.Max(maxY, g.MeasureString(c.Text, f, c.Width).Height)
GIP 2009 â&#x20AC;&#x201C; 2010 100
colLefts(idx) = l colWidths(idx) = c.Width lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY) ' print all columns including hidden columns If lr.Width > 0 Then g.DrawString(c.Text, f, b, lr) l += c.Width idx += 1 Next currentY += maxY + gap g.DrawLine(Pens.Black, 0, currentY, e.PageBounds.Width, currentY) currentY += gap 'Rijen iCount = lsvLijst.Items.Count - 1 For ii = CurrRow To iCount If (currentY + maxY + maxY) > e.PageBounds.Height - 50 Then 'jump down another line to see if this line will fit CurrRow = ii - 1 e.HasMorePages = True Exit For 'does next page End If l = 0 maxY = 0 idx = 0 For Each lvsi In lsvLijst.Items(ii).SubItems maxY = Math.Max(maxY, g.MeasureString(lvsi.Text, f, colWidths(idx)).Height) lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY) If lr.Width > 0 Then g.DrawString(lvsi.Text, f, b, lr) idx += 1 Next currentY += maxY + gap Next End Sub Private Sub btnPrinten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrinten.Click 'Keuzemogelijkheid voor pagina's PrintDialog1.AllowSomePages = True ' Toon de help knop. PrintDialog1.ShowHelp = True 'Document dat moet worden afgeprint PrintDialog1.Document = PrintDocument 'Afprinten door dialoogvenster Dim result As DialogResult = PrintDialog1.ShowDialog() 'Ok drukken --> dan printen If (result = DialogResult.OK) Then PrintDocument.Print() End If
GIP 2009 â&#x20AC;&#x201C; 2010 101
End Sub Private Sub btnAfdrukvoorbeeld_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAfdrukvoorbeeld.Click 'afdrukvoorbeeld tonen PrintPreviewDialog.Document = PrintDocument PrintPreviewDialog.ShowDialog() End Sub Private Sub btnVorige_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVorige.Click 'Sluiten van formulier Me.Close() 'Openen van startformulier afdrukken 'Formulier openen in container frmAfdrukken.WindowState = FormWindowState.Maximized frmAfdrukken.MdiParent = frmBasis frmAfdrukken.Show() End Sub Private Sub PrintPreviewDialog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintPreviewDialog.Load 'gemaximaliseerde afdrukvoorbeeld PrintPreviewDialog.WindowState = FormWindowState.Maximized End Sub End Class
GIP 2009 â&#x20AC;&#x201C; 2010 102
4.3.12
frmAfdrukkenNamiddag.vb
Project
Telaatkomers
Type
Windows applicatie
Doel
Formulier waar lijsten kunnen worden afgeprint voor leerlingen die te laat waren. Enkel leerlingen van ’s middags.
Printscreen
Besturingselementen Object
Eigenschap
Waarde
frmAfdrukkenNamiddag
Text
Afdrukken van te laat komers (gesorteerd op namiddag)
BackgroundImage
prjTeLaatKomers.My.Resources.Resources.achtergrond
Icon
Icon
lsvLijst
View
Details
btnVorige
BackgroundImage
System.Drawing.Bitmap
btnPrinten
BackgroundImage
System.Drawing.Bitmap
btnAfdrukvoorbeeld
BackgroundImage
System.Drawing.Bitmap
GIP 2009 – 2010 103
Bedoeling: Hier kan je alle leerlingen die ‘s middags te laat kwamen afdrukken. Procedures Object
Gebeurtenis
Doel
btnVorige
Click
Teruggaan naar frmAfdrukken.vb
btnPrinten
Click
Lijst afprinten
btnAfdrukvoorbeeld
Click
Afdrukvoorbeeld openen van lijst
frmAfdrukkenNamiddag
Load
Aanmaken van lijst
Implementatie Public Class frmAfdrukkenNamiddag #Region "Print related declarations" Protected WithEvents pd As Printing.PrintDocument 'used by Print sub Protected Ratio As Single = 0, CurrRow As Integer = 0 #End Region Private Sub frmAfdrukkenNamiddag_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Kolommen toevoegen lsvLijst.Columns.Add("Naam en Voornaam", 175, HorizontalAlignment.Left) lsvLijst.Columns.Add("Klas", 65, HorizontalAlignment.Left) lsvLijst.Columns.Add("Gemeente", 100, HorizontalAlignment.Left) lsvLijst.Columns.Add("Vervoer", 100, HorizontalAlignment.Left) 'Declaratie van data-objecten Dim cnnTelaatkomers As New SqlClient.SqlConnection Dim scmdLeerlingen As New SqlClient.SqlCommand Dim sdrLeerlingen As SqlClient.SqlDataReader 'initialisatie cnnTelaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers scmdLeerlingen.Connection = cnnTelaatkomers 'Opmaak van SQL instructie Dim strSQL As String Dim dteDatumDag As String = Now.Day.ToString Dim dteDatumMaand As String = Now.Month.ToString Dim dteDatumJaar As String = Now.Year.ToString Dim dteDatumVandaag As String = dteDatumJaar & "-" & dteDatumMaand & "-" & dteDatumDag 'SQL instructie opvullen in de sqlCommand
GIP 2009 – 2010 104
strSQL = "SELECT tblTeLaatLogboek.Datum, tblTeLaatLeerling.Voornaam, tblTeLaatLeerling.Familienaam, tblTeLaatLeerling.Klas, tblTeLaatLeerling.Gemeente , tblTeLaatLogboek.Ochtend, tblTeLaatLogboek.Middag, tblTeLaatLogboek.VervoerID " strSQL &= "FROM tblTeLaatLogboek INNER JOIN tblTeLaatLeerling ON tblTeLaatLogboek.Barcode = tblTeLaatLeerling.Barcode " strSQL &= "WHERE (tblTeLaatLogboek.Datum = CONVERT(DATETIME, '" & dteDatumVandaag & "', 102)) AND (tblTeLaatLogboek.Ochtend = N'0')" scmdLeerlingen.CommandText = strSQL 'Connectie met de database + opvragen van gegevens Try cnnTelaatkomers.Open() sdrLeerlingen = scmdLeerlingen.ExecuteReader Do While sdrLeerlingen.Read = True 'Controleren op vervoer Dim strVervoerInvullen As String = sdrLeerlingen.Item("VervoerID") Select Case strVervoerInvullen Case "1" strVervoerInvullen = "Auto" Case "2" strVervoerInvullen = "Bus" Case "3" strVervoerInvullen = "Fiets" Case "4" strVervoerInvullen = "Metro" Case "5" strVervoerInvullen = "Tevoet" Case "6" strVervoerInvullen = "Tram" Case "7" strVervoerInvullen = "Trein" End Select Dim Inhoud(3) As String Dim LVI As ListViewItem Inhoud(0) = sdrLeerlingen.Item("Voornaam") & " " & sdrLeerlingen.Item("Familienaam") Inhoud(1) = sdrLeerlingen.Item("Klas") Inhoud(2) = sdrLeerlingen.Item("Gemeente") Inhoud(3) = strVervoerInvullen LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) Loop 'Conroleren op inhoud If lsvLijst.Items.Count = 0 Then Dim Inhoud As String Dim LVI As ListViewItem Inhoud = "Geen leerlingen gevonden" LVI = New ListViewItem(Inhoud)
GIP 2009 â&#x20AC;&#x201C; 2010 105
lsvLijst.Items.Add(LVI) End If 'connectie en reader afslutien sdrLeerlingen.Close() cnnTelaatkomers.Close() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub Private Sub PrintDocument_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument.PrintPage Dim g As Graphics = e.Graphics Dim l As Integer = 100 'Marge van de linkerkant van de pagina Dim iCount As Integer Dim f As Font = lsvLijst.Font Dim b As Brush = Brushes.Black 'Tussen de hoofdtitel en de records Dim currentY As Integer = 0 Dim maxY As Integer = 0 'Declareren van lijntjes tussen elk record Dim gap As Integer = 1 'Declareren voor de items uit de listview te halen Dim lvsi As ListViewItem.ListViewSubItem 'Declareren van kolommen Dim colLefts(lsvLijst.Columns.Count) As Integer Dim colWidths(lsvLijst.Columns.Count) As Integer Dim idx As Integer = 0 Dim ii As Integer Dim lr As RectangleF e.HasMorePages = False 'Title Dim headfont As Font 'Marges (X = links, y= boven) Dim X As Integer = 100 Dim Y As Integer = 50 headfont = New Font("Courier New", 16, FontStyle.Bold) e.Graphics.DrawString("Leerlingen te laat op " & Now.ToShortDateString & "(Namiddag)", headfont, Brushes.Black, X, Y) 'Headings 'Marge bovenaan de pagina currentY = 100 For Each c In lsvLijst.Columns maxY = Math.Max(maxY, g.MeasureString(c.Text, f, c.Width).Height) colLefts(idx) = l colWidths(idx) = c.Width lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY)
GIP 2009 â&#x20AC;&#x201C; 2010 106
'g.DrawString(c.Text, f, b, lr) ' print all columns including hidden columns If lr.Width > 0 Then g.DrawString(c.Text, f, b, lr) l += c.Width idx += 1 Next currentY += maxY + gap g.DrawLine(Pens.Black, 0, currentY, e.PageBounds.Width, currentY) currentY += gap 'Rows iCount = lsvLijst.Items.Count - 1 For ii = CurrRow To iCount If (currentY + maxY + maxY) > e.PageBounds.Height - 50 Then 'jump down another line to see if this line will fit CurrRow = ii - 1 e.HasMorePages = True Exit For 'does next page End If l = 0 maxY = 0 idx = 0 For Each lvsi In lsvLijst.Items(ii).SubItems maxY = Math.Max(maxY, g.MeasureString(lvsi.Text, f, colWidths(idx)).Height) lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY) 'g.DrawString(lvsi.Text, f, b, lr) If lr.Width > 0 Then g.DrawString(lvsi.Text, f, b, lr) idx += 1 Next currentY += maxY + gap Next End Sub Private Sub btnVorige_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVorige.Click 'Sluiten van formulier Me.Close() 'Openen van startformulier afdrukken 'Formulier openen in container frmAfdrukken.WindowState = FormWindowState.Maximized frmAfdrukken.MdiParent = frmBasis frmAfdrukken.Show() End Sub Private Sub btnPrinten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrinten.Click 'Keuzemogelijkheid voor pagina's PrintDialog1.AllowSomePages = True ' Show the help button. PrintDialog1.ShowHelp = True
GIP 2009 â&#x20AC;&#x201C; 2010 107
'Document dat moet worden afgeprint PrintDialog1.Document = PrintDocument 'Afprinten door dialoogvenster Dim result As DialogResult = PrintDialog1.ShowDialog() 'Ok dan printen If (result = DialogResult.OK) Then PrintDocument.Print() End If End Sub Private Sub btnAfdrukvoorbeeld_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAfdrukvoorbeeld.Click PrintPreviewDialog.Document = PrintDocument PrintPreviewDialog.ShowDialog() End Sub Private Sub PrintPreviewDialog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintPreviewDialog.Load PrintPreviewDialog.WindowState = FormWindowState.Maximized End Sub End Class
GIP 2009 â&#x20AC;&#x201C; 2010 108
4.3.13
frmAfdrukkenDatum.vb
Project
Telaatkomers
Type
Windows applicatie
Doel
Formulier waar lijsten kunnen worden afgeprint met leerlingen die te laat waren op een bepaalde datum.
Printscreen
Besturingselementen Object
Eigenschap
Waarde
frmAfdrukkenDatum
Text
frmAfdrukkenDatum
BackgroundImage
prjTeLaatKomers.My.Resources.Resources.achtergrond
Icon
Icon
lsvLijst
View
Details
btnVorige
BackgroundImage
System.Drawing.Bitmap
btnPrinten
BackgroundImage
System.Drawing.Bitmap
btnAfdrukvoorbeeld
BackgroundImage
System.Drawing.Bitmap
dteDatumPicker
GIP 2009 â&#x20AC;&#x201C; 2010 109
Bedoeling: Hier kan je alle telaatkomers van een gekozen dag afdrukken. Procedures Object
Gebeurtenis
Doel
btnVorige
Click
Teruggaan naar frmAfdrukken.vb
btnPrinten
Click
Lijst afprinten
btnAfdrukvoorbeeld
Click
Afdrukvoorbeeld openen van lijst
dteDatumPicker
ValueChanged
Aanmaken van lijst
Implementatie Public Class frmAfdrukkenDatum #Region "Print related declarations" Protected WithEvents pd As Printing.PrintDocument 'used by Print sub Protected Ratio As Single = 0, CurrRow As Integer = 0 #End Region Private Sub frmAfdrukkenDatum_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Kolommen toevoegen lsvLijst.Columns.Add("Naam en Voornaam", 175, HorizontalAlignment.Left) lsvLijst.Columns.Add("Klas", 65, HorizontalAlignment.Left) lsvLijst.Columns.Add("'s Morgens of 's Middags", 150, HorizontalAlignment.Left) lsvLijst.Columns.Add("Gemeente", 100, HorizontalAlignment.Left) lsvLijst.Columns.Add("Vervoer", 100, HorizontalAlignment.Left) 'Opvullen met datum van vandaag SelecteerDatum() End Sub Private Sub dteDatumPicker_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dteDatumPicker.ValueChanged 'Opvullen met geslecteerde datum lsvLijst.Items.Clear() SelecteerDatum() End Sub Private Sub SelecteerDatum() 'Declaratie van data-objecten
GIP 2009 â&#x20AC;&#x201C; 2010 110
Dim cnnTelaatkomers As New SqlClient.SqlConnection Dim scmdLeerlingen As New SqlClient.SqlCommand Dim sdrLeerlingen As SqlClient.SqlDataReader 'initialisatie cnnTelaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers scmdLeerlingen.Connection = cnnTelaatkomers 'Opmaak van SQL instructie Dim strSQL As String Dim dteDatumDag As String = dteDatumPicker.Value.Day Dim dteDatumMaand As String = dteDatumPicker.Value.Month Dim dteDatumJaar As String = dteDatumPicker.Value.Year Dim dteDatumVandaag As String = dteDatumJaar & "-" & dteDatumMaand & "-" & dteDatumDag 'SQL instructie opvullen in de sqlCommand strSQL = "SELECT tblTeLaatLogboek.Datum, tblTeLaatLeerling.Voornaam, tblTeLaatLeerling.Familienaam, tblTeLaatLeerling.Klas, tblTeLaatLeerling.Gemeente , tblTeLaatLogboek.Ochtend, tblTeLaatLogboek.Middag, tblTeLaatLogboek.VervoerID " strSQL &= "FROM tblTeLaatLogboek INNER JOIN tblTeLaatLeerling ON tblTeLaatLogboek.Barcode = tblTeLaatLeerling.Barcode " strSQL &= "WHERE (tblTeLaatLogboek.Datum = CONVERT(DATETIME, '" & dteDatumVandaag & "', 102))" scmdLeerlingen.CommandText = strSQL 'Connectie met de database + opvragen van gegevens Try cnnTelaatkomers.Open() sdrLeerlingen = scmdLeerlingen.ExecuteReader Do While sdrLeerlingen.Read = True Dim strOchtendOfMiddag As String If sdrLeerlingen.Item("Middag") = True Then strOchtendOfMiddag = "'s Middags" Else strOchtendOfMiddag = "'s Morgens" End If 'Controleren op vervoer Dim strVervoerInvullen As String = sdrLeerlingen.Item("VervoerID") Select Case strVervoerInvullen Case "1" strVervoerInvullen = "Auto" Case "2" strVervoerInvullen = "Bus" Case "3" strVervoerInvullen = "Fiets" Case "4" strVervoerInvullen = "Metro" Case "5" strVervoerInvullen = "Tevoet"
GIP 2009 â&#x20AC;&#x201C; 2010 111
Case "6" strVervoerInvullen = "Tram" Case "7" strVervoerInvullen = "Trein" End Select Dim Inhoud(4) As String Dim LVI As ListViewItem Inhoud(0) = sdrLeerlingen.Item("Voornaam") & " " & sdrLeerlingen.Item("Familienaam") Inhoud(1) = sdrLeerlingen.Item("Klas") Inhoud(2) = strOchtendOfMiddag Inhoud(3) = sdrLeerlingen.Item("Gemeente") Inhoud(4) = strVervoerInvullen LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) Loop 'Conroleren op inhoud If lsvLijst.Items.Count = 0 Then Dim Inhoud As String Dim LVI As ListViewItem Inhoud = "Geen leerlingen gevonden" LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) End If 'connectie en reader afslutien sdrLeerlingen.Close() cnnTelaatkomers.Close() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub Private Sub PrintDocument_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument.PrintPage Dim g As Graphics = e.Graphics Dim l As Integer = 100 'Marge van de linkerkant van de pagina Dim iCount As Integer Dim f As Font = lsvLijst.Font Dim b As Brush = Brushes.Black 'Tussen de hoofdtitel en de records Dim currentY As Integer = 0 Dim maxY As Integer = 0 'Declareren van lijntjes tussen elk record Dim gap As Integer = 1 'Declareren voor de items uit de listview te halen Dim lvsi As ListViewItem.ListViewSubItem 'Declareren van kolommen Dim colLefts(lsvLijst.Columns.Count) As Integer Dim colWidths(lsvLijst.Columns.Count) As Integer Dim idx As Integer = 0
GIP 2009 â&#x20AC;&#x201C; 2010 112
Dim ii As Integer Dim lr As RectangleF e.HasMorePages = False 'Title Dim headfont As Font 'Marges (X = links, y= boven) Dim X As Integer = 200 Dim Y As Integer = 50 headfont = New Font("Courier New", 16, FontStyle.Bold) e.Graphics.DrawString("Leerlingen te laat op " & dteDatumPicker.Value.ToShortDateString, headfont, Brushes.Black, X, Y) 'Headings 'Marge bovenaan de pagina currentY = 100 For Each c In lsvLijst.Columns maxY = Math.Max(maxY, g.MeasureString(c.Text, f, c.Width).Height) colLefts(idx) = l colWidths(idx) = c.Width lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY) 'g.DrawString(c.Text, f, b, lr) ' print all columns including hidden columns If lr.Width > 0 Then g.DrawString(c.Text, f, b, lr) l += c.Width idx += 1 Next currentY += maxY + gap g.DrawLine(Pens.Black, 0, currentY, e.PageBounds.Width, currentY) currentY += gap 'Rows iCount = lsvLijst.Items.Count - 1 For ii = CurrRow To iCount If (currentY + maxY + maxY) > e.PageBounds.Height Then 'jump down another line to see if this line will fit CurrRow = ii - 1 e.HasMorePages = True Exit For 'does next page End If l = 0 maxY = 0 idx = 0 For Each lvsi In lsvLijst.Items(ii).SubItems maxY = Math.Max(maxY, g.MeasureString(lvsi.Text, f, colWidths(idx)).Height) lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY) 'g.DrawString(lvsi.Text, f, b, lr) If lr.Width > 0 Then g.DrawString(lvsi.Text, f, b, lr) idx += 1 Next
GIP 2009 â&#x20AC;&#x201C; 2010 113
currentY += maxY + gap Next End Sub Private Sub PrintPreviewDialog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintPreviewDialog.Load PrintPreviewDialog.WindowState = FormWindowState.Maximized End Sub Private Sub btnPrinten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrinten.Click 'Keuzemogelijkheid voor pagina's PrintDialog1.AllowSomePages = True ' Show the help button. PrintDialog1.ShowHelp = True 'Document dat moet worden afgeprint PrintDialog1.Document = PrintDocument 'Afprinten door dialoogvenster Dim result As DialogResult = PrintDialog1.ShowDialog() 'Ok dan printen If (result = DialogResult.OK) Then PrintDocument.Print() End If End Sub Private Sub btnAfdrukvoorbeeld_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAfdrukvoorbeeld.Click PrintPreviewDialog.Document = PrintDocument PrintPreviewDialog.ShowDialog() End Sub Private Sub btnVorige_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVorige.Click 'Sluiten van formulier Me.Close() 'Openen van startformulier afdrukken 'Formulier openen in container frmAfdrukken.WindowState = FormWindowState.Maximized frmAfdrukken.MdiParent = frmBasis frmAfdrukken.Show() End Sub End Class
GIP 2009 â&#x20AC;&#x201C; 2010 114
4.3.14
frmAfdrukkenTussen.vb
Project
Telaatkomers
Type
Windows applicatie
Doel
Formulier waar lijsten kunnen worden afgeprint met leerlingen die te laat waren tussen 2 bepaalde datums.
Printscreen
Besturingselementen Object
Eigenschap
Waarde
frmAfdrukkenTussen
Text BackgroundImage
Afdrukken van te laatkomers (gesorteerd tussen datums) prjTeLaatKomers.My.Resources.Resources.achtergrond
Icon
Icon
lsvLijst
View
Details
btnVorige
BackgroundImage
System.Drawing.Bitmap
btnPrinten
BackgroundImage
System.Drawing.Bitmap
GIP 2009 â&#x20AC;&#x201C; 2010 115
btnAfdrukvoorbeeld
BackgroundImage
System.Drawing.Bitmap
dteDatumPicker1 dteDatumPicker2
Bedoeling: Hier kan je alle telaatkomers tussen datums in één keer afdrukken. Procedures Object
Gebeurtenis
Doel
btnVorige
Click
Teruggaan naar frmAfdrukken.vb
btnPrinten
Click
Lijst afprinten
btnAfdrukvoorbeeld
Click
Afdrukvoorbeeld openen van lijst
frmAfdrukkenTussen
Load
Aanmaken van lijst
Implementatie Public Class frmAfdrukkenTussen #Region "Print related declarations" Protected WithEvents pd As Printing.PrintDocument 'used by Print sub Protected Ratio As Single = 0, CurrRow As Integer = 0 #End Region Private Sub frmAfdrukkenTussen_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Kolommen toevoegen lsvLijst.Columns.Add("Naam en Voornaam", 175, HorizontalAlignment.Left) lsvLijst.Columns.Add("Klas", 65, HorizontalAlignment.Left) lsvLijst.Columns.Add("'s Morgens of 's Middags", 150, HorizontalAlignment.Left) lsvLijst.Columns.Add("Gemeente", 100, HorizontalAlignment.Left) lsvLijst.Columns.Add("Vervoer", 100, HorizontalAlignment.Left) 'Opvullen met datum van vandaag SelecteerDatum() End Sub Private Sub dteDatumPicker1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dteDatumPicker1.ValueChanged 'Opvullen met geslecteerde datum lsvLijst.Items.Clear()
GIP 2009 – 2010 116
SelecteerDatum() End Sub Private Sub dteDatumPicker2_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dteDatumPicker2.ValueChanged 'Opvullen met geslecteerde datum lsvLijst.Items.Clear() SelecteerDatum() End Sub Private Sub SelecteerDatum() 'Declaratie van dataobjecten Dim cnnTelaatkomers As New SqlClient.SqlConnection Dim scmdLeerlingen As New SqlClient.SqlCommand Dim sdrLeerlingen As SqlClient.SqlDataReader 'initialisatie cnnTelaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers scmdLeerlingen.Connection = cnnTelaatkomers 'Opmaak van SQL instructie Dim strSQL As String Dim dteDatumDag1 As String = dteDatumPicker1.Value.Day Dim dteDatumMaand1 As String = dteDatumPicker1.Value.Month Dim dteDatumJaar1 As String = dteDatumPicker1.Value.Year Dim dteDatumVandaag1 As String = dteDatumJaar1 & "-" & dteDatumMaand1 & "-" & dteDatumDag1 Dim dteDatumDag2 As String = dteDatumPicker2.Value.Day Dim dteDatumMaand2 As String = dteDatumPicker2.Value.Month Dim dteDatumJaar2 As String = dteDatumPicker2.Value.Year Dim dteDatumVandaag2 As String = dteDatumJaar2 & "-" & dteDatumMaand2 & "-" & dteDatumDag2 'SQL instructie opvullen in de sqlCommand strSQL = "SELECT tblTeLaatLogboek.Datum, tblTeLaatLeerling.Voornaam, tblTeLaatLeerling.Familienaam, tblTeLaatLeerling.Klas, " strSQL &= "tblTeLaatLeerling.Gemeente, tblTeLaatLogboek.Ochtend, tblTeLaatLogboek.Middag, tblTeLaatLogboek.VervoerID " strSQL &= "FROM tblTeLaatLogboek INNER JOIN " strSQL &= "tblTeLaatLeerling ON tblTeLaatLogboek.Barcode = tblTeLaatLeerling.Barcode " strSQL &= "WHERE (tblTeLaatLogboek.Datum >= CONVERT(DATETIME, '" & dteDatumVandaag1 & "', 102) AND tblTeLaatLogboek.Datum <= CONVERT(DATETIME, " strSQL &= "'" & dteDatumVandaag2 & "', 102))" scmdLeerlingen.CommandText = strSQL 'Connectie met de database + opvragen van gegevens Try cnnTelaatkomers.Open() sdrLeerlingen = scmdLeerlingen.ExecuteReader
GIP 2009 â&#x20AC;&#x201C; 2010 117
Do While sdrLeerlingen.Read = True Dim strOchtendOfMiddag As String If sdrLeerlingen.Item("Middag") = True Then strOchtendOfMiddag = "'s Middags" Else strOchtendOfMiddag = "'s Morgens" End If 'Controleren op vervoer Dim strVervoerInvullen As String = sdrLeerlingen.Item("VervoerID") Select Case strVervoerInvullen Case "1" strVervoerInvullen = "Auto" Case "2" strVervoerInvullen = "Bus" Case "3" strVervoerInvullen = "Fiets" Case "4" strVervoerInvullen = "Metro" Case "5" strVervoerInvullen = "Tevoet" Case "6" strVervoerInvullen = "Tram" Case "7" strVervoerInvullen = "Trein" End Select Dim Inhoud(4) As String Dim LVI As ListViewItem Inhoud(0) = sdrLeerlingen.Item("Voornaam") & " " & sdrLeerlingen.Item("Familienaam") Inhoud(1) = sdrLeerlingen.Item("Klas") Inhoud(2) = strOchtendOfMiddag Inhoud(3) = sdrLeerlingen.Item("Gemeente") Inhoud(4) = strVervoerInvullen LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) Loop 'Conroleren op inhoud If lsvLijst.Items.Count = 0 Then Dim Inhoud As String Dim LVI As ListViewItem Inhoud = "Geen leerlingen gevonden" LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) End If 'connectie en reader afslutien sdrLeerlingen.Close() cnnTelaatkomers.Close() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub
GIP 2009 â&#x20AC;&#x201C; 2010 118
Private Sub PrintDocument_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument.PrintPage Dim g As Graphics = e.Graphics Dim l As Integer = 100 'Marge van de linkerkant van de pagina Dim iCount As Integer Dim f As Font = lsvLijst.Font Dim b As Brush = Brushes.Black 'Tussen de hoofdtitel en de records Dim currentY As Integer = 0 Dim maxY As Integer = 0 'Declareren van lijntjes tussen elk record Dim gap As Integer = 1 'Declareren voor de items uit de listview te halen Dim lvsi As ListViewItem.ListViewSubItem 'Declareren van kolommen Dim colLefts(lsvLijst.Columns.Count) As Integer Dim colWidths(lsvLijst.Columns.Count) As Integer Dim idx As Integer = 0 Dim ii As Integer Dim lr As RectangleF e.HasMorePages = False 'Title Dim headfont As Font 'Marges (X = links, y= boven) Dim X As Integer = 75 Dim Y As Integer = 50 headfont = New Font("Courier New", 16, FontStyle.Bold) e.Graphics.DrawString("Leerlingen te laat tussen " & dteDatumPicker1.Value.ToShortDateString & " en " & dteDatumPicker2.Value.ToShortDateString, headfont, Brushes.Black, X, Y) 'Headings 'Marge bovenaan de pagina currentY = 100 For Each c In lsvLijst.Columns maxY = Math.Max(maxY, g.MeasureString(c.Text, f, c.Width).Height) colLefts(idx) = l colWidths(idx) = c.Width lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY) 'g.DrawString(c.Text, f, b, lr) ' print all columns including hidden columns If lr.Width > 0 Then g.DrawString(c.Text, f, b, lr) l += c.Width idx += 1 Next currentY += maxY + gap g.DrawLine(Pens.Black, 0, currentY, e.PageBounds.Width, currentY)
GIP 2009 â&#x20AC;&#x201C; 2010 119
currentY += gap 'Rows iCount = lsvLijst.Items.Count - 1 For ii = CurrRow To iCount If (currentY + maxY + maxY) > e.PageBounds.Height - 50 Then 'jump down another line to see if this line will fit CurrRow = ii - 1 e.HasMorePages = True Exit For 'does next page End If l = 0 maxY = 0 idx = 0 For Each lvsi In lsvLijst.Items(ii).SubItems maxY = Math.Max(maxY, g.MeasureString(lvsi.Text, f, colWidths(idx)).Height) lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY) 'g.DrawString(lvsi.Text, f, b, lr) If lr.Width > 0 Then g.DrawString(lvsi.Text, f, b, lr) idx += 1 Next currentY += maxY + gap Next End Sub Private Sub PrintPreviewDialog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintPreviewDialog.Load PrintPreviewDialog.WindowState = FormWindowState.Maximized End Sub Private Sub btnPrinten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrinten.Click 'Keuzemogelijkheid voor pagina's PrintDialog1.AllowSomePages = True ' Show the help button. PrintDialog1.ShowHelp = True 'Document dat moet worden afgeprint PrintDialog1.Document = PrintDocument 'Afprinten door dialoogvenster Dim result As DialogResult = PrintDialog1.ShowDialog() 'Ok dan printen If (result = DialogResult.OK) Then PrintDocument.Print() End If End Sub Private Sub btnAfdrukvoorbeeld_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAfdrukvoorbeeld.Click
GIP 2009 â&#x20AC;&#x201C; 2010 120
PrintPreviewDialog.Document = PrintDocument PrintPreviewDialog.ShowDialog() End Sub Private Sub btnVorige_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVorige.Click 'Sluiten van formulier Me.Close() 'Openen van startformulier afdrukken 'Formulier openen in container frmAfdrukken.WindowState = FormWindowState.Maximized frmAfdrukken.MdiParent = frmBasis frmAfdrukken.Show() End Sub End Class
GIP 2009 â&#x20AC;&#x201C; 2010 121
4.3.15
frmAfdrukkenLeerlingen.vb
Project
Telaatkomers
Type
Windows applicatie
Doel
Formulier waar gegevens kunnen worden afgeprint van één bepaalde leerling.
Printscreen
Besturingselementen Object
Eigenschap
frmAfdrukkenLeerlingen Text
Waarde Afdrukken van te laatkomers (gesorteerd op Leerlingen)
BackgroundImage prjTeLaatKomers.My.Resources.Resources.achtergrond Icon
Icon
lblCode
Text
Barcodenummer:
txtCode
TextAllign
Center
Text
Gegevens Leerling:
cboLeerlingen lblGegevens
GIP 2009 – 2010 122
txtGegevens
Multiline
True
ReadOnly
True
lblTeLaat
Text
Te laat:
lsvLijst
View
Details
btnVorige
BackgroundImage System.Drawing.Bitmap
btnPrinten
BackgroundImage
btnAfdrukvoorbeeld
BackgroundImage System.Drawing.Bitmap
btnZoeken
BackgroundImage
System.Drawing.Bitmap
System.Drawing.Bitmap
Bedoeling: Hier krijg je een overzicht van de persoonlijke gegevens van één bepaalde leerling met alle datums dat de leerling te laat was. Er is mogelijkheid om deze gegevens af te drukken. Procedures Object
Gebeurtenis
Doel
btnZoeken
Click
Zoekopdracht starten naar leerling
btnVorige
Click
Teruggaan naar frmAfdrukken.vb
btnPrinten
Click
Lijst afprinten
btnAfdrukvoorbeeld
Click
Afdrukvoorbeeld openen van lijst
txtCode
TextChanged
Aanmaken van lijst
cboLeerlingen
SelectedIndexChanged
Bij leerlingen met dezelfde naam wordt dit geopend, daarna dient men een leerling te kiezen om de lijst aan te maken.
GIP 2009 – 2010 123
Implementatie Public Class frmAfdrukkenLeerlingen #Region "Print related declarations" Protected WithEvents pd As Printing.PrintDocument 'used by Print sub Protected Ratio As Single = 0, CurrRow As Integer = 0 #End Region 'Declareren over volledig formulier Dim strVoornaam, strFamilienaam As String Private Sub frmAfdrukkenLeerlingen_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Opvullen met kolommen lsvLijst.Columns.Add("Datum", 100, HorizontalAlignment.Left) lsvLijst.Columns.Add("'s Morgens of 's Middags", 150, HorizontalAlignment.Left) lsvLijst.Columns.Add("Vervoer", 100, HorizontalAlignment.Left) 'cboLeerlingen niet weergeven cboLeerlingen.Visible = False 'Cursor plaatsen in teksvak barcode txtCode.TabIndex = "1" End Sub Private Sub cboLeerlingen_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboLeerlingen.SelectedIndexChanged 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdOpvragen As New SqlClient.SqlCommand Dim strCommand As String Dim strBarcode As String = String.Empty Dim dteLeerlingen As SqlClient.SqlDataReader Dim strKlas As String = String.Empty 'strKlas initialiseren strKlas = Split(cboLeerlingen.SelectedItem.ToString, " ")(2) 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dteVervoer initialiseren scmdOpvragen.Connection = cnnLaatkomers strCommand = "SELECT Voornaam, Familienaam , Klas, Barcode" strCommand &= " FROM tblTeLaatLeerling" strCommand &= " WHERE (Voornaam = N'" & strVoornaam & "') AND (Familienaam = N'" & strFamilienaam & "')AND (Klas = N'" & strKlas & "')" scmdOpvragen.CommandText = strCommand Try 'Connection openen + uitvoeren cnnLaatkomers.Open() dteLeerlingen = scmdOpvragen.ExecuteReader()
GIP 2009 â&#x20AC;&#x201C; 2010 124
Do While dteLeerlingen.Read = True strBarcode = dteLeerlingen.Item("Barcode") Loop 'Datareader sluiten dteLeerlingen.Close() 'Connectie sluiten cnnLaatkomers.Close() 'txtCode opvullen txtCode.Text = strBarcode 'cboLeerlingen cboLeerlingen.Visible = False cboLeerlingen.Items.Clear() Catch ex As Exception MsgBox(ex.ToString) End Try End Sub Private Sub txtCode_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtCode.TextChanged If txtCode.TextLength = "16" Then 'Leegmaken van tekstvakken txtGegevens.Text = String.Empty lsvLijst.Items.Clear() 'Declaratie van data-objecten Dim cnnTelaatkomers As New SqlClient.SqlConnection Dim scmdTeLaat As New SqlClient.SqlCommand Dim sdrTeLaat As SqlClient.SqlDataReader Dim strBarcode As String = txtCode.Text 'initialisatie cnnTelaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers scmdTeLaat.Connection = cnnTelaatkomers 'Opmaak van SQL instructie Dim strSQL As String 'SQL instructie opvullen in de sqlCommand strSQL = "SELECT tblTeLaatLeerling.Voornaam, tblTeLaatLeerling.Familienaam, tblTeLaatLeerling.Klas, tblTeLaatLeerling.Gemeente, " strSQL &= "tblTeLaatLeerling.smorgens, tblTeLaatLeerling.smiddags, tblTeLaatLogboek.Datum, tblTeLaatLogboek.Ochtend, tblTeLaatLogboek.Middag, tblTeLaatLogboek.VervoerID, tblTeLaatLeerling.Barcode " strSQL &= "FROM tblTeLaatLeerling INNER JOIN tblTeLaatLogboek ON tblTeLaatLeerling.Barcode = tblTeLaatLogboek.Barcode " strSQL &= "WHERE (tblTeLaatLeerling.Barcode = N'" & strBarcode & "')"
GIP 2009 â&#x20AC;&#x201C; 2010 125
scmdTeLaat.CommandText = strSQL 'Connectie met de database + opvragen van gegevens Try cnnTelaatkomers.Open() sdrTeLaat = scmdTeLaat.ExecuteReader Do While sdrTeLaat.Read = True Dim strOchtendOfMiddag As String 'Controleren op ochtend of middag If sdrTeLaat.Item("Ochtend").ToString = "True" Then strOchtendOfMiddag = "'s Morgens" Else strOchtendOfMiddag = "'s Middags" End If 'Controleren op vervoer Dim strVervoerInvullen As String = sdrTeLaat.Item("VervoerID") Select Case strVervoerInvullen Case "1" strVervoerInvullen = "Auto" Case "2" strVervoerInvullen = "Bus" Case "3" strVervoerInvullen = "Fiets" Case "4" strVervoerInvullen = "Metro" Case "5" strVervoerInvullen = "Tevoet" Case "6" strVervoerInvullen = "Tram" Case "7" strVervoerInvullen = "Trein" End Select Dim Inhoud(2) As String Dim LVI As ListViewItem Inhoud(0) = sdrTeLaat.Item("Datum") Inhoud(1) = strOchtendOfMiddag Inhoud(2) = strVervoerInvullen LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) Dim strInhoudtxt As String strInhoudtxt = "Naam en Voornaam:" & vbTab & sdrTeLaat.Item("Voornaam") & " " & sdrTeLaat.Item("Familienaam") & vbCrLf strInhoudtxt &= "Klas:" & vbTab & vbTab & vbTab & sdrTeLaat.Item("Klas") & vbCrLf strInhoudtxt &= "Gemeente:" & vbTab & vbTab & sdrTeLaat.Item("Gemeente") & vbCrLf & vbCrLf strInhoudtxt &= "Telaat:" & vbCrLf strInhoudtxt &= "'s morgens" & vbTab & vbTab & sdrTeLaat.Item("smorgens") & vbCrLf strInhoudtxt &= "'s middags" & vbTab & vbTab & sdrTeLaat.Item("smiddags") & vbCrLf
GIP 2009 â&#x20AC;&#x201C; 2010 126
strInhoudtxt &= "'s totaal" & vbTab & vbTab & vbTab & (sdrTeLaat.Item("smorgens") + sdrTeLaat.Item("smiddags")) txtGegevens.Text = strInhoudtxt Loop 'connectie en reader afslutien sdrTeLaat.Close() cnnTelaatkomers.Close() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try If txtGegevens.Text = String.Empty Then MessageBox.Show("Leerling is niet gevonden", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Information) txtCode.Text = String.Empty End If End If End Sub Private Sub PrintPreviewDialog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PrintPreviewDialog.Load PrintPreviewDialog.WindowState = FormWindowState.Maximized End Sub Private Sub PrintDocument_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument.PrintPage Dim g As Graphics = e.Graphics Dim l As Integer = 100 'Marge van de linkerkant van de pagina Dim iCount As Integer Dim f As Font = lsvLijst.Font Dim b As Brush = Brushes.Black 'Tussen de hoofdtitel en de records Dim currentY As Integer = 0 Dim maxY As Integer = 0 'Declareren van lijntjes tussen elk record Dim gap As Integer = 1 'Declareren voor de items uit de listview te halen Dim lvsi As ListViewItem.ListViewSubItem 'Declareren van kolommen Dim colLefts(lsvLijst.Columns.Count) As Integer Dim colWidths(lsvLijst.Columns.Count) As Integer Dim idx As Integer = 0 Dim ii As Integer Dim lr As RectangleF e.HasMorePages = False 'Title Dim headfont As Font 'Marges (X = links, y= boven) Dim X As Integer = 325
GIP 2009 â&#x20AC;&#x201C; 2010 127
Dim Y As Integer = 50 headfont = New Font("Courier New", 16, FontStyle.Bold) e.Graphics.DrawString("Leerling", headfont, Brushes.Black, X, Y) 'Gegevens van leerling Dim gegevensfont As Font 'Marges (X = links, y= boven) Dim X1 As Integer = 100 Dim Y1 As Integer = 100 gegevensfont = lsvLijst.Font e.Graphics.DrawString(txtGegevens.Text, gegevensfont, Brushes.Black, X1, Y1) 'Headings 'Marge bovenaan de pagina currentY = 225 For Each c In lsvLijst.Columns maxY = Math.Max(maxY, g.MeasureString(c.Text, f, c.Width).Height) colLefts(idx) = l colWidths(idx) = c.Width lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY) 'g.DrawString(c.Text, f, b, lr) ' print all columns including hidden columns If lr.Width > 0 Then g.DrawString(c.Text, f, b, lr) l += c.Width idx += 1 Next currentY += maxY + gap g.DrawLine(Pens.Black, 0, currentY, e.PageBounds.Width, currentY) currentY += gap 'Rows iCount = lsvLijst.Items.Count - 1 For ii = CurrRow To iCount If (currentY + maxY + maxY) > e.PageBounds.Height - 50 Then 'jump down another line to see if this line will fit CurrRow = ii - 1 e.HasMorePages = True Exit For 'does next page End If l = 0 maxY = 0 idx = 0 For Each lvsi In lsvLijst.Items(ii).SubItems maxY = Math.Max(maxY, g.MeasureString(lvsi.Text, f, colWidths(idx)).Height) lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY) 'g.DrawString(lvsi.Text, f, b, lr) If lr.Width > 0 Then g.DrawString(lvsi.Text, f, b, lr) idx += 1 Next currentY += maxY + gap Next
GIP 2009 â&#x20AC;&#x201C; 2010 128
End Sub Private Sub btnPrinten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrinten.Click 'Keuzemogelijkheid voor pagina's PrintDialog1.AllowSomePages = True ' Show the help button. PrintDialog1.ShowHelp = True 'Document dat moet worden afgeprint PrintDialog1.Document = PrintDocument 'Afprinten door dialoogvenster Dim result As DialogResult = PrintDialog1.ShowDialog() 'Ok dan printen If (result = DialogResult.OK) Then PrintDocument.Print() End If End Sub Private Sub btnAfdrukvoorbeeld_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAfdrukvoorbeeld.Click PrintPreviewDialog.Document = PrintDocument PrintPreviewDialog.ShowDialog() End Sub Private Sub btnVorige_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVorige.Click 'Sluiten van formulier Me.Close() 'Openen van startformulier afdrukken 'Formulier openen in container frmAfdrukken.WindowState = FormWindowState.Maximized frmAfdrukken.MdiParent = frmBasis frmAfdrukken.Show() End Sub Private Sub btnZoeken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnZoeken.Click 'Verwijderen van vorige resultaten cboLeerlingen.Items.Clear() txtCode.Text = String.Empty 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdOpvragen As New SqlClient.SqlCommand Dim strCommand, strNaam As String Dim strBarcode As String = String.Empty Dim dteLeerlingen As SqlClient.SqlDataReader 'Initialiseren
GIP 2009 â&#x20AC;&#x201C; 2010 129
strVoornaam = InputBox("Voornaam van de leerling", "Zoeken van leerling") strFamilienaam = InputBox("Familienaam van de leerling", "Zoeken van leerling") 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dteVervoer initialiseren scmdOpvragen.Connection = cnnLaatkomers strCommand = "SELECT Voornaam, Familienaam , Klas, Barcode" strCommand &= " FROM tblTeLaatLeerling" strCommand &= " WHERE (Voornaam = N'" & strVoornaam & "') AND (Familienaam = N'" & strFamilienaam & "')" scmdOpvragen.CommandText = strCommand Try 'Connection openen + uitvoeren cnnLaatkomers.Open() dteLeerlingen = scmdOpvragen.ExecuteReader() Do While dteLeerlingen.Read = True strNaam = dteLeerlingen.Item("Voornaam") & " " & dteLeerlingen.Item("Familienaam") & " " & dteLeerlingen.Item("Klas") cboLeerlingen.Items.Add(strNaam) strBarcode = dteLeerlingen.Item("Barcode") Loop 'Datareader sluiten dteLeerlingen.Close() 'Connectie sluiten cnnLaatkomers.Close() 'Controleren van hoeveelheid antwoorden Select Case cboLeerlingen.Items.Count Case 0 MessageBox.Show("Leerling is niet gevonden", "Niet gevonden", MessageBoxButtons.OK) 'Cbo niet weergeven cboLeerlingen.Visible = False Case 1 cboLeerlingen.Text = cboLeerlingen.Items(0) txtCode.Text = strBarcode 'Cbo niet weergeven + clear cboLeerlingen.Visible = False cboLeerlingen.Items.Clear() txtCode.Focus() Case Else 'Cbo weergeven cboLeerlingen.Visible = True cboLeerlingen.Text = "Selecteer" cboLeerlingen.Focus() End Select Catch ex As Exception MsgBox(ex.ToString) End Try End Sub End Class
GIP 2009 â&#x20AC;&#x201C; 2010 130
4.3.16
frmAfdrukkenSelecteer.vb
Project
Telaatkomers
Type
Windows applicatie
Doel
Formulier waar lijsten kunnen worden afgeprint met leerlingen die te laat waren. Gesorteerd met een zelf gemaakte filter.
Printscreen
Besturingselementen Object
Eigenschap
frmAfdrukkenSelecteer Text
Waarde frmAfdrukkenSelecteer
BackgroundImage prjTeLaatKomers.My.Resources.Resources.achtergrond
chkBarcode
Icon
Icon
Text
Barcode selecteren
GIP 2009 â&#x20AC;&#x201C; 2010 131
grpBarcode
Text
Barcode
lblCode
Text
Barcodenummer:
txtCode
TextAlign
Center
btnZoeken
BackgroundImage
System.Drawing.Bitmap
chkTussen
Text
Tussen datums selecteren
grpDatum
Text
Datum
lblDatum1
Text
Tussen
lblDatum2
Text
En
chkMorgenOfMiddag
Text
’s Morgens of ’s Middags selecteren
grpMorgenOfMiddag
Text
’s Morgens of ’s Middags
chkMorgen
Text
’s Morgens
chkMiddag
Text
’s Middags
chkTijdstip
Text
Tijdstip selecteren
grpTijdstip
Text
Tijdstip
lblTijd1
Text
Tussen
lblTijd2
Text
En
dteTimePicker1
Format
Time
dteTimePicker2
Format
Time
chkVervoer
Text
Vervoer selecteren
grpVervoer
Text
Vervoer selecteren
chkGemeente
Text
Gemeente selecteren
grpGemeente
Text
Gemeente selecteren
lsvLijst
View
Details
btnToevoegen
BackgroundImage
System.Drawing.Bitmap
btnVorige
BackgroundImage System.Drawing.Bitmap
btnPrinten
BackgroundImage
btnAfdrukvoorbeeld
BackgroundImage System.Drawing.Bitmap
cboLeerlingen
dteDatumPicker1 dteDatumPicker2
cboVervoer
txtGemeente
System.Drawing.Bitmap
Bedoeling: Hier kan de gebruiker een eigen filter aanmaken. Er is mogelijkheid om deze gegevens af te drukken. GIP 2009 – 2010 132
Procedures Object
Gebeurtenis
Doel
chkBarcode
Click
grpBarcode inschakelen
btnZoeken
Click
Zoekopdracht starten naar leerling
cboLeerlingen
SelectedIndexChanged
Bij leerlingen met dezelfde naam wordt dit geopend, daarna dient men een leerling te kiezen.
chkTussen
Click
grpDatum inschakelen
chkMorgenOfMiddag
Click
grpMorgenOfMiddag inschakelen
chkTijdstip
Click
grpTijdstip inschakelen
chkVervoer
Click
grpVervoer inschakelen
chkGemeente
Click
grpGemeente inschakelen
btnVorige
Click
Teruggaan naar frmAfdrukken.vb
btnPrinten
Click
Lijst afprinten
btnAfdrukvoorbeeld
Click
Afdrukvoorbeeld openen van lijst
btnToevoegen
Click
Aanmaken van lijst
Implementatie Public Class frmAfdrukkenSelecteer #Region "Print related declarations" Protected WithEvents pd As Printing.PrintDocument 'used by Print sub Protected Ratio As Single = 0, CurrRow As Integer = 0 #End Region Private Sub chkTussen_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkTussen.CheckedChanged 'Controleren op status + het omgekeerde uitvoeren If grpDatum.Enabled = True Then grpDatum.Enabled = False
GIP 2009 â&#x20AC;&#x201C; 2010 133
Else grpDatum.Enabled = True End If End Sub Private Sub chkTijdstip_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkTijdstip.CheckedChanged 'Controleren op status + het omgekeerde uitvoeren If grpTijdstip.Enabled = True Then grpTijdstip.Enabled = False Else grpTijdstip.Enabled = True End If End Sub Private Sub chkMorgenOfMiddag_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkMorgenOfMiddag.CheckedChanged 'Controleren op status + het omgekeerde uitvoeren If grpMorgenOfMiddag.Enabled = True Then grpMorgenOfMiddag.Enabled = False Else grpMorgenOfMiddag.Enabled = True End If End Sub Private Sub chkVervoer_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkVervoer.CheckedChanged 'Controleren op status + het omgekeerde uitvoeren If grpVervoer.Enabled = True Then grpVervoer.Enabled = False Else grpVervoer.Enabled = True cboVervoer.Focus() End If End Sub Private Sub chkBarcode_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkBarcode.CheckedChanged 'Controleren op status + het omgekeerde uitvoeren If grpBarcode.Enabled = True Then grpBarcode.Enabled = False Else grpBarcode.Enabled = True txtCode.Focus() End If End Sub Private Sub chkGemeente_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkGemeente.CheckedChanged 'Controleren op status + het omgekeerde uitvoeren If grpGemeente.Enabled = True Then
GIP 2009 â&#x20AC;&#x201C; 2010 134
grpGemeente.Enabled = False Else grpGemeente.Enabled = True txtGemeente.Focus() End If End Sub Private Sub btnZoeken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnZoeken.Click 'Verwijderen van vorige resultaten cboLeerlingen.Items.Clear() txtCode.Text = String.Empty 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdOpvragen As New SqlClient.SqlCommand Dim strCommand, strNaam As String Dim strBarcode As String = String.Empty Dim dteLeerlingen As SqlClient.SqlDataReader Dim strVoornaam, strFamilienaam As String 'Initialiseren strVoornaam = InputBox("Voornaam van de leerling", "Zoeken van leerling") strFamilienaam = InputBox("Familienaam van de leerling", "Zoeken van leerling") 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dteVervoer initialiseren scmdOpvragen.Connection = cnnLaatkomers strCommand = "SELECT Voornaam, Familienaam , Klas, Barcode" strCommand &= " FROM tblTeLaatLeerling" strCommand &= " WHERE (Voornaam = N'" & strVoornaam & "') AND (Familienaam = N'" & strFamilienaam & "')" scmdOpvragen.CommandText = strCommand Try 'Connection openen + uitvoeren cnnLaatkomers.Open() dteLeerlingen = scmdOpvragen.ExecuteReader() Do While dteLeerlingen.Read = True strNaam = dteLeerlingen.Item("Voornaam") & " " & dteLeerlingen.Item("Familienaam") & " " & dteLeerlingen.Item("Klas") cboLeerlingen.Items.Add(strNaam) strBarcode = dteLeerlingen.Item("Barcode") Loop 'Datareader sluiten dteLeerlingen.Close() 'Connectie sluiten cnnLaatkomers.Close()
GIP 2009 â&#x20AC;&#x201C; 2010 135
'Controleren van hoeveelheid antwoorden Select Case cboLeerlingen.Items.Count Case 0 MessageBox.Show("Leerling is niet gevonden", "Niet gevonden", MessageBoxButtons.OK) 'Cbo niet weergeven cboLeerlingen.Visible = False Case 1 cboLeerlingen.Text = cboLeerlingen.Items(0) txtCode.Text = strBarcode 'Cbo niet weergeven + clear cboLeerlingen.Visible = False cboLeerlingen.Items.Clear() txtCode.Focus() Case Else 'Cbo weergeven cboLeerlingen.Visible = True cboLeerlingen.Text = "Selecteer" cboLeerlingen.Focus() End Select Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub Private Sub frmAfdrukkenSelecteer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Kolommen toevoegen lsvLijst.Columns.Add("Datum", 70, HorizontalAlignment.Left) lsvLijst.Columns.Add("Naam en Voornaam", 175, HorizontalAlignment.Left) lsvLijst.Columns.Add("Klas", 50, HorizontalAlignment.Left) lsvLijst.Columns.Add("'s Morgens of 's Middags", 150, HorizontalAlignment.Left) lsvLijst.Columns.Add("Gemeente", 85, HorizontalAlignment.Left) lsvLijst.Columns.Add("Tijd", 60, HorizontalAlignment.Left) lsvLijst.Columns.Add("Vervoer", 100, HorizontalAlignment.Left) 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdVervoer As New SqlClient.SqlCommand Dim dteVervoer As SqlClient.SqlDataReader Dim strCommand As String 'cboLeerlingen niet weergeven cboLeerlingen.Visible = False 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dteVervoer initialiseren scmdVervoer.Connection = cnnLaatkomers strCommand = "SELECT VervoerID, Vervoer FROM gebruiker.tblTeLaatVervoer"
GIP 2009 â&#x20AC;&#x201C; 2010 136
scmdVervoer.CommandText = strCommand Try 'Lezen van reader cnnLaatkomers.Open() dteVervoer = scmdVervoer.ExecuteReader Do While dteVervoer.Read = True cboVervoer.Items.Add(dteVervoer.Item("Vervoer")) Loop 'Connection sluiten cnnLaatkomers.Close() Catch ex As Exception MsgBox(ex) End Try End Sub Private Sub btnToevoegen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnToevoegen.Click 'strings aanmaken Dim strBarcode, strMorgen, strMiddag, strVervoer, strGemeente As String strBarcode = String.Empty 'Declaratie van dataobjecten Dim cnnTelaatkomers As New SqlClient.SqlConnection Dim scmdLeerlingen As New SqlClient.SqlCommand Dim sdrLeerlingen As SqlClient.SqlDataReader 'initialisatie cnnTelaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers scmdLeerlingen.Connection = cnnTelaatkomers 'Opmaak van SQL instructie Dim strSQL As String Dim dteDatumDag1 As String = dteDatumPicker1.Value.Day Dim dteDatumMaand1 As String = dteDatumPicker1.Value.Month Dim dteDatumJaar1 As String = dteDatumPicker1.Value.Year Dim dteDatumVandaag1 As String = dteDatumJaar1 & "-" & dteDatumMaand1 & "-" & dteDatumDag1 Dim dteDatumDag2 As String = dteDatumPicker2.Value.Day Dim dteDatumMaand2 As String = dteDatumPicker2.Value.Month Dim dteDatumJaar2 As String = dteDatumPicker2.Value.Year Dim dteDatumVandaag2 As String = dteDatumJaar2 & "-" & dteDatumMaand2 & "-" & dteDatumDag2 'SQL instructie opvullen in de sqlCommand strSQL = "SELECT tblTeLaatLogboek.Datum, tblTeLaatLogboek.Tijd, tblTeLaatLeerling.Voornaam, tblTeLaatLeerling.Familienaam, tblTeLaatLeerling.Klas, " strSQL &= "tblTeLaatLeerling.Gemeente, tblTeLaatLogboek.Ochtend, tblTeLaatLogboek.Middag, tblTeLaatLogboek.VervoerID " strSQL &= "FROM tblTeLaatLogboek INNER JOIN "
GIP 2009 â&#x20AC;&#x201C; 2010 137
strSQL &= "tblTeLaatLeerling ON tblTeLaatLogboek.Barcode = tblTeLaatLeerling.Barcode " 'Controleren + opvullen If chkBarcode.Checked = True Then strBarcode = txtCode.Text If strBarcode.Length = "16" And IsNumeric(strBarcode) Then strSQL &= "WHERE (tblTeLaatLogboek.Barcode = N'" & strBarcode & "') " Else MessageBox.Show("Foutieve ingave bij barcode", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) chkBarcode.Checked = False txtCode.Text = String.Empty Exit Sub End If End If 'controleren + opvullen If chkTussen.Checked = True Then If chkBarcode.Checked = True Then strSQL &= "AND (tblTeLaatLogboek.Datum >= CONVERT(DATETIME, '" & dteDatumVandaag1 & "', 102) AND tblTeLaatLogboek.Datum <= CONVERT(DATETIME, " strSQL &= "'" & dteDatumVandaag2 & "', 102)) " Else strSQL &= "WHERE (tblTeLaatLogboek.Datum >= CONVERT(DATETIME, '" & dteDatumVandaag1 & "', 102) AND tblTeLaatLogboek.Datum <= CONVERT(DATETIME, " strSQL &= "'" & dteDatumVandaag2 & "', 102)) " End If End If 'Controleren + opvullen If chkTijdstip.Checked = True Then If chkBarcode.Checked = True Then strSQL &= "AND (Tijd >= '" & dteTimePicker1.Value.ToShortTimeString & "') AND dteTimePicker2.Value.ToShortTimeString & "')" Else If chkTussen.Checked = True Then strSQL &= "AND (Tijd >= '" & dteTimePicker1.Value.ToShortTimeString & "') AND dteTimePicker2.Value.ToShortTimeString & "')" Else strSQL &= "WHERE (Tijd >= '" dteTimePicker1.Value.ToShortTimeString & "') AND dteTimePicker2.Value.ToShortTimeString & "')" End If End If End If 'Controleren + opvullen If chkMorgenOfMiddag.Checked = True Then
GIP 2009 â&#x20AC;&#x201C; 2010 138
(Tijd <= '" &
(Tijd <= '" & & (Tijd <= '" &
If chkMorgen.Checked = True Then strMorgen = "1" Else strMorgen = "0" End If If chkMiddag.Checked = True Then strMiddag = "1" Else strMiddag = "0" End If If chkMorgen.Checked = True And chkMiddag.Checked = True Then MessageBox.Show("Foutieve ingave bij selectie 's morgens of 's middags", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) chkMorgen.Checked = False chkMiddag.Checked = False Exit Sub End If If chkMorgen.Checked = False And chkMiddag.Checked = False Then MessageBox.Show("Foutieve ingave bij selectie 's morgens of 's middags", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) chkMorgenOfMiddag.Checked = False Exit Sub End If 'Controleren of andere al aan staan If chkBarcode.Checked = True Then strSQL &= "AND (tblTeLaatLogboek.Ochtend = N'" & strMorgen & "') AND (tblTeLaatLogboek.Middag = N'" & strMiddag & "') " Else If chkTussen.Checked = True Then strSQL &= "AND (tblTeLaatLogboek.Ochtend = N'" & strMorgen & "') AND (tblTeLaatLogboek.Middag = N'" & strMiddag & "') " Else If chkTijdstip.Checked = True Then strSQL &= "AND (tblTeLaatLogboek.Ochtend = N'" & strMorgen & "') AND (tblTeLaatLogboek.Middag = N'" & strMiddag & "') " Else strSQL &= "WHERE (tblTeLaatLogboek.Ochtend = N'" & strMorgen & "') AND (tblTeLaatLogboek.Middag = N'" & strMiddag & "') " End If End If End If strSQL &= "AND (tblTeLaatLogboek.Ochtend = N'" & strMorgen & "') AND (tblTeLaatLogboek.Middag = N'" & strMiddag & "') " End If 'Controleren + opvullen If chkVervoer.Checked = True Then
GIP 2009 â&#x20AC;&#x201C; 2010 139
strVervoer = cboVervoer.Text Select Case strVervoer Case "Auto" strVervoer = "1" Case "Bus" strVervoer = "2" Case "Fiets" strVervoer = "3" Case "Metro" strVervoer = "4" Case "Tevoet" strVervoer = "5" Case "Tram" strVervoer = "6" Case "Trein" strVervoer = "7" Case Else MessageBox.Show("Foutieve ingave bij vervoer", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Select If chkBarcode.Checked = True Then strSQL &= "AND (tblTeLaatLogboek.VervoerID = " & strVervoer & ") " Else If chkTussen.Checked = True Then strSQL &= "AND (tblTeLaatLogboek.VervoerID = " & strVervoer & ") " Else If chkTijdstip.Checked = True Then strSQL &= "AND (tblTeLaatLogboek.VervoerID = " & strVervoer & ") " Else If chkMorgenOfMiddag.Checked = True Then strSQL &= "AND (tblTeLaatLogboek.VervoerID = " & strVervoer & ") " Else strSQL &= "WHERE (tblTeLaatLogboek.VervoerID = " & strVervoer & ") " End If End If End If End If End If 'Controleren + opvullen If chkGemeente.Checked = True Then strGemeente = txtGemeente.Text If Not strGemeente = String.Empty Then If chkBarcode.Checked = True Then strSQL &= "AND (tblTeLaatLeerling.Gemeente = N'" & strGemeente & "')" Else If chkTussen.Checked = True Then
GIP 2009 â&#x20AC;&#x201C; 2010 140
strSQL &= "AND (tblTeLaatLeerling.Gemeente = N'" & strGemeente & "')" Else If chkTijdstip.Checked = True Then strSQL &= "AND (tblTeLaatLeerling.Gemeente = N'" & strGemeente & "')" Else If chkMorgenOfMiddag.Checked = True Then strSQL &= "AND (tblTeLaatLeerling.Gemeente = N'" & strGemeente & "')" Else If chkVervoer.Checked = True Then strSQL &= "AND (tblTeLaatLeerling.Gemeente = N'" & strGemeente & "')" Else strSQL &= "WHERE (tblTeLaatLeerling.Gemeente = N'" & strGemeente & "')" End If End If End If End If End If Else MessageBox.Show("Foutieve ingave bij gemeente", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If End If 'SCMD opvullen met de sql code scmdLeerlingen.CommandText = strSQL 'Connectie met de database + opvragen van gegevens Try 'Leegmaken van lsvlijst lsvLijst.Items.Clear() cnnTelaatkomers.Open() sdrLeerlingen = scmdLeerlingen.ExecuteReader Do While sdrLeerlingen.Read = True 'Controleren op ochtend of middag Dim strOchtendOfMiddag As String If sdrLeerlingen.Item("Middag") = True Then strOchtendOfMiddag = "'s Middags" Else strOchtendOfMiddag = "'s Morgens" End If 'Controleren op vervoer Dim strVervoerInvullen As String = sdrLeerlingen.Item("VervoerID") Select Case strVervoerInvullen Case "1" strVervoerInvullen = "Auto" Case "2" strVervoerInvullen = "Bus"
GIP 2009 â&#x20AC;&#x201C; 2010 141
Case "3" strVervoerInvullen Case "4" strVervoerInvullen Case "5" strVervoerInvullen Case "6" strVervoerInvullen Case "7" strVervoerInvullen End Select
= "Fiets" = "Metro" = "Tevoet" = "Tram" = "Trein"
'Declareren van tijd Dim dteTijd As DateTime = sdrLeerlingen.Item("Tijd") dteTijd = dteTijd.ToShortTimeString Dim Inhoud(6) As String Dim LVI As ListViewItem Inhoud(0) = sdrLeerlingen.Item("Datum") Inhoud(1) = sdrLeerlingen.Item("Voornaam") & " " & sdrLeerlingen.Item("Familienaam") Inhoud(2) = sdrLeerlingen.Item("Klas") Inhoud(3) = strOchtendOfMiddag Inhoud(4) = sdrLeerlingen.Item("Gemeente") Inhoud(5) = dteTijd Inhoud(6) = strVervoerInvullen LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) Loop 'Conroleren op inhoud If lsvLijst.Items.Count = 0 Then Dim Inhoud As String Dim LVI As ListViewItem Inhoud = "Geen leerlingen gevonden" LVI = New ListViewItem(Inhoud) lsvLijst.Items.Add(LVI) End If 'connectie en reader afslutien sdrLeerlingen.Close() cnnTelaatkomers.Close() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub Private Sub PrintDocument_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument.PrintPage Dim g As Graphics = e.Graphics Dim l As Integer = 100 'Marge van de linkerkant van de pagina Dim iCount As Integer
GIP 2009 â&#x20AC;&#x201C; 2010 142
Dim f As Font = lsvLijst.Font Dim b As Brush = Brushes.Black 'Tussen de hoofdtitel en de records Dim currentY As Integer = 0 Dim maxY As Integer = 0 'Declareren van lijntjes tussen elk record Dim gap As Integer = 1 'Declareren voor de items uit de listview te halen Dim lvsi As ListViewItem.ListViewSubItem 'Declareren van kolommen Dim colLefts(lsvLijst.Columns.Count) As Integer Dim colWidths(lsvLijst.Columns.Count) As Integer Dim idx As Integer = 0 Dim ii As Integer Dim lr As RectangleF e.HasMorePages = False 'Title Dim headfont As Font 'Marges (X = links, y= boven) Dim X As Integer = 325 Dim Y As Integer = 50 headfont = New Font("Courier New", 16, FontStyle.Bold) e.Graphics.DrawString("Eigen Filter(s)", headfont, Brushes.Black, X, Y) 'Gegevens van filters Dim gegevensfont As Font 'Marges (X = links, y= boven) Dim X1 As Integer = 100 Dim Y1 As Integer = 100 gegevensfont = lsvLijst.Font 'Filters bekijken en in string plaatsen Dim strFilters As String = String.Empty strFilters = "Filter(s)" & vbCrLf & "-----------------" & vbCrLf If chkBarcode.Checked = True Then strFilters &= "Barcode: " & txtCode.Text & vbCrLf End If If chkTussen.Checked = True Then strFilters &= "Datum: " & dteDatumPicker1.Text.ToString & " - " & dteDatumPicker2.Text.ToString & vbCrLf End If If chkTijdstip.Checked = True Then strFilters &= "Tijd: " & dteTimePicker1.Text.ToString & " - " & dteTimePicker2.Text.ToString & vbCrLf End If If chkMorgenOfMiddag.Checked = True Then If chkMorgen.Checked = True Then strFilters &= "Voor- of Namiddag: Voormiddag" & vbCrLf Else strFilters &= "Voor- of Namiddag: Namiddag" & vbCrLf End If End If
GIP 2009 â&#x20AC;&#x201C; 2010 143
If chkVervoer.Checked = True Then strFilters &= "Vervoer: " & cboVervoer.Text & vbCrLf End If If chkGemeente.Checked = True Then strFilters &= "Gemeente: " & txtGemeente.Text End If e.Graphics.DrawString(strFilters, gegevensfont, Brushes.Black, X1, Y1) 'Headings 'Marge bovenaan de pagina currentY = 225 For Each c In lsvLijst.Columns maxY = Math.Max(maxY, g.MeasureString(c.Text, f, c.Width).Height) colLefts(idx) = l colWidths(idx) = c.Width lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY) 'g.DrawString(c.Text, f, b, lr) ' print all columns including hidden columns If lr.Width > 0 Then g.DrawString(c.Text, f, b, lr) l += c.Width idx += 1 Next currentY += maxY + gap g.DrawLine(Pens.Black, 0, currentY, e.PageBounds.Width, currentY) currentY += gap 'Rows iCount = lsvLijst.Items.Count - 1 For ii = CurrRow To iCount If (currentY + maxY + maxY) > e.PageBounds.Height - 50 Then 'jump down another line to see if this line will fit CurrRow = ii - 1 e.HasMorePages = True Exit For 'does next page End If l = 0 maxY = 0 idx = 0 For Each lvsi In lsvLijst.Items(ii).SubItems maxY = Math.Max(maxY, g.MeasureString(lvsi.Text, f, colWidths(idx)).Height) lr = New RectangleF(colLefts(idx), currentY, colWidths(idx), maxY) 'g.DrawString(lvsi.Text, f, b, lr) If lr.Width > 0 Then g.DrawString(lvsi.Text, f, b, lr) idx += 1 Next currentY += maxY + gap Next End Sub
GIP 2009 â&#x20AC;&#x201C; 2010 144
Private Sub btnAfdrukvoorbeeld_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAfdrukvoorbeeld.Click PrintPreviewDialog.Document = PrintDocument PrintPreviewDialog.ShowDialog() End Sub Private Sub btnPrinten_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrinten.Click 'Keuzemogelijkheid voor pagina's PrintDialog1.AllowSomePages = True ' Show the help button. PrintDialog1.ShowHelp = True 'Document dat moet worden afgeprint PrintDialog1.Document = PrintDocument 'Afprinten door dialoogvenster Dim result As DialogResult = PrintDialog1.ShowDialog() 'Ok dan printen If (result = DialogResult.OK) Then PrintDocument.Print() End If End Sub Private Sub btnVorige_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVorige.Click 'Sluiten van formulier Me.Close() 'Openen van startformulier afdrukken 'Formulier openen in container frmAfdrukken.WindowState = FormWindowState.Maximized frmAfdrukken.MdiParent = frmBasis frmAfdrukken.Show() End Sub End Class
GIP 2009 â&#x20AC;&#x201C; 2010 145
4.3.17
frmLeerlingWijzigen.vb
Project
Telaatkomers
Type
Windows applicatie
Doel
Formulier waar leerlingen kunnen worden gewijzigd, toegevoegd of verwijderd.
Printscreen
Besturingselementen Object
Eigenschap
Waarde
frmLeerlingToevoegen
Text
Leerlingen wijzigen
BackgroundImage prjTeLaatKomers.My.Resources.Resources.achtergrond Icon
Icon
btnVeranderen
BackgroundImage System.Drawing.Bitmap
btnVerwijderen
BackgroundImage System.Drawing.Bitmap
btnToevoegen
BackgroundImage System.Drawing.Bitmap
lblStatus BarcodeLabel
Text
Barcode:
GIP 2009 â&#x20AC;&#x201C; 2010 146
txtCode picNietOK
picOK
btnZoeken
BackColor
Transparent
Image
System.Drawing.Bitmap
BackColor
Transparent
Image
System.Drawing.Bitmap
BackgroundImage System.Drawing.Bitmap
cboLeerlingen grpInformatie
Text
Leerling informatie
VoornaamLabel
Text
Voornaam:
FamilienaamLabel
Text
Familienaam:
KlasLabel
Text
Klas:
GemeenteLabel
Text
Gemeente:
TotaalTeLaatLabel
Text
Totaal te laat:
AantalvrStrafstudieLabel
Text
Aantal voor ochtend:
AantalvrOchtendLabel
Text
Aantal voor middag:
TotaalOchtendLabel
Text
Totaal te laat ochtend:
TotaalMiddagLabel
Text
Totaal te laat middag:
txtVoornaam txtFamilienaam txtKlas txtGemeente txtTotaalTeLaat txtOchtend txtMiddag txtTotaalOchtend txtTotaalMiddag btnWijzigen
Text
Wijzigen Verwijderen Toevoegen
Bedoeling: In dit formulier kan de gebruiker alle gegevens van de leerling wijzigen, verwijderen of toevoegen. Procedures GIP 2009 – 2010 147
Object
Gebeurtenis
Doel
btnVeranderen
Click
Gegevens aanpassen met de procedure
btnVerwijderen
Click
Gegevens aanpassen met de procedure
btnToevoegen
Click
Gegevens aanpassen met de procedure
btnZoeken
Click
Zoekopdracht starten naar leerling
cboLeerlingen
SelectedIndexChanged
Bij leerlingen met dezelfde naam wordt dit geopend, daarna dient men een leerling te kiezen om de lijst aan te maken.
btnWijzigen
Click
Gegevens aanpassen, toevoegen of verwijderen
Implementatie Public Class frmLeerlingWijzigen 'Declareren over geheel formulier Dim strBarcode As String = String.Empty Dim strVoornaam, strFamilienaam As String Private Sub txtCode_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtCode.TextChanged If txtCode.TextLength = "16" Then Try 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdLeerling As New SqlClient.SqlCommand Dim scmdBarcode As New SqlClient.SqlCommand Dim strSQL As String = String.Empty Dim strSQLB As String = String.Empty Dim dteLeerling As SqlClient.SqlDataReader 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers If Not IsNumeric(txtCode.Text) Then MessageBox.Show("Foutieve ingave", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error)
GIP 2009 â&#x20AC;&#x201C; 2010 148
Exit Sub End If If lblStatus.Text = "Leerling toevoegen" Then 'Declareren van aantal Dim intAantal As Integer 'dte initialiseren scmdBarcode.Connection = cnnLaatkomers strSQLB = "SELECT COUNT(Barcode) AS Aantal " strSQLB &= "FROM tblTeLaatLeerling " strSQLB &= "GROUP BY Barcode " strSQLB &= "HAVING (Barcode = N'" & txtCode.Text & "')" scmdBarcode.CommandText = strSQLB 'Connectie openen + uitvoer cnnLaatkomers.Open() intAantal = scmdBarcode.ExecuteScalar cnnLaatkomers.Close() 'Actie bij geen barcodes gevonden + omgekeerd If intAantal = 0 Then picOK.Visible = True picNietOK.Visible = False btnWijzigen.Enabled = True Exit Sub Else picOK.Visible = False picNietOK.Visible = True btnWijzigen.Enabled = False Exit Sub End If End If 'Barcode toewijzen strBarcode = txtCode.Text 'Verwijderen van vorige resultaten txtVoornaam.Text = String.Empty txtFamilienaam.Text = String.Empty txtKlas.Text = String.Empty txtGemeente.Text = String.Empty txtTotaalTeLaat.Text = String.Empty txtMiddag.Text = String.Empty txtOchtend.Text = String.Empty txtMiddag.Text = String.Empty txtTotaalOchtend.Text = String.Empty txtTotaalMiddag.Text = String.Empty 'Leerlingen invullen Dim strLeerling As String = txtCode.Text If strLeerling = String.Empty Then
GIP 2009 â&#x20AC;&#x201C; 2010 149
MessageBox.Show("U dient eerst een barcode in te geven", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If 'dte initialiseren scmdLeerling.Connection = cnnLaatkomers strSQL = "SELECT tblTeLaatLeerling.* " strSQL &= "FROM tblTeLaatLeerling " strSQL &= "WHERE (Barcode = N'" & strBarcode & "')" scmdLeerling.CommandText = strSQL 'Connection openen + uitvoeren cnnLaatkomers.Open() dteLeerling = scmdLeerling.ExecuteReader Do While dteLeerling.Read 'Toevoegen txtVoornaam.Text = dteLeerling.Item("Voornaam") txtFamilienaam.Text = dteLeerling.Item("Familienaam") txtKlas.Text = dteLeerling.Item("Klas") txtGemeente.Text = dteLeerling.Item("Gemeente") txtTotaalTeLaat.Text = dteLeerling.Item("TotaalTeLaat") txtMiddag.Text = dteLeerling.Item("AantalvrOchtend") txtOchtend.Text = dteLeerling.Item("AantalvrMiddag") txtMiddag.Text = dteLeerling.Item("AantalvrOchtend") txtTotaalOchtend.Text = dteLeerling.Item("smorgens") txtTotaalMiddag.Text = dteLeerling.Item("smiddags") Loop 'Connectie sluiten cnnLaatkomers.Close() If txtFamilienaam.Text = String.Empty Then MessageBox.Show("Leerling is niet gevonden", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Information) txtCode.Text = String.Empty Exit Sub End If 'Knop wijzigen zichtbaar btnWijzigen.Enabled = True Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try Else 'Geen 16 tekens picNietOK.Visible = False picOK.Visible = False
GIP 2009 â&#x20AC;&#x201C; 2010 150
btnWijzigen.Enabled = False End If End Sub Private Sub btnWijzigen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWijzigen.Click Select Case lblStatus.Text Case "Leerling wijzigen" 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdWijzigen As New SqlClient.SqlCommand Dim strCommand As String Try 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dteVervoer initialiseren scmdWijzigen.Connection = cnnLaatkomers strCommand = "UPDATE tblTeLaatLeerling " strCommand &= "SET Voornaam = N'" & txtVoornaam.Text & "', Familienaam = N'" & txtFamilienaam.Text & "', Klas = N'" & txtKlas.Text & "', Gemeente = N'" & txtGemeente.Text & "', TotaalTeLaat = " & txtTotaalTeLaat.Text & ", AantalvrMiddag = " & txtOchtend.Text & ", AantalvrOchtend = " & txtMiddag.Text strCommand &= " ,smorgens = " & txtTotaalOchtend.Text & ", smiddags = " & txtTotaalMiddag.Text & " " strCommand &= "WHERE (Barcode = N'" & strBarcode & "')" scmdWijzigen.CommandText = strCommand 'Connection openen + uitvoeren cnnLaatkomers.Open() scmdWijzigen.ExecuteNonQuery() 'Connectie sluiten cnnLaatkomers.Close() 'Verwijderen van vorige resultaten txtCode.Text = String.Empty txtVoornaam.Text = String.Empty txtFamilienaam.Text = String.Empty txtKlas.Text = String.Empty txtGemeente.Text = String.Empty txtTotaalTeLaat.Text = String.Empty txtMiddag.Text = String.Empty txtOchtend.Text = String.Empty txtMiddag.Text = String.Empty txtTotaalOchtend.Text = String.Empty txtTotaalMiddag.Text = String.Empty txtCode.Focus() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try Case "Leerling verwijderen"
GIP 2009 â&#x20AC;&#x201C; 2010 151
'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdLeerling As New SqlClient.SqlCommand Dim strSQL As String = String.Empty 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dte initialiseren scmdLeerling.Connection = cnnLaatkomers strSQL = "DELETE FROM tblTeLaatLeerling " strSQL &= "WHERE (Barcode = N'" & strBarcode & "')" scmdLeerling.CommandText = strSQL 'Connection openen + uitvoeren cnnLaatkomers.Open() scmdLeerling.ExecuteReader() 'Connectie sluiten cnnLaatkomers.Close() 'Verwijderen van vorige resultaten txtCode.Text = String.Empty txtVoornaam.Text = String.Empty txtFamilienaam.Text = String.Empty txtKlas.Text = String.Empty txtGemeente.Text = String.Empty txtTotaalTeLaat.Text = String.Empty txtMiddag.Text = String.Empty txtOchtend.Text = String.Empty txtMiddag.Text = String.Empty txtTotaalOchtend.Text = String.Empty txtTotaalMiddag.Text = String.Empty txtCode.Focus() Case "Leerling toevoegen" 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdToevoegen As New SqlClient.SqlCommand Dim strCommand As String Try 'Tekstvakken controleren If txtCode.Text = String.Empty Then MessageBox.Show("Er werd geen barcode ingegeven", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If If txtVoornaam.Text = String.Empty Then MessageBox.Show("Er werd geen voornaam ingegeven", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If If txtFamilienaam.Text = String.Empty Then MessageBox.Show("Er werd geen familienaam ingegeven", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub
GIP 2009 â&#x20AC;&#x201C; 2010 152
End If If txtKlas.Text = String.Empty Then MessageBox.Show("Er werd geen klas ingegeven", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If If txtGemeente.Text = String.Empty Then MessageBox.Show("Er werd geen gemeente ingegeven", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If If txtTotaalTeLaat.Text = String.Empty Then txtTotaalTeLaat.Text = "0" End If If txtTotaalMiddag.Text = String.Empty Then txtTotaalMiddag.Text = "0" End If If txtTotaalOchtend.Text = String.Empty Then txtTotaalOchtend.Text = "0" End If If txtOchtend.Text = String.Empty Then txtOchtend.Text = "0" End If If txtMiddag.Text = String.Empty Then txtMiddag.Text = "0" End If 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dteVervoer initialiseren scmdToevoegen.Connection = cnnLaatkomers strCommand = "INSERT INTO tblTeLaatLeerling " strCommand &= "(Barcode, Voornaam, Familienaam, Klas, Gemeente, TotaalTeLaat, AantalvrMiddag, AantalvrOchtend, smorgens, smiddags) " strCommand &= "VALUES (N'" & txtCode.Text & " ', N'" & txtVoornaam.Text & "', N'" & txtFamilienaam.Text & "', N'" & txtKlas.Text & "', N'" & txtGemeente.Text & "', " & txtTotaalTeLaat.Text & ", " & txtTotaalMiddag.Text & ", " & txtTotaalOchtend.Text & ", " & txtOchtend.Text & ", " & txtMiddag.Text & ")" scmdToevoegen.CommandText = strCommand 'Connection openen + uitvoeren cnnLaatkomers.Open() scmdToevoegen.ExecuteNonQuery() 'Connectie sluiten cnnLaatkomers.Close() 'Verwijderen van vorige resultaten txtCode.Text = String.Empty txtVoornaam.Text = String.Empty txtFamilienaam.Text = String.Empty
GIP 2009 â&#x20AC;&#x201C; 2010 153
txtKlas.Text = String.Empty txtGemeente.Text = String.Empty txtTotaalTeLaat.Text = String.Empty txtMiddag.Text = String.Empty txtOchtend.Text = String.Empty txtMiddag.Text = String.Empty txtTotaalOchtend.Text = String.Empty txtTotaalMiddag.Text = String.Empty txtCode.Focus() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Select End Sub Private Sub frmLeerlingWijzigen_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'pictures helder + omgekeerd met tekstvakken grpInformatie.Enabled = False btnZoeken.Enabled = False txtCode.Enabled = False lblStatus.Text = "Geen actie geselecteerd" picOK.Visible = False picNietOK.Visible = False End Sub Private Sub cboLeerlingen_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboLeerlingen.SelectedIndexChanged 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdOpvragen As New SqlClient.SqlCommand Dim strCommand As String Dim strBarcode As String = String.Empty Dim dteLeerlingen As SqlClient.SqlDataReader Dim strKlas As String = String.Empty 'strKlas initialiseren strKlas = Split(cboLeerlingen.SelectedItem.ToString, " ")(2) 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dteVervoer initialiseren scmdOpvragen.Connection = cnnLaatkomers strCommand = "SELECT Voornaam, Familienaam , Klas, Barcode" strCommand &= " FROM tblTeLaatLeerling" strCommand &= " WHERE (Voornaam = N'" & strVoornaam & "') AND (Familienaam = N'" & strFamilienaam & "')AND (Klas = N'" & strKlas & "')" scmdOpvragen.CommandText = strCommand Try 'Connection openen + uitvoeren cnnLaatkomers.Open() dteLeerlingen = scmdOpvragen.ExecuteReader()
GIP 2009 â&#x20AC;&#x201C; 2010 154
Do While dteLeerlingen.Read = True strBarcode = dteLeerlingen.Item("Barcode") Loop 'Datareader sluiten dteLeerlingen.Close() 'Connectie sluiten cnnLaatkomers.Close() 'txtCode opvullen txtCode.Text = strBarcode 'cboLeerlingen cboLeerlingen.Visible = False cboLeerlingen.Items.Clear() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub Private Sub btnZoeken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnZoeken.Click 'Verwijderen van vorige resultaten txtCode.Text = String.Empty txtVoornaam.Text = String.Empty txtFamilienaam.Text = String.Empty txtKlas.Text = String.Empty txtGemeente.Text = String.Empty txtTotaalTeLaat.Text = String.Empty txtMiddag.Text = String.Empty txtOchtend.Text = String.Empty txtMiddag.Text = String.Empty txtTotaalOchtend.Text = String.Empty txtTotaalMiddag.Text = String.Empty 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdOpvragen As New SqlClient.SqlCommand Dim strCommand, strNaam As String Dim dteLeerlingen As SqlClient.SqlDataReader 'Initialiseren strVoornaam = InputBox("Voornaam van de leerling", "Zoeken van leerling") strFamilienaam = InputBox("Familienaam van de leerling", "Zoeken van leerling") 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dteVervoer initialiseren scmdOpvragen.Connection = cnnLaatkomers strCommand = "SELECT Voornaam, Familienaam , Klas, Barcode" strCommand &= " FROM tblTeLaatLeerling" strCommand &= " WHERE (Voornaam = N'" & strVoornaam & "') AND (Familienaam = N'" & strFamilienaam & "')"
GIP 2009 â&#x20AC;&#x201C; 2010 155
scmdOpvragen.CommandText = strCommand Try 'Connection openen + uitvoeren cnnLaatkomers.Open() dteLeerlingen = scmdOpvragen.ExecuteReader() Do While dteLeerlingen.Read = True strNaam = dteLeerlingen.Item("Voornaam") & " " & dteLeerlingen.Item("Familienaam") & " " & dteLeerlingen.Item("Klas") cboLeerlingen.Items.Add(strNaam) strBarcode = dteLeerlingen.Item("Barcode") Loop 'Datareader sluiten dteLeerlingen.Close() 'Connectie sluiten cnnLaatkomers.Close() 'Controleren van hoeveelheid antwoorden Select Case cboLeerlingen.Items.Count Case 0 MessageBox.Show("Leerling is niet gevonden", "Niet gevonden", MessageBoxButtons.OK) 'Cbo niet weergeven cboLeerlingen.Visible = False Case 1 cboLeerlingen.Text = cboLeerlingen.Items(0) txtCode.Text = strBarcode 'Cbo niet weergeven + clear cboLeerlingen.Visible = False cboLeerlingen.Items.Clear() cboLeerlingen.Text = String.Empty cboLeerlingen.Text = "Selecteer" Case Else 'Cbo weergeven cboLeerlingen.Visible = True End Select Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub Private Sub btnVerwijderen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVerwijderen.Click 'pictures niet helder + omgekeerd met tekstvakken grpInformatie.Enabled = True btnZoeken.Enabled = True txtCode.Enabled = True lblStatus.Text = "Leerling verwijderen" btnWijzigen.Text = "Verwijderen" txtCode.Focus() 'Verwijderen van vorige resultaten txtCode.Text = String.Empty txtVoornaam.Text = String.Empty txtFamilienaam.Text = String.Empty txtKlas.Text = String.Empty txtGemeente.Text = String.Empty txtTotaalTeLaat.Text = String.Empty
GIP 2009 â&#x20AC;&#x201C; 2010 156
txtMiddag.Text = String.Empty txtOchtend.Text = String.Empty txtMiddag.Text = String.Empty txtTotaalOchtend.Text = String.Empty txtTotaalMiddag.Text = String.Empty End Sub Private Sub btnVeranderen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVeranderen.Click 'pictures niet helder + omgekeerd met tekstvakken grpInformatie.Enabled = True btnZoeken.Enabled = True txtCode.Enabled = True lblStatus.Text = "Leerling wijzigen" btnWijzigen.Text = "Wijzigen" txtCode.Focus() 'Verwijderen van vorige resultaten txtCode.Text = String.Empty txtVoornaam.Text = String.Empty txtFamilienaam.Text = String.Empty txtKlas.Text = String.Empty txtGemeente.Text = String.Empty txtTotaalTeLaat.Text = String.Empty txtMiddag.Text = String.Empty txtOchtend.Text = String.Empty txtMiddag.Text = String.Empty txtTotaalOchtend.Text = String.Empty txtTotaalMiddag.Text = String.Empty End Sub Private Sub btnToevoegen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnToevoegen.Click 'pictures niet helder + omgekeerd met tekstvakken grpInformatie.Enabled = True btnZoeken.Enabled = False txtCode.Enabled = True lblStatus.Text = "Leerling toevoegen" btnWijzigen.Text = "Toevoegen" txtCode.Focus() 'Verwijderen van vorige resultaten txtCode.Text = String.Empty txtVoornaam.Text = String.Empty txtFamilienaam.Text = String.Empty txtKlas.Text = String.Empty txtGemeente.Text = String.Empty txtTotaalTeLaat.Text = String.Empty txtMiddag.Text = String.Empty txtOchtend.Text = String.Empty txtMiddag.Text = String.Empty txtTotaalOchtend.Text = String.Empty txtTotaalMiddag.Text = String.Empty End Sub End Class
GIP 2009 â&#x20AC;&#x201C; 2010 157
4.3.18
frmGebruikersWijzigen.vb
Project
Telaatkomers
Type
Windows applicatie
Doel
Formulier waar gebruikers kunnen worden gewijzigd, toegevoegd of verwijderd.
Printscreen
Besturingselementen Object
Eigenschap
Waarde
frmGebruikersWijzigen
Text
Gebruikers wijzigen
BackgroundImag e
prjTeLaatKomers.My.Resources.Resources.achtergro nd
Icon
Icon
BackColor
Transparent
Image
System.Drawing.Bitmap
BackColor
Transparent
Image
System.Drawing.Bitmap
picGebruikerToevoegen
picGebruikerWijzigen
GIP 2009 â&#x20AC;&#x201C; 2010 158
picGebruikerVerwijderen
BackColor
Transparent
Image
System.Drawing.Bitmap
Text
Gebruiker toevoegen
BackColor
Transparent
Text
Gebruikersnaam:
BackColor
Transparent
Text
Wachtwoord:
BackColor
Transparent
Text
Wachtwoord:
BackColor
Transparent
btnOKT
Text
OK
grpGebruikersWijzigen
Text
Gebruiker wijzigen
BackColor
Transparent
Text
Gebruikersnaam:
BackColor
Transparent
Text
Wachtwoord:
BackColor
Transparent
Text
Rechten:
BackColor
Transparent
btnOKW
Text
OK
grpGebruikersVerwijdere n
Text
Gebruiker Verwijderen
BackColor
Transparent
lblGebruikersnaam2
Text
Gebruikersnaam:
BackColor
Transparent
Text
OK
BackColor
Transparent
grpGebruikersToevoegen
GebruikersnaamLabel
WachtwoordLabel
RechtenLabel
GebruikersnaamTextBox WachtwoordTextBox cboRechten
lblGebruikersnaam
lblWachtwoord
lblRechten
cboGebruikers2 WachtwoordTextBox2 cboRechten2
cboGebruikers3 btnOKV
GIP 2009 â&#x20AC;&#x201C; 2010 159
Bedoeling: In dit formulier kan de gebruiker alle gegevens van de leerling wijzigen, verwijderen of toevoegen.
Procedures Object
Gebeurtenis
Doel
picGebruikerToevoegen
Click
grpGebruikersToevoegen inschakelen en gegevens laden
btnOKT
Click
Gebruiker toevoegen
picGebruikerWijzigen
Click
grpGebruikersWijzigen inschakelen en gegevens laden
btnOKW
Click
Gebruiker wijzigen
picGebruikerVerwijderen
Click
grpGebruikersVerwijderen inschakelen en gegevens laden
btnOKV
Click
Gebruiker verwijderen
Implementatie Public Class frmGebruikersWijzigen Private Sub frmGebruikersWijzigen_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'grp Niet zichtbaar grpGebruikersToevoegen.Visible = False grpGebruikersVerwijderen.Visible = False grpGebruikersWijzigen.Visible = False 'cbo's invullen cboRechten.Items.Add("Gebruiker") cboRechten.Items.Add("Administrator") End Sub Private Sub picGebruikerToevoegen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picGebruikerToevoegen.Click 'grp niet zichtbaar grpGebruikersToevoegen.Visible = True grpGebruikersVerwijderen.Visible = False grpGebruikersWijzigen.Visible = False 'Tabindex plaatsen in vak GebruikersnaamTextBox.Focus() GebruikersnaamTextBox.TabIndex = 1
GIP 2009 â&#x20AC;&#x201C; 2010 160
WachtwoordTextBox.TabIndex = 2 cboRechten.TabIndex = 3 End Sub Private Sub picGebruikerWijzigen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picGebruikerWijzigen.Click grpGebruikersToevoegen.Visible = False grpGebruikersVerwijderen.Visible = False grpGebruikersWijzigen.Visible = True 'Tabindex plaatsen in vak cboGebruikers2.Focus() cboGebruikers2.Text = "Selecteer" cboGebruikers2.TabIndex = 1 WachtwoordTextBox2.TabIndex = 2 cboRechten2.TabIndex = 3 'Gebruikers invullen Dim strGebruikers As String 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdGebruiker As New SqlClient.SqlCommand Dim strSQL As String = String.Empty Dim dteGebruiker As SqlClient.SqlDataReader 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dte initialiseren scmdGebruiker.Connection = cnnLaatkomers strSQL = "SELECT Gebruikersnaam, Wachtwoord, Rechten " strSQL &= "FROM tblTeLaatGebruikers " scmdGebruiker.CommandText = strSQL Try 'Connection openen + uitvoeren cnnLaatkomers.Open() dteGebruiker = scmdGebruiker.ExecuteReader cboGebruikers2.Items.Clear() Do While dteGebruiker.Read 'Strings Toevoegen strGebruikers = dteGebruiker.Item("Gebruikersnaam") cboGebruikers2.Items.Add(strGebruikers) Loop 'Connectie sluiten cnnLaatkomers.Close() 'Strings leegmaken WachtwoordTextBox2.Text = String.Empty cboRechten2.Text = String.Empty Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub
GIP 2009 â&#x20AC;&#x201C; 2010 161
Private Sub picGebruikerVerwijderen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picGebruikerVerwijderen.Click grpGebruikersToevoegen.Visible = False grpGebruikersVerwijderen.Visible = True grpGebruikersWijzigen.Visible = False 'Tabindex plaatsen in vak cboGebruikers3.Focus() cboGebruikers3.TabIndex = 1 cboGebruikers3.Text = "Selecteer" 'Gebruikers invullen Dim strGebruikers As String 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdGebruiker As New SqlClient.SqlCommand Dim strSQL As String = String.Empty Dim dteGebruiker As SqlClient.SqlDataReader 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dte initialiseren scmdGebruiker.Connection = cnnLaatkomers strSQL = "SELECT Gebruikersnaam " strSQL &= "FROM tblTeLaatGebruikers " scmdGebruiker.CommandText = strSQL 'Connection openen + uitvoeren Try cnnLaatkomers.Open() dteGebruiker = scmdGebruiker.ExecuteReader cboGebruikers3.Items.Clear() Do While dteGebruiker.Read 'Strings Toevoegen strGebruikers = dteGebruiker.Item("Gebruikersnaam") cboGebruikers3.Items.Add(strGebruikers) Loop 'Connectie sluiten cnnLaatkomers.Close() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub Private Sub btnOKT_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOKT.Click 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdToevoegen As New SqlClient.SqlCommand Dim strCommand As String
GIP 2009 â&#x20AC;&#x201C; 2010 162
Dim strGebruiker, strWachtwoord, strRechten As String Try 'Strings initialiseren strGebruiker = GebruikersnaamTextBox.Text strWachtwoord = WachtwoordTextBox.Text strRechten = cboRechten.Text If strGebruiker = String.Empty Then MessageBox.Show("Geen geldig gebruikersnaam gekozen", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If If strWachtwoord = String.Empty Then MessageBox.Show("Geen geldig wachtwoord gekozen", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If Select Case strRechten Case "Administrator" strRechten = 1 Case "Gebruiker" strRechten = 2 Case Else MessageBox.Show("Geen geldig recht gekozen", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Select 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dteVervoer initialiseren scmdToevoegen.Connection = cnnLaatkomers strCommand = "INSERT INTO gebruiker.tblTeLaatGebruikers " strCommand &= "(Gebruikersnaam, Wachtwoord, Rechten) " strCommand &= "VALUES (N'" & strGebruiker & "', N'" & strWachtwoord & "', " & strRechten & ") " scmdToevoegen.CommandText = strCommand 'Connection openen + uitvoeren cnnLaatkomers.Open() scmdToevoegen.ExecuteNonQuery() 'Connectie sluiten cnnLaatkomers.Close() 'Tekstvakken leegmaken GebruikersnaamTextBox.Text = String.Empty WachtwoordTextBox.Text = String.Empty cboRechten.Text = String.Empty Catch ex As Exception
GIP 2009 â&#x20AC;&#x201C; 2010 163
MessageBox.Show(ex.Message, "Databasefout") End Try End Sub Private Sub cboGebruikers2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboGebruikers2.SelectedIndexChanged 'Gebruikers invullen Dim strGebruikers As String = String.Empty Dim strWachtwoord As String = String.Empty Dim strRechten As String = String.Empty 'Gebruiker initialiseren strGebruikers = cboGebruikers2.Text 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdGebruiker As New SqlClient.SqlCommand Dim strSQL As String = String.Empty Dim dteGebruiker As SqlClient.SqlDataReader 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dte initialiseren scmdGebruiker.Connection = cnnLaatkomers strSQL = "SELECT Gebruikersnaam, Wachtwoord, Rechten " strSQL &= "FROM tblTeLaatGebruikers " strSQL &= "WHERE (Gebruikersnaam = N'" & strGebruikers & "')" scmdGebruiker.CommandText = strSQL 'Connection openen + uitvoeren Try cnnLaatkomers.Open() dteGebruiker = scmdGebruiker.ExecuteReader Do While dteGebruiker.Read 'Strings Toevoegen strWachtwoord = dteGebruiker.Item("Wachtwoord") strRechten = dteGebruiker.Item("Rechten") Loop If strRechten = "1" Then strRechten = "Administrator" Else strRechten = "Gebruiker" End If 'Strings toevoegen in tekstvak WachtwoordTextBox2.Text = strWachtwoord cboRechten2.Items.Clear() cboRechten2.Items.Add("Administrator") cboRechten2.Items.Add("Gebruiker") cboRechten2.Text = strRechten
GIP 2009 â&#x20AC;&#x201C; 2010 164
'Connectie sluiten cnnLaatkomers.Close() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub Private Sub btnOKW_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOKW.Click 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdWijzigen As New SqlClient.SqlCommand Dim strCommand As String Dim strGebruiker, strWachtwoord, strRechten As String Try 'Strings initialiseren strGebruiker = cboGebruikers2.Text strWachtwoord = WachtwoordTextBox2.Text strRechten = cboRechten2.Text If strGebruiker = String.Empty Then MessageBox.Show("Geen geldig gebruikersnaam gekozen", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If If strWachtwoord = String.Empty Then MessageBox.Show("Geen geldig wachtwoord gekozen", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If Select Case strRechten Case "Administrator" strRechten = 1 Case "Gebruiker" strRechten = 2 Case Else MessageBox.Show("Geen geldig recht gekozen", "Fout", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Select 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dteVervoer initialiseren scmdWijzigen.Connection = cnnLaatkomers strCommand = "UPDATE tblTeLaatGebruikers " strCommand &= "SET Gebruikersnaam = N'" & strGebruiker & "', Wachtwoord = N'" & strWachtwoord & "', Rechten = " & strRechten & " " strCommand &= "WHERE (Gebruikersnaam = N'" & strGebruiker & "') "
GIP 2009 â&#x20AC;&#x201C; 2010 165
scmdWijzigen.CommandText = strCommand 'Connection openen + uitvoeren cnnLaatkomers.Open() scmdWijzigen.ExecuteNonQuery() 'Connectie sluiten cnnLaatkomers.Close() 'Tekstvakken leegmaken cboGebruikers2.Text = "Selecteer" WachtwoordTextBox2.Text = String.Empty cboRechten2.Text = String.Empty Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub Private Sub btnOKV_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOKV.Click 'Declareren Dim strGebruiker As String = cboGebruikers3.Text 'declareren van sql Dim cnnLaatkomers As New SqlClient.SqlConnection Dim scmdGebruiker As New SqlClient.SqlCommand Dim strSQL As String = String.Empty 'Cnn initialiseren cnnLaatkomers.ConnectionString = My.Settings.sjzTeLaatkomers 'dte initialiseren Try scmdGebruiker.Connection = cnnLaatkomers strSQL = "DELETE FROM tblTeLaatGebruikers " strSQL &= "WHERE (Gebruikersnaam = N'" & strGebruiker & "') " scmdGebruiker.CommandText = strSQL 'Connection openen + uitvoeren cnnLaatkomers.Open() scmdGebruiker.ExecuteReader() cboGebruikers3.Text = "Selecteer" cboGebruikers3.Items.Remove(strGebruiker) 'Connectie sluiten cnnLaatkomers.Close() Catch ex As Exception MessageBox.Show(ex.Message, "Databasefout") End Try End Sub End Class
GIP 2009 â&#x20AC;&#x201C; 2010 166
5 Richtingspecifiek Engels 5.1 5.1.1 A) A1)
Software/hardware suppliers in the UK List of 10 software/hardware suppliers Software S.P.R.
URL: http://www.spr.co.uk Email: info@spr.co.uk SPR Computer Consultants The Atrium Business Centre North Caldeen Road Coatbridge,ML5 4EF, U.K. Tel: 0845 123 52 84 Fax: 0845 127 58 69 A2)
The computer shop
URL: http://nbs-thecomputershop.com/default.aspx Email: info@nbs-thecomputershop.com Northern Binary Systems 15 Hencotes Hexham Northumberland NE46 2EQ Tel: 0871 0500866 (Office) 0905 0533008 (Technical Support) 50p/Minute
GIP 2009 â&#x20AC;&#x201C; 2010 167
A3)
Bizezia
URL: http://bizezia.com/Home Bizezia Ltd CityCal House 12 Bridge Road Business Park Bridge Road, Haywards Heath West Sussex RH16 1TX United Kingdom Tel: +44 (0)870 389 1420 Fax: +44 (0)870 389 1425 A4)
Crucial software
Email: ussales@crucialsoftware.com URL: http://www.crucialsoftware.com 25 Smith Street, Suite 305 Nanuet, NY 10954 Phone: 877-666-5766 • 845-624-7785 Fax: 845-624-7765 A5)
Salford software
Email: enquiries@salfordsoftware.co.uk URL: http://www.salfordsoftware.co.uk Salford Software Ltd. Lancastrian Office Centre Talbot Road Old Trafford M32 0FP Phone: +44 (0)845 413 0820 Fax: +44 (0)845 413 0821
GIP 2009 – 2010 168
B)
Hardware
B1)
Techstore
URL: http://www.techstore.co.uk Tel: 0871 230 7078 B2)
EC computers
URL: http://www.eccomputers.co.uk EC Computers Ltd The Laurels Stone, Berkeley Gloucestershire GL13 9LD Tel: 0845 070 8010 Fax: 0845 017 8810 B3)
Sakernet
Url: http://www.sakernet.com Butts Business Centre Fowlmere Royston Herts SG8 7SL Tel: 01763 208247 Fax: 01763 209019 B4)
Bluegoose Systems
Url: http://www.bluegoosesystems.co.uk 4 Whitebridge Road Onchan Isle of Man IM3 4HR United Kingdom Tel: 01624 671719 Fax: 01624 620179 GIP 2009 â&#x20AC;&#x201C; 2010 169
B5)
Gasteiner
Url: http://www.gasteiner.com 18 - 22 Sterling Way London United Kingdom N18 2XZ Tel: +44 (0) 2083456000
GIP 2009 â&#x20AC;&#x201C; 2010 170
5.1.2 A1)
Letter of enquiry Letter 1 Diksmuidse Heerweg 284 Sint â&#x20AC;&#x201C; Andries 8200 Bruges Belgium 22 October 2009
Northern Binary Systems 15 Hencotes Hexham Northumberland NE46 2EQ Dear Sir or Madam When I was surfing on the internet, looking for Microsoft Office, I came across your site. We have a large company and we are interested in installing Office on all our computers. But we could not find any prices or information about the software on your website. We would appreciate if you could send us your latest catalogues and price lists, including details of quantity discounts. We are looking forward to hearing from you.
Yours faithfully
Karel Stevens Managing Director
GIP 2009 â&#x20AC;&#x201C; 2010 171
A2)
Letter 2 Diksmuidse Heerweg 284 Sint â&#x20AC;&#x201C; Andries 8200 Bruges Belgium 22 October 2009
Gasteiner 18 - 22 Sterling Way London United Kingdom N18 2XZ Dear Sir or Madam My name is Karel Stevens, I study ICT at the Sint-Jozefinstituut in Bruges. I was looking for Hardware/software providers on the web for an assignment and I am interested in the technologies your company provides. Is it possible to send me a catalogue with all your latest products including prices and other useful information? Yours faithfully
Karel Stevens
GIP 2009 â&#x20AC;&#x201C; 2010 172
5.1.3
Compare 2 websites
Website 1: http://nbs-thecomputershop.com/default.aspx Website 2: http://www.gasteiner.com/ A)
What is good about them?
Website 1: There is an online store, with both hardware and software. You can easily find details about the products such as price and other product details. Customers are able to post reviews. The website is also very up to date, the newest range of technology is available. Website 2: There is a wide range of products which you can buy in the online store. Both hardware components and software products are available. Visitors can easily navigate through the site. B)
What kind of information do they provide?
Website 1: They give a lot of information about themselves and about the products that are for sale. They also explain how they can help you fix your IT problems as fast and most effective as possible. Website 2: They do not provide information about themselves, but about the products that they sell. They also give information about what services are available to fix any PC problems.
GIP 2009 â&#x20AC;&#x201C; 2010 173
5.2 A1)
English website Index.html with home.html
Welcome This website is made by Karel Stevens - Student 6IB as part of the GIP. to get more information about me click here. This website is made for people who don't know anything about Apple, here they get a quick overview of the different products that are available in the stores and the history of Apple Inc. To ask questions or discuss certain products you can always go to the forum.
GIP 2009 â&#x20AC;&#x201C; 2010 174
A2)
Products.html
Products Desktops iMac
An all-in-one computer, so everything is built in the monitor (hard drive, speakers, microphone, ...). These computers are often used for video-editing and movie productions.
Mac mini
This is the smallest and cheapest Mac, meant for people who want to get to know Mac OS X. Monitor, keyboard and mouse are not included in the price.
GIP 2009 â&#x20AC;&#x201C; 2010 175
Mac pro
This is the strongest type of all the Macs, this Mac is the most expensive but also the faster computer that is produced.
Laptops MacBook
A laptop which is meant for the normal customers, it’s a relatively cheap laptop.
MacBook Air
This laptop is pretty much the same as the MacBook but it is specially made to get carried around, so it is very light and very thin.
MacBook Pro
This laptop is meant for professional applications, this is a stronger but more expensive version of the MacBook.
iPod's The iPod, launched on October 23, 2001, is a collective term for a series of digital music players. All models (except for the iPod Shuffle) have a monitor for displaying information to the user and to let the user scroll through the menus. With all the iPods that have a screen, there is the possibility of playing movies, showing pictures, playing games, ... . iPod Classic
The iPod Classic is the basic type of iPods and is the largest of them all. It’s a heavier, but has a larger storage capacity than the rest.
iPod Nano
The Nano is a smaller version of the iPod Classic, is lighter, but also has a smaller storage capacity.
iPod Shuffle
The smallest iPod available, this iPod has no screen and is also a lot cheaper. Shuffles can also be used as a memory stick using the built-in USB connector.
iPod Touch
This iPod is with a touch screen and Wi-Fi for internet access, thus providing the user the ability to personalize his iPod by downloading all sorts of applications.
iPhone
GIP 2009 – 2010 176
iPhone
The iPhone is a mobile phone from Apple, it's a combination of an iPod, cell phone and PDA, equipped with a touch screen.
iPad iPad
The iPad is a portable multimedia device, a computer with a multi-touch screen. This device is designed for reading books, listening to music, watching movies, playing video games, emailing and internet browsing.
Accessoires Of course there is the possibility to buy many accessories for the products you buy, for a list of these purchases, I refer to the online Apple store. click here: http://store.apple.com/nl
GIP 2009 â&#x20AC;&#x201C; 2010 177
A3)
History.html
History Here you can find a list, which gives a quick view of the evolution of Apple.
1976 - 1980
- Apple I: handmade motherboard with CPU, RAM and basic textual-video chips - Apple II: colour graphics - Xerox provided Apple with graphical user interfaces
1981 - 1985
- Apple Lisa: first personal computer with a GUI - the Macintosh: advanced graphics capabilities
GIP 2009 â&#x20AC;&#x201C; 2010 178
1986 - 1993
- The PowerBook: modern form and ergonomic layout of the laptop computer
1994 - 1997
- Power Macintosh: the first of many Apple computers which used IBM's PowerPC processors. - Apple would join Microsoft to release new versions of Microsoft Office for the Macintosh. - Apple introduced the Apple Store
1998 - 2005
- introduction of the iMac: a new all-in-one computer - a lot of changes in the Operating System
2005 - 2007
- Intel-based computers: Power Mac, iBook, PowerBook, ... - Boot camp to help user install Windows alongside Mac OS X
2007 - now
- introductions of the iPhone, iPod Touch, iPad, Apple TV, ... .
GIP 2009 â&#x20AC;&#x201C; 2010 179
A4)
Contact.html
Contact about me Hello, My name is Karel Stevens, I am a last year student IT from the Sint-Jozefinstitute in Bruges. I made this site as a part of the GIP. I am 17 years old, I live in Sint-Andries and in my free time I go swimming, play basketball, go out with friends, play games, ... .
GIP 2009 â&#x20AC;&#x201C; 2010 180
Interesting links
http://www.apple.nl http://www.macfan.nl http://macwereld.nl http://ukmac.net http://www.macgamefiles.com
A5)
...
forum
GIP 2009 – 2010 181
5.3
Besluit
In het begin van het jaar hoopte ik met de GIP volgende doelstellingen te bereiken:
Leren te plannen Leren om steeds verder te bouwen op de kennis die ik verwierf Leren met de stage hoe het bedrijfsleven er aan toe ging Een duidelijk zicht te krijgen over welke studierichting ik later zou volgen. Aan deze doelstellingen heb ik grotendeels voldaan. Ik heb nu een beter zicht op het bedrijfsleven en over de studierichting die ik later wil volgen. Toch heb ik nog geen definitieve beslissing genomen. De proef heeft mij ook veel geleerd om op voorhand te werken. De stage zelf vond ik een zeer toffe en leerrijke ervaring. Ik heb veel meer praktische dingen geleerd door ze zelf te doen, dan door ze te bestuderen in de cursus. Ik heb veel voorkomende problemen leren oplossen in het bedrijf, zoals het vermaken van het netwerk door kapotte kabels te vervangen. Als suggestie voor een verbetering voor volgende jaren stel ik voor om leerkrachten dikwijls te laten herhalen wanneer leerlingen precies hun opdracht moeten ingeven. Hoewel sommige leerkrachten zich hieraan zeker voldoen, was er bij bepaalde vakken soms enige verwarring. Door de data dikwijls te herhalen kan dit vermeden worden.
GIP 2009 â&#x20AC;&#x201C; 2010 182
Bijlagen 5.4
Handleiding Telaatkomers
Inhoudsopgave INLEIDING ....................................................................................................................................................... 184 START
....................................................................................................................................................... 184
INLOGGEN ....................................................................................................................................................... 184 UITLOGGEN ....................................................................................................................................................... 184 AFSLUITEN ....................................................................................................................................................... 184 ADMINISTRATIE.............................................................................................................................................. 185 INLEIDING ....................................................................................................................................................... 185 SCANNEN ....................................................................................................................................................... 185 SCANNEN VOOR 8 UUR.......................................................................................................................................... 185 LIJST AANMAKEN ................................................................................................................................................. 186 Voor ochtend .................................................................................................................................................. 186 Voor middag ................................................................................................................................................... 187 Strafstudies ..................................................................................................................................................... 188 AFDRUKKEN ................................................................................................................................................... 189 LEERLING-INFORMATIE .................................................................................................................................. 190 GEBRUIKERS ................................................................................................................................................... 190
5.4.1
Inleiding
Deze handleiding bevat informatie over het gebruik van het project prjTelaatKomers. De handleiding is onderverdeeld in dezelfde wijze als de menubalk in het project. A) A1)
Start Inloggen Bij het opstarten van het programma krijgt u een laadscherm te zien (foto links). Dit scherm toont de laadstatus van het programma.
Het volgende scherm is het inlogscherm. Hier kunt u inloggen met uw gebruikersnaam en wachtwoord, of het programma afsluiten.
A2)
Uitloggen
Door dit menu – item aan te klikken logt u de huidige gebruiker uit en krijgt u opnieuw het inlogscherm te zien. A3)
Afsluiten
Door dit menu – item aan te klikken sluit u heel het programma af, de aangemelde gebruiker wordt ook automatisch afgemeld.
GIP 2009 – 2010 184
5.4.2 A)
Administratie Inleiding
Onder administratie vindt u de functies om leerlingen in te scannen en lijsten te maken van bv. Alle leerlingen die deze week naar de strafstudie zullen moeten komen omdat ze teveel keer te laat op school aangekomen zijn.
B)
Scannen Wanneer een leerling te laat gekomen is wordt hij/zij ingescand en de barcode van die leerling(e) word weergegeven. Eventuele reden kan opgegeven worden, samen met het vervoer, een opmerking, enz. . Druk op het plusje om alles op te slaan. Wanneer een leerling zijn kaart niet meeheeft, of deze niet meer werkt, druk dan op het vergrootglas om de naam van die leerling in te geven en deze zo te zoeken.
C)
Scannen voor 8 uur De bedoeling van dit scherm is het in scannen van de leerlingen die elke dag voor 8uur op school moeten zijn. Wanneer deze leerling niet op tijd is wordt hij toegevoegd aan een lijst met leerlingen die strafstudie moeten volgen (zie Lijst aanmaken > Strafstudies). Druk op het vergrootglas om leerling op naam te zoeken. Druk op het plusje om op te slaan.
GIP 2009 â&#x20AC;&#x201C; 2010 185
5.4.3 A)
Lijst aanmaken Voor ochtend
Klik op nieuwe lijst aanmaken ( ) om een lijst aan te maken met alle leerlingen die volgende week voor 8uur op school moeten zijn. Door op de printer te klikken drukt u deze lijst af en via de printer met het vergrootglas krijgt u een afdrukvoorbeeld.
Door op Wis lijst ( ) te klikken wist u deze lijst in de databank! Deze handeling kan niet ongedaan gemaakt worden!
Elke week op donderdag moet de lijst worden aangemaakt. Na het afprinten dient deze lijst te worden gewist.
GIP 2009 â&#x20AC;&#x201C; 2010 186
B)
Voor middag
Klik op nieuwe lijst aanmaken ( ) om een lijst aan te maken met alle leerlingen die op school moeten blijven over de middag. Door op de printer te klikken drukt u deze lijst af en via de printer met het vergrootglas krijgt u een afdrukvoorbeeld.
Door op Wis lijst ( ) te klikken wist u deze lijst in de databank! Deze handeling kan niet ongedaan gemaakt worden!
Elke week op donderdag moet de lijst worden aangemaakt. Na het afprinten dient deze lijst te worden gewist.
GIP 2009 â&#x20AC;&#x201C; 2010 187
C)
Strafstudies
Klik op nieuwe lijst aanmaken ( ) om een lijst aan te maken met alle leerlingen die naar de strafstudie moeten gaan. Door op de printer te klikken drukt u deze lijst af en via de printer met het vergrootglas krijgt u een afdrukvoorbeeld.
Door op Wis lijst ( ) te klikken wist u deze lijst in de databank! Deze handeling kan niet ongedaan gemaakt worden!
Elke week op vrijdag moet de lijst worden aangemaakt. Na het afprinten dient deze lijst te worden gewist.
GIP 2009 â&#x20AC;&#x201C; 2010 188
5.4.4
Afdrukken Op dit scherm bepaalt u welke lijst van leerlingen die u wilt afdrukken. U heeft keuze uit lijsten van: De hele dag o Enkel de voormiddag o Enkel de namiddag 1 bepaalde datum Tussen 2 datums 1 specifieke leerling Een eigen filter Bij eigen filter kunt u veel specifieker kiezen vb. een bepaalde tijd (voorbeeld van 12.30u tot 13.00u). Druk op het groene vinkje om uw keuze te bevestigen.
Alle formulieren van afdrukken zien er ongeveer zo uit. Kies indien nodig een datum om de lijst van die dag te creëren. Door op de printer te klikken drukt u deze lijst af en via de printer met het vergrootglas krijgt u een afdrukvoorbeeld. Druk op het groene pijltje om naar het startscherm van afdrukken terug te keren.
GIP 2009 – 2010 189
5.4.5
Leerling-informatie Dit formulier geeft de mogelijkheid om de gegevens van een leerling te wijzigen, een leerling te verwijderen of toe te voegen. Stap 1: Kies uw bewerking: Klik ( ) om de gegevens van een leerling te wijzigen. Klik ( ) om een leerling en diens gegevens te verwijderen. Klik ( ) om een leerling toe te voegen. Stap 2: Klik onderaan op de knop om de gegevens te updaten of te verwijderen
5.4.6
Gebruikers Dit formulier is enkel toegankelijk voor de mensen met administratorrechten. Hier kunt u de gegevens van een gebruiker wijzigen (naam, wachtwoord, rechten (administrator of niet)). kies uw bewerking
Klik op om een nieuwe gebruiker te maken. Klik op om de gegevens van een gebruiker te wijzigen Klik op om een gebruiker te verwijderen.
GIP 2009 – 2010 190
5.5
Curriculum vittae
Curriculum Vitae PERSOONLIJKE GEGEVENS Naam: Adres: Telefoon: Gsm: E-mail: Nationaliteit: Geboorteplaats: Geboortedatum:
Karel Stevens Diksmuidse Heerweg, 8200 Sint-Andries 050 81 39 05 0477 07 42 45 Karel_stevens@hotmail.com Belg Brasschaat 24 augustus 1992
OPLEIDING
2004 - 2005
Latijn (ASO) Sint-Lodewijkscollege Magdalenastraat 8000 Brugge
2005 - 2008
Moderne wetenschappen (ASO) Sint-Lodewijkscollege Magdalenastraat 8000 Brugge
2008 - nu
Informatica – Beheer (TSO) Sint-Jozefsinstituut Zilverstraat 26 8000 Brugge
Vaardigheden Sociaal ik ben monitor bij de CM van Brugge (Kazou). Flexibel Ik kan mij goed aanpassen aan nieuwe situaties. vb.: Nieuwe werkprogramma’s, …
GIP 2009 – 2010 191
Ordelijk Ik vind orde belangrijk om snel een overzicht van zaken te kunnen maken. KENNIS Softwarepakketten (excel, word, acces, powerpoint, DreamWeaver) Software-Ontwikkeling (Visual Basic) Talenkennis: Nederlands Moedertaal Schrijven Spreken Frans Matig niet goed Engels Goed goed
Ervaring 2 weken stage in het informaticabedrijf ECG â&#x20AC;&#x201C; PC Blankenberge
GIP 2009 â&#x20AC;&#x201C; 2010 192