[AccessD] Classes and WithEvengts was RE: Tags are so 1990s - wasRe: Combobox.oldvalue displaytext?

Max Wanadoo max.wanadoo at gmail.com
Mon Feb 9 11:52:01 CST 2009


Agreed Charlotte, but there are others.  But, I will follow this thread with
great interest.
Thanks
Max


-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Charlotte Foust
Sent: 09 February 2009 17:42
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Classes and WithEvengts was RE: Tags are so 1990s -
wasRe: Combobox.oldvalue displaytext?

I'd say you haven't given classes a fair try, Max.  Outlook is NOT a
good object to practice on!  LOL

Charlotte Foust

 

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Max Wanadoo
Sent: Monday, February 09, 2009 9:27 AM
To: 'Access Developers discussion and problem solving'
Subject: [AccessD] Classes and WithEvengts was RE: Tags are so 1990s -
wasRe: Combobox.oldvalue displaytext?

Oh, no upping then.  Must be thinking of swans (Bet you don't get that
connection Charlotte - to do with the British Monarch owning all swans).

The problem I have with classes is that (going on the ones I have
created, say for example an Outlook Class to expose Outlook Properties)
is that to use it I  have to declare  a container for the pointer, then
I have to set the container to point to the class and then I can use the
class properties and try to remember what done what.  So, I always found
it easier to just go directly to the properties themselves.

Now then John - whoa back a bit - I can almost see you coming down the
connection cable when you read that.  I do appreciate that classes have
other uses, especially when a UDF is created and also for
security/enforcement of business rules.  One rule changed in one place.
And so on... 

So, I will follow your class with interest.

Thanks
Max


-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Charlotte
Foust
Sent: 09 February 2009 16:02
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Tags are so 1990s - was Re: Combobox.oldvalue
displaytext?

It's Sinking and RAISING, not uping.  LOL  Using classes isn't the only
way to do things, it's just the efficient way.  Instead of writing the
same code over and over, you embed that in a class and use the public
interface of the class to handle its operations.  If you bind a, oh,
let's say ... A combobox ... To a class then the class can specify the
combobox's behavior, appearance, and the way it handles itself.  Want an
oldvalue for a combobox?  Put some code and a public property into the
class and voila, you have a combobox with an oldvalue.  More
importantly, you have that whenever you bind a combobox to that class.  

I know a lot of people who never say the point in classes, but it's a
bit like religion.  Once you convert, you want to persuade everyone else
how wonderful your approach is!

Charlotte Foust 

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Max Wanadoo
Sent: Monday, February 09, 2009 7:50 AM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Tags are so 1990s - was Re: Combobox.oldvalue
displaytext?

Ha!  It was in the 1990's I wrote it <g>.  I dont use tags now, but they
might be useful for some purposes - I can think of one but won't go into
that now.

The aim was to demonstrate easily, the use of control looping with the
various control types and not the storage of variable values.

I also use classes but I am not a devotee like you John.  Sinking and
Uping (or whatever the reverse of sinking is) or WithEvents is not
something I have ever got into and have never ever had a need for this -
I say that because I have not come across anything that I cannot do
without using it/them.

I would be interest to follow a thread though.

Thanks
Max


On Mon, Feb 9, 2009 at 3:39 PM, <krosenstiel at comcast.net> wrote:

> I'd be interested in this. Doubt I'll understand it, but I'd be
interested.
>
> Karen Rosenstiel
> Seattle WA USA
>
> ----- Original Message -----
> From: "jwcolby" <jwcolby at colbyconsulting.com>
> To: "Access Developers discussion and problem solving" < 
> accessd at databaseadvisors.com>
> Sent: Monday, February 9, 2009 6:12:52 AM GMT -08:00 US/Canada Pacific
> Subject: [AccessD] Tags are so 1990s - was Re: Combobox.oldvalue 
> display text?
>
> Guys,
>
> Using the tag value to store stuff is generally not a good solution, 
> and never was (well, perhaps before classes). The disadvantages of the

> tag speak for itself, ONE location to store how much stuff? Packing, 
> unpacking variables that you want to store there, overwriting data 
> from the previous programmer, and the list goes on.
>
> Look, MS very kindly gave us Classes and WithEvents.
>
> Classes and Withevents is EASY. Classes and Withevents prepares you 
> for programming in other platforms such as dotnet. Classes and 
> withevents provide you with extremely powerful methods of handling 
> repetitive programing. Classes provide you with encapsulation of code 
> and data. If you are a programmer, all of these things should matter 
> to you.
>
> If you can program Code Behind Form, if you can do things like the 
> example code that Max so kindly provided, then classes are a tiny step

> that will increase your skill and ability an order of magnitude. 
> AccessD has many developers using Classes and Withevents.
> Perhaps they can speak up
> with their opinions on the subject.
>
> If you want to learn how to do what Stuart was asking about using a 
> single pair of classes (a form class and a combo class), speak up and 
> I will start a thread on the subject. I will teach you how to do this 
> stuff, step by step, and in just a few emails you too can be using 
> classes and withevents.
>
> John W. Colby
> www.ColbyConsulting.com
>
>
> Max Wanadoo wrote:
> > Hi Stuart,
> > Here are two routines which you may care to look at. The first is to
> store
> > the value into the .TAG property of the control.
> > The second just parses the controls.
> > Might be of interes, might not, don't know, submitted as is - chuck 
> > it if
> no
> > good.
> > Regards
> > Max
> >
> > Public Function pubFunUpdateTagData(frm As Form) On Error Resume 
> > Next ' this puts the data into the tag before any changes are made
> >
> > Dim ctl As Control, z As Variant
> > For Each ctl In frm.Controls
> > With ctl
> > Select Case .ControlType
> > Case acTextBox ' this can hold numbers, strings and dates etc Select

> > Case varType(frm(ctl.Name)) Case 2, 3, 4, 5, 6 ' 
> > int,long,single,double,currency frm(ctl.Name).Tag =
> > Val(frm(ctl.Name)) Case 7 frm(ctl.Name).Tag = CStr(frm(ctl.Name)) 
> > Case 8 frm(ctl.Name).Tag = frm(ctl.Name) End Select Case acCheckBox 
> > frm(ctl.Name).Tag = frm(ctl.Name) Case acComboBox Select Case 
> > frm(ctl.Name).RowSourceType Case "Table/Query"
> > frm(ctl.Name).Tag = Nz(frm(ctl.Name).Column(1)) 'MsgBox 
> > frm(ctl.Name).Tag Case "Value List"
> > frm(ctl.Name).Tag = Nz(frm(ctl.Name).Column(0, 0)) Case Else End 
> > Select Case acListBox frm(ctl.Name).Tag = 
> > Nz(frm(ctl.Name).Column(1), "") Case acOptionGroup frm(ctl.Name).Tag

> > = Nz(frm(ctl.Name), 0) End Select End With Next ctl
> >
> > exithere:
> > Exit Function
> > errhandler:
> > MsgBox "Error in MCM_PeopleChanges.pubFunUpdateTagData: " & 
> > Err.Number & vbCrLf & Err.Description Resume exithere End Function
> >
> > Private Function RebuildPersonsFlagsFormsControls(frm As Form, 
> > lngPID As
> > Long)
> > On Error Resume Next
> > Dim ctl As Control, strDesc As String Dim varSource As Variant, 
> > varvalue As Variant, varType As Variant,
> varName
> > As Variant
> > Dim varVisible As Variant
> > strDesc = frm.Name
> > With frm
> > For Each ctl In frm.Controls
> > varName = ctl.Name
> > varType = ctl.ControlType
> > Select Case varType
> > Case acTextBox
> > varSource = ctl.ControlSource
> > varvalue = ctl.OldValue
> > varVisible = ctl.Visible
> > If Not IsNull(varSource) And Len(varSource) > 0 And _ Not
> > IsNull(varvalue) And Len(varvalue) > 0 And varVisible = True Then 
> > Call mcmSetFlag(strDesc & ":" & varSource & ":" & varvalue, lngPID,
> > conFlagsForms) End If Case acComboBox varSource = ctl.ControlSource 
> > varvalue = ctl.OldValue If Not IsNull(varSource) And Len(varSource)
> > > 0 Then Call mcmSetFlag(strDesc & ":" & varSource & ":" & varvalue,

> > lngPID, conFlagsForms) End If Case acCheckBox varSource = 
> > ctl.ControlSource varvalue = ctl.OldValue If varvalue = True Then 
> > Call mcmSetFlag(strDesc & ":" & varSource & ":" & varvalue, lngPID,
> > conFlagsForms) End If Case acOptionGroup varSource = 
> > ctl.ControlSource varvalue = ctl.OldValue Call mcmSetFlag(strDesc & 
> > ":" & varSource & ":" & varvalue, lngPID,
> > conFlagsForms)
> > Case acSubform
> > Case acLabel
> > Case acBoundObjectFrame
> > Case acPage
> > Case acPageBreak
> > Case acCommandButton
> > Case acCustomControl
> > Case acRectangle
> > Case acImage
> > Case acTabCtl
> > Case acLine
> > Case acToggleButton
> > Case acObjectFrame
> > Case acListBox
> > Case acOptionButton
> > Case Else
> > MsgBox "NewType found in RebuildPersonsFalgsSystemControls:",
> > varType, varName
> > End Select
> > Next ctl
> > End With
> > End Function
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>
--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com

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

--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.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