Variabele bestaat alleen binnen sub?

Status
Niet open voor verdere reacties.

johanw

Gebruiker
Lid geworden
3 mrt 2003
Berichten
74
Ik zal proberen meteen zo duidelijk mogelijk te zijn..


Private Sub Form_Open(Cancel As Integer)

If IsNull(Me.OpenArgs) Then

MsgBox "Dit formulier kan alleen opgeroepen worden door het formulier frm_artikelen_ontvangen"
'sluit formulier

Else

aantal_clients = Me.OpenArgs

MsgBox aantal_clients

End If

End Sub

Private Sub but_opslaan_Click()

MsgBox aantal_clients

End Sub


Als Me.OpenArgs niet nul is, bijv 2 dan geeft ie keurig 2 weer.
Als ik dan op de opslaan button klik geeft ie een lege MsgBox weer. Het lijkt dus alsof ie binnen de but_opslaan_Click sub de variabele aantal_clients niet heeft.

Nu is mijn vraag: bestaan variabelen alleen binnen subs?
Hoe krijg ik variabelen die ook in andere subs bestaan?
Kan ik een sub binnen een sub maken?
 
Dat komt omdat de scope van je variabele aantal_clients op procedure level is gedefinieerd.

Je declareert je variabele niet, zodat access default declaratie veronderderstelt:
Dim aantal_clients as Variant.

Hierdoor bestaat je variabele alleen in de procedure waarin je de variabele gebruikt, daarna is ie gewoon weg.
Als je de variabele dan in een andere procedure gebruikt wordt ie gewoon opnieuw gedefinieerd en is ie weer leeg.

Je zult de variabele aantal_clients dus expliciet moeten gaan declareren als Private (module level) of Public (application level).

Zie voor meer informatie over de scope van variabelen de Help van Access onder scoping levels of kijk bijvoorbeeld op deze site: http://www.unl.ac.uk/simt/im212/hk/week5/scope.htm
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan