Database Range
Database Listobject
Userform als database-invoerscherm

1 Userform & Database

Met een userform kun je een gebruiker eenvoudig gegevens in een database laten invoeren, wijzigen of verwijderen.
Je kunt de gebruiker volledig begeleiden, zodat hij/zij geen fouten kan maken en geen onherstelbare wijzigingen in de database kan aanbrengen.

Deze pagina bevat 2 voorbeeldbestanden.
In Excel 2007 is de 'intelligente Tabel' (in VBA 'Listobject') geïntroduceerd.
Het 1e voorbeeld gaat uit van de situatie zonder Listobject, het tweede voorbeeld illustreert de combinatie van het Userform met een Database die als intelligente tabel is opgeslagen.

De voorbeeldbestanden bevatten een tot de kern beperkt voorbeeld van zo'n userform.
De gegevens van de database staan in het verborgen werkblad 'Data', vanaf cel A1.
De 1e rij in het werkblad 'Data' bevat de veldnamen van de database.
De gebruiker kan met het userform alle bewerkingen op de database uitvoeren (invoeren, wijzigen en verwijderen van records).
De effekten daarvan worden opgeslagen in de combobox in het userform.
De database blijft echter onaangeroerd.
Pas als de gebruiker op de knop met het 'Save' icoon klikt, worden alle door de gebruiker ingevoerde wijzigingen in de database doorgevoerd.

Doel van dit voorbeeld:

- illustratie hoe het aantal lees/schrijfbewerkingen in een werkblad tot een minimum beperkt kan blijven.
- het gebruik van een combobox als 'afspiegeling' van de database
- een combobox, ingesteld als keuzelijst (dropdownlist; .style=2)
- het inlezen van een 2-dimensionele array in een combobox met 1 VBA-opdracht: .List
- het doorgeven van gegevens met gebruik van eigenschappen van objekten.

2 Userform

Elementen in het Userform:

- 1 combobox om het te bewerken record te selecteren (c_01)
- 6 labels die de kolomnamen (veldnamen) van de database bevatten (L_01 t/m L_06)
- 6 tekstvakken met gegevens van een record per veld; hier kunnen de gegevens worden gewijzigd (T_00 t/m T_05)
- 1 knop om een nieuw record toe te voegen (B_01)
- 1 knop om het aktieve record te verwijderen (B_02)
- 1 knop om de gewijzigde gegevens op te slaan in het werkboek (B_03)

Wanneer het userform wordt geladen:
- sorteer de database op de eerste kolom
- lees de databasegegevens en zet die in de combobox
- zet de veldnamen in de titels via de eigenschap 'Caption'

3 Wijzig een record

- selecteer het record in de combobox
- wijzig een of meer van de gegevens in de tekstvakken
- iedere wijziging in een tekstvak wordt meteen doorgevoerd in de 'database' in combobox c_01

4 Voeg een record toe

- klik op de + knop in het userform
- vul de tekstvakken met gegevens

5 Verwijder een record

- selecteer het record in de combobox
- klik op de X knop
- het record wordt alleen uit de combobox verwijderd
- de combobox toont het eerste item in de combobox
- pas als de gebruiker op de 'Save' knop klikt wordt dit record definitief uit de database verwijderd

6 Sla de wijzigingen op

- maak de bestaande database leeg, met uitzondering van de 1e rij met veldnamen
- schrijf de gegevens van de combobox naar het werkblad
- het userform wordt alleen maar onzichtbaar gemaakt; als je het weer oproept kun je gewoon doorwerken waar je gebleven was.

7 Sluit het userform zonder de wijzigingen op te slaan

Waneer de gebruiker het Userform afsluit met het kruisje in de rechterbovenhoek wordt het userform uit het geheugen verwijderd en gaan alle nog niet opgeslagen wijzigingen verloren.