Vind ons op socialmedia

Nieuwsberichten

Tempvars variabelen

Het is erg handig variabelen te gebruiken die buiten het formulier of rapport waar die is aangemaakt. Stel je wilt de ID van een klant in het geheugen plaatsen en die vervolgens door de hele database heen gebruiken als criteria.

Je kunt hiervoor een zogenaamd get set statement gebruiken waarmee je na een selectie de variabele in een globale variabele vastzet die je op elke gewenste plaats binnen de database weer kunt opvragen als een criteria.

Dat doe je op de volgende manier.

[codesyntax lang=”vb” container=”div” strict=”yes” blockstate=”expanded”]

Global globale_Klantid As Long

Public Sub setKlantid(Klantid As Long)
    On Error GoTo setKlantid_Error

    globale_Klantid = Klantid

    On Error GoTo 0
    Exit Sub

setKlantid_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure setKlantid of Module Static_variables"
End Sub

Public Function getKlantid() As Long
    On Error GoTo getKlantid_Error

    getKlantid = globale_Klantid

    On Error GoTo 0
    Exit Function

getKlantid_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure getKlantid of Module Static_variables"
End Function

[/codesyntax]

Wanneer je nu bij een selectie uit een combo box in de afterupdate gebeurtenis de code setKlantid(comboxnaam) zet zal de id van de klant globaal worden gedeclareerd.

In bijvoorbeeld een record source achter een formulier kun het recordset filteren doormiddel van de getclient() te gebruiken.

Zet in het query venster de volgende criteria

Er is een groot nadeel wanneer je dit gebruikt, wanneer je een runtime error krijgt in je VBA code en je hebt niet consequent een error afhandeling ingebouwd worden alle ingestelde globale variabelen in een keer leeg gegooid.

Je moet dan eigenlijk afhankelijk van de hoeveelheid variabelen die je hebt ingesteld opnieuw beginnen. Dus je applicatie opnieuw opstarten.

Om dit probleem te voorkomen kun je gebruik maken van de zogenaamde Tempvars. Tempvars zijn net zo in te stellen als een get / set statement allen veel directer en bij een runtime error worden ze niet geleegd. Ze behouden hun waarde totdat je zelf een andere toekent. Je mag zelf weten welke naam je aan je Tempvars geeft.

Wanneer je zoals boven genoemd een klant selecteert uit een combo box dan stel je Telpas als volgt in.

TempVars!Klantid = me.combobox.value

De waarde wordt dan overgenomen en is in de gehele database bekend. Je kunt die dan als criteria in het record source van je formulier gebruiken. Dit werkt het zelfde als voorgaand Getklantid(), alleen deze variabele is stabiel en wordt niet geleegd wanneer er een runtime error optreed.

 

[codesyntax lang=”vb” container=”div” strict=”yes” blockstate=”expanded”]

TempVars!variabele

[/codesyntax]

 

Bookmark and Share
You may also like
Aanpassing kantoor software vertalingen.nl
Uren verantwoording in MS Access
Multiuser omgeving Ms Access
Website Lease

Leave a Reply