Random Access Files

Voorbeeld Form

Om het een en ander te verduidelijken, wordt er gebruik gemaakt van het invoerformulier zoals hier is afgebeeld. In dit formulier dient de ID, voornaam, achternaam en de leeftijd van een persoon te worden ingevuld. De ID wordt gebruikt als positie in de Random file voor het opslaan van de data. Dus op positie 5 staan de gegegens van de persoon met als ID nummer 5.

voorbeeld Form

Het formulier uit 4 textboxen en 2 knoppen. De knop 'Opslaan' slaat de gegevens op in een Random Access file. De knop 'Toon record' geeft de gegevens weer die behoren bij het opgegeven ID nummer.

Random Access Files

Declaratie variabelen

Voordat een Random Access file geopend wordt, dient de struktuur welke correspondeert met de opgeslagen gegevens te worden vastgelegd. Als voorbeeld gebruiken we een gegevensbestand welke we Werknemers hebben genoemd. Dit bestand is opgebouwd uit persoonsgegevens. Voor elke Persoon bewaren we de ID, voornaam, achternaam en leeftijd.

Voor het declareren van de gegevens wordt gebruik gemaakt van een 'Structure'.

declaratie structure

Een volledig opgeslagen set van gegevens(ID, voornaam, achternaam, leeftijd) noemen we een record. In een Random Access file dienen alle records dezelfde lengte te hebben. Om de lengte van strings vast te leggen, gebruik je 'VBFixedString()'. Als de ingevoerde string kleiner is dan het opgegeven aantal tekens, dan wordt deze door VB aangevuld met lege ruimtes. Als de string langer is dan het opgegeven aantal tekens, dan wordt deze afgebroken.

De declaratie dient boven aan de code te staan, net onder de regel 'Public class Form1'. De declaratie kan daarna gevolgd worden door andere declaraties.

Random Access Files

Opslaan data

De code leest de ingevoerde gegevens uit de textboxen en slaat deze vervolgens op als een record. De positie van de record in de Random file komt in dit geval overeen met het ingevoerde ID nummer. De ingevoerde gegevens worden opgeslagen in de variabele 'Werknemer'. Deze variabele is gedeclareerd als type 'Persoon'

Voor het openen van het bestand met 'FileOpen' dient de laatste vrije positie in het bestand bekend te zijn. Het eenvoudigst doe je dat door de variabele gelijk te stellen aan de functie 'FreeFile()', zodat één en ander door VB wordt ingevuld.

Vervolgens geef je aan op welke positie de record weggeschreven dient te worden en middels de functie FilePut worden tenslotte de gegevens geschreven naar de Random Access file. Vergeet niet dat de file na gebruik gesloten dient te worden !!

code opslaan data

Random Access Files

Oproepen data

Om een record te tonen zouden we op dezelfde manier te werk kunnen gaan als voor het opslaan van een record. D.w.z. we beginnen met de declaratie van de variabele 'werknemer' van het type 'Persoon'. Echter als we dat zouden doen dan geeft het programma een foutmelding bij de regel 'FileGet'. Dit komt omdat 'FileGet' als tweede argument een variabele vraagt van het type 'ValueType' en dat bovendien ook van het type ByRef moet zijn. Nu is het echter zo dat alle variabelen gedeclareerd middels een 'Structure' altijd van het type 'ByVal' zijn. Dit kunnen we op twee manieren oplossen. De eerste methode is om de 'Option Strict' op 'off' te zetten. Dit raden we echter ten sterkste af! De tweede methode is om een variabele te maken van het type 'ValueType' en deze later weer om te zetten in het type 'Persoon'. In onderstaand voorbeeld is voor de tweede methode gekozen.

Bovenaan staat de declaratie van de variabele 'gegevensWerknemer' van het type 'valueType'. Vervolgens wordt de grootte van het bestand bepaald middels de functie 'FreeFile()'. Het bestand wordt geopend met 'FileOpen()' en met de functie 'FileGet()' worden de gegevens gelezen in de variabele 'gegevensWerknemer'.

Om de gegevens zichtbaar te kunnen maken wordt er een variabele gedeclareerd van het type 'persoon. De variabele 'gegevensWerknemer' wordt omgezet naar het type 'Persoon' en wordt gelijk gesteld aan de variabele 'werknemer'. Vervolgens verschijnen alle gegevens in de textboxen.

toon records random file

Random Access Files

Wissen data

Om data te wissen kunt u de textboxen leeg maken en deze vervolgens opslaan op de te wissen lokatie in het bestand. De record bestaat dan echter nog steeds. In de meeste gevallen wil je geen lege ruimtes in je bestand, welke het bestand onnodig groot maken.

Wat je in dat geval kunt doen is een nieuw bestand maken, waarin je alle records kopieert (met uitzondering van de lege records). Vervolgens sluit je het originele bestand af en verwijder je het bestand met bijvoorbeeld de functie Kill(). Als laatste wijzig je de naam van het gekopieerde bestand in de naam van het originele bestand.

Echt handig is dit niet, maar er is helaas geen andere methode beschikbaar!

Meer informatie over het bewaren en opvragen van databestanden kun je terug vinden in het boek 'Visual Basic voor Beginners'. Klik op onderstaande knop voor meer informatie
Info

E-boek of paperback

Bestel Het Boek Vandaag Nog!

Het boek 'Visual Basic voor Beginners' is leverbaar als E-boek, maar ook als paperback

E-boek

€ 21,95

Na betaling ontvangt u de E-boek versie als pdf bestand in uw mailbox.

Paperback

€ 34,95

Klik op de koop-knop om het boek te rechtstreeks bestellen bij de uitgever.