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