De meervoudige selectie

Een meervoudige selectie is een programmadeel dat bestaat uit een meervoudige selectievoorwaarde, opgebouwd rondom een variabele of een uitdrukking en meerdere sequenties, waarvan, afhankelijk van de waarde van de selectievariabele of uitdrukking, slechts één uitgevoerd wordt.

Structogram:

 

Pseudo-code:

SELECTIEBLOK selectievariabele of uitdrukking

GEVAL selectievariabele1 of uitdrukking1 = … : bewerking(en)
GEVAL selectievariabele2 of uitdrukking2 = … : bewerking(en)
GEVAL selectievariabele3 of uitdrukking3 = … : bewerking(en)
GEVAL selectievariabele4 of uitdrukking4 = … : bewerking(en)
….
GEVAL selectievariabele of uitdrukking = … : bewerking(en)
ZONIET bewerking(en)

EINDE BLOK

In Access

Select Case testexpressie

Case variabele1 of uitdrukking1

Bewerking(en)

Case variabele2 of uitdrukking2

Bewerking(en)

. . .

Case Else

Bewerking(en)

End Select

De Case Else is facultatief !

 

Voorbeeld

Van het belastbaar inkomen mag 35000 fr. afgetrokken worden voor het eerste kind ten laste, 55000 fr. voor het tweede, 112500 fr. voor het derde. Voor het vierde kind en alle volgende kinderen is dit 125000 fr. per kind. Voer het belastbaar inkomen in en geef het nieuwe belastbaar inkomen weer, rekening houdend met de kinderlast.

Werkwijze:

Maak een nieuw formulier zonder een tabel.

In dit formulier breng je 3 tekstvakken (met labels) en één opdrachtknop. Deze tekstvakken geef je resp. de namen:

txtBelastb
txtAantalKind
txtNieuwBelastb

Beveilig het laatste tekstvak (txtNieuwBelastb) tegen overschrijven.

Breng, in een algemene module, onderstaand programma binnen en test dit uit.

 

Een andere mogelijke schrijfwijze van het Select-statement is:

 

Nog een mogelijke schrijfwijze met een ander voorbeeld:

Public Sub Voorbeeld (intVar1 as Byte)

Select Case intVar1

Case 1 to 3

Debug.Print "Variabele ligt tussen één en drie"

Case 4, 5

Debug.Print "Variabele is een vier of een vijf"

Case 6 to 8, 15 to 18,20

Debug.Print "Variabele ligt tussen 6 en 8, tussen 15 en 18 of is 20"

Case Else

Debug.Print "Dit is een variabele die niet werd voorzien"

End Select

End Sub

Test dit programma uit met het foutopsporingsvenster.

Oefeningen:

  1. Een verzekeringsmaatschappij verkoopt levensverzekeringen in schijven van 50000 fr. De jaarlijkse premie is uiteraard afhankelijk van de leeftijd van de verzekerde en dit volgens deze tabel:
    - jonger dan 20 : 60 fr. per schijf van 50000 fr.
    - vanaf 20 tot 40 : 150 fr. per schijf van 50000 fr.
    - vanaf 40 tot 60 : 360 fr. per schijf van 50000 fr.
    - vanaf 60 tot 80 : 620 fr. per schijf van 50000 fr.
    - boven de 80 : 950 fr. per schijf van 50000 fr.

    Bereken de jaarlijkse levensverzekeringspremie.
  2. Voor een kerstcadeau van hun leraar wordt van het zakgeld van een jongen 3% afgehouden als dit meer dan 500 fr. is, 1% als dit minder dan 300 fr. is en anders 2%. Van het zakgeld van een meisje 4% als het meer dan 550 fr. is, 1% als het minder dan 330 fr. is anders 1,5 %.
    Druk de bijdrage voor het geschenk af als het geslacht en het zakgeld van de leerling ingelezen worden.