[AccessD] Public Variables - Scope and Lifetime

MartyConnelly martyconnelly at shaw.ca
Sun Nov 27 11:38:22 CST 2005


Actually it resets the value of a data type to it's default value
A Long would be reset to 0
A Date would be reset to 31/12/1899 12:00:00 AM

Try it with an
Err.Raise=13
Then after running check global value in debug window

DWUTKA at marlow.com wrote:

>Change the stop to an End.  Stop only 'pauses' the code, it doesn't stop
>it's execution.  End clears the value, just as it would with a global
>variable.
>
>Drew
>
>	-----Original Message-----
>	From:	Arthur Fuller [SMTP:artful at rogers.com]
>	Sent:	Saturday, November 26, 2005 3:46 PM
>	To:	'Access Developers discussion and problem solving'
>	Subject:	Re: [AccessD] Public Variables - Scope and Lifetime
>
>	Your reply made me decide to test static functions against a STOP,
>which I
>	have never done before.
>	Turns out that static values are preserved despite a STOP. Code
>follows. 
>	Place this in a new module:
>	<code>
>	Static Function CurrentValue(Optional lngNew As Long) As Long
>
>	    Dim lngCurrent As Long
>	    On Error GoTo CurrentValue_Error
>
>	    If lngNew <> 0 Then lngCurrent = lngNew
>	    CurrentValue = lngCurrent
>	    #If conDebug = 1 Then
>	        Debug.Print "Current Value: ", CurrentValue
>	    #End If
>
>	    On Error GoTo 0
>	    Exit Function
>
>	CurrentValue_Error:
>	    MsgBox "Error " & Err.Number & " (" & Err.Description & ")" &
>vbCrLf & _
>	    "in procedure CurrentValue of Module CurrentValues"
>
>	End Function</code>
>	Place this in a new module:
>	<code>
>	Option Compare Database
>	Option Explicit
>
>	Sub TestPersistence()
>	    CurrentValue (123)
>	    MsgBox "Current value is: " & CurrentValue(), vbInformation +
>vbOKOnly,
>	"Test Persistence of Static Values"
>	    Stop
>	    MsgBox "Current value is: " & CurrentValue()
>	End Sub
>	</code>
>	Compile, then run the sub above. At the STOP, hit F5 to continue.
>The moral
>	of the story is that if you want values to persist beyond a STOP,
>use static
>	functions.
>	Arthur
>	-----Original Message-----
>	From: accessd-bounces at databaseadvisors.com
>	[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of
>DWUTKA at marlow.com
>	Sent: November 26, 2005 1:42 PM
>	To: accessd at databaseadvisors.com
>	Subject: Re: [AccessD] Public Variables - Scope and Lifetime
>
>	Ugh....not this again!  LOL.  Marty, that is not what happens.  If
>you STOP
>	your code, then everything gets reset.  That does include your
>global
>	variables.  It's not a maybe, and they don't 'lose' their values,
>the code
>	is stopped.  It is just like stopping an .exe, all values in memory
>are
>	cleared.  The difference is, with Access, that the Access Shell
>didn't stop,
>	and as soon as you do something requiring code, Access starts it all
>up
>	again, and so your Globals will be reset.
>	It's not a wishy washy thing, it is just how the code works.
>	Drew
>
>	
>

-- 
Marty Connelly
Victoria, B.C.
Canada






More information about the AccessD mailing list