4.3    Werken met formulieren en subformulieren

4.3.1    Formulieren met meerdere tabellen op basis van een query

Open je formulier "Invoerboeken". In je formulierweergave kun je zien bij welke Uitg_nr een bepaalde boek gekocht werd. Je kunt via dit formulier echter niet weten welke uitgeverij dit nu juist is (tenzij je alle nummers van buiten kent).

Om in frmInvoerboeken ook de naam van de uitgeverij te plaatsen hebben we gegevens uit 2 tabellen nodig, namelijk tblBoeken en tblUitgeverijen

We zullen het bestaande formulier aanpassen, zodanig dat ook de naam van de uitgeverij in het formulier zichtbaar is. Hiervoor gaan we als volgt te werk:

Aangezien txtUitgeverij_benaming enkel in het formulier aanwezig is ter informatie moet er geen tabstop zijn bij dit veld. Pas hiervoor de eigenschappen van dit veld aan.

Bewaar de wijzigingen in je formulier

4.3.2  Hoofd- en subformulieren

Een subformulier is een formulier binnen een hoofdformulier dat gebruikt wordt om informatie uit meerdere tabellen in één formulier weer te geven. Doordat hoofdformulier en subformulier gekoppeld zijn worden in het subformulier alleen records weergegeven die betrekking hebben op de gegevens uit het hoofdformulier. Bij tabellen die met elkaar verbonden zijn via een één-op-veel relatie kun je bij één record in het hoofdformulier meerdere records in het subformulier laten tonen.

Het hoofd- en subformulier worden als twee aparte formulieren gemaakt en bewaard en daarna worden ze aan elkaar gekoppeld.

Voorbeeld:

We wensen per uitgeverij een overzicht van de boeken die de leerlingen kunnen huren of kopen.
Tussen tblUitgeverijen en tblBoeken bestaat er een één-op-veel relatie. Bij één record van de tblUitgeverijen wensen we meerdere records van de tblBoeken in gegevensbladweergave te zien. De gegevens van de tblUitgeverijen vormen dus het hoofdformulier en de gegevens van de tblBoeken het subformulier.
Beide formulieren werden reeds apart gemaakt en bewaard onder de naam frmInvoer_uitgeverijen respectievelijk frmInvoerboeken.

We gaan als volgt te werk om het volgende Hoofd- en subformulier te maken:

Bekijk de eigenschappen van het subformulier:

In plaats van de eigenschap Besturingselementbron spreekt men nu van Bronobject. De eigenschappen Subvelden koppelen en Hoofdvelden koppelen bepalen op welke manier records in een hoofdobject (hier frmInvoer_uitgeverijen)worden gekoppeld aan records in een onderliggend object (hier frmInvoerboeken)
In Subvelden koppelen moet de naam getypt worden van één of meer koppelingsvelden in het onderliggende object.
In Hoofdvelden koppelen moet de naam komen van één of meer koppelingsvelden in het hoofdfomulier.

Aangezien txtUitg_nr zowel in tblUitgeverijen als in tblBoeken identiek is, verkrijgen we dezelfde veldnamen bij Hoofdvelden koppelen en Subvelden koppelen
Het subformulier is dus gekoppeld met het hoofdformulier via txtUitg_nr. Dit wil zeggen dat we in het subformulier enkel die records met hetzelfde uitgeverijnummer als het hoofdformulier zullen zien.

Bewaar de wijzigingen in dit formulier.

4.3.3    Oefeningen

  1. Maak een formulier om nieuwe leerlingen toe te voegen.
    De Klascode moet via een keuzelijst met invoervak kunnen geselecteerd worden.
  2. Maak een formulier om  nieuwe uitgeverijen toe te voegen (txtPostnr en txtPlaats moeten via een keuzelijst met invoervak kunnen geselecteerd worden).
  3. We wensen per uitgeverij een overzicht te hebben van de boeken die je kan Huren of kopen.
  4. Maak een formulier om de boeken aan de leerlingen toe te wijzen. De leerlingen moeten via een keuzelijst kunnen geselecteerd worden (2 kolommen: txtllnr en txtnaam). De boeken moet eveneens kunnen geselecteerd worden: hierbij moeten txtvolgnummer, txtvakcode en txttitel als velden in de keuzelijst met invoervak weergegeven worden.
  5. Maak een formulier die per leerling (volgens naam en klas) de boeken weergeeft.
    Van de boeken moeten de volgende gegevens weergegeven worden: txtVakcode, txtTitel, txtAuteur, txtHuren_of_kopen, txtEenh_prijs, txtISBN_nr en txtUitgeverij_benaming.
  6. Bereken in een formulier de prijs per leerling van de gekochte boeken. De leerlingen moeten via een keuzelijst kunnen geselecteerd worden (2 kolommen: txtllnr en txtnaam).
  7. Indien via een keuzelijst met invoervak een klas geselecteerd wordt, moeten alle boeken van die klas getoond worden.
  8. Maak een formulier om de gegevens van Tbl_boeken bij te werken. Indien via een keuzelijst met invoervak een boek geselecteerd wordt (3 kolommen: txtVolgnummer, txtVakcode en txtTitel) moeten de overige gegevens van Tbl_boeken getoond worden.
  9. Bereken in een formulier de prijs per leerling van de gehuurde boeken. De leerlingen moeten via een keuzelijst kunnen geselecteerd worden (2 kolommen: txtllnr en txtnaam). De huurprijs is 30% van de eenheidsprijs.Wanneer een leerling in het bezit is van zo’n boek, mag het boek niet aangerekend worden (in tblTbl_boeken_per_leerling werd txtbetalingscode dan op 2 geplaatst).
  10. Indien via een keuzelijst met invoervak een klas geselecteerd wordt, moeten alle leerlingen van die klas getoond worden.