[AccessD] Unbound Form Check For Changes

Bill Benson bensonforums at gmail.com
Sun Mar 23 20:11:06 CDT 2014


I should clarify too, Form load is not where to do this, it is whenever the
unbound controls are populated - presumably there are routines that populate
controls from recordsets, etc... as obviously on form load for unbound
controls, everything changes from null to something (if populated)...
Bill

-----Original Message-----
From: Bill Benson [mailto:bensonforums at gmail.com] 
Sent: Sunday, March 23, 2014 9:07 PM
To: 'Access Developers discussion and problem solving'
Subject: RE: [AccessD] Unbound Form Check For Changes

So what would the class be, of type Control? And.... why? The method I gave
returns that ANY change occurred, and it is simple. It doesn't care if a
control's old value equaled its new value, it cares if any combination of
values change... period. Which means that it doesn't worry about storing any
control's old value. It records the lot on form load, and tests it whenever
you want.

I see no benefit to class in this context unless you need more from the
class later.

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of John W Colby
Sent: Sunday, March 23, 2014 9:02 PM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Unbound Form Check For Changes

And having done all that stuff, I would go with a class.  All of the code to
check old value = new 
value, a dirty flag and so forth can be stored in the class.

John W. Colby

Reality is what refuses to go away
when you do not believe in it

On 3/23/2014 7:04 PM, Bill Benson wrote:
> Re: Dirty, even if bound, a change would mean the user began to edit the
> form, not that they necessarily "made" a change.
>
> As for storing the control values, if all you care about is testing if ANY
> controls changed, I would put a tag in every control where this is a
> possibility and loop through all controls, test for this tag - then you
> won't have to worry about labels and controls with no value throwing off a
> runtime error. I would just store all values in a single string using a
pipe
> separator, and check this again later.
>
> 'Warning air code!!!
> Option explicit
> Dim m_Initial_Control_Values as String
>
> Form_Load()
> For each ctrl in controls
>     If ctrl.tag = "ValidateMe" then
> 	m_Initial_Control_Values  = _
> 	m_Initial_Control_Values  &"|" & NZ(ctrl.value,"") &"|"
>      End If
> Next
> '...
> End Sub
>
> Have a function named FormChanged
>
> Function FormChanged() as Boolean
> Dim strValidate as string
> For each ctrl in controls
>     If ctrl.tag = "ValidateMe" then
> 	strValidate  = _
> 	strValidate &"|" & NZ(ctrl.value,"") &"|"
>      End If
> Next
>
> FormChanged = (strValidate <> m_Initial_Control_Values)
> End function
>


---
This email is free from viruses and malware because avast! Antivirus
protection is active.
http://www.avast.com

-- 
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com




More information about the AccessD mailing list