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