[AccessD] Advanced Unbound Form With Classes andCollectionsP art 3

DWUTKA at marlow.com DWUTKA at marlow.com
Wed Jun 28 10:58:24 CDT 2006


I'll think about it, need to find the time to do it.  Maybe if you just gave
in on the 'ex Bird flu' thread, I'd have more time on my hands! ;)

Drew

-----Original Message-----
From: William Hindman [mailto:wdhindman at dejpolsystems.com] 
Sent: Wednesday, June 28, 2006 10:17 AM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Advanced Unbound Form With Classes andCollectionsP
art 3

...I meant as an article on your site or dba's.

William

----- Original Message ----- 
From: <DWUTKA at marlow.com>
To: <accessd at databaseadvisors.com>
Sent: Wednesday, June 28, 2006 10:35 AM
Subject: Re: [AccessD] Advanced Unbound Form With Classes andCollectionsP 
art 3


> Honestly I'm writing it as I go.  DBA's lists are the only lists I'm 
> really
> on anymore.  I get on Woody's Lounge once in a blue moon.
>
> Drew
>
> -----Original Message-----
> From: William Hindman [mailto:wdhindman at dejpolsystems.com]
> Sent: Tuesday, June 27, 2006 10:39 PM
> To: Access Developers discussion and problem solving
> Subject: Re: [AccessD] Advanced Unbound Form With Classes and
> CollectionsPart 3
>
>
> Drew
>
> ...this is pretty good stuff ...do you intend to post it elsewhere as a
> single article?
>
> William
>
> ----- Original Message ----- 
> From: "JWColby" <jwcolby at colbyconsulting.com>
> To: "'Access Developers discussion and problem solving'"
> <accessd at databaseadvisors.com>
> Sent: Tuesday, June 27, 2006 8:08 PM
> Subject: Re: [AccessD] Advanced Unbound Form With Classes and
> CollectionsPart 3
>
>
>> Drew,
>>
>>>Public Function NewEnum() As Iunknown
>>
>> Is this a dedicated syntax thing or can I do this multiple times for
>> multiple collections in the same class?
>>
>> Public Function NewEnum1() As IUnknown
>>
>> Set NewEnum1=PeopleByFirst.[_NewEnum1]
>>
>> End Function
>>
>> Public Function NewEnum2() As IUnknown
>>
>> Set NewEnum2=PeopleByLast.[_NewEnum2]
>>
>> End Function
>>
>> John W. Colby
>> Colby Consulting
>> www.ColbyConsulting.com
>>
>> -----Original Message-----
>> From: accessd-bounces at databaseadvisors.com
>> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of
>> DWUTKA at marlow.com
>> Sent: Tuesday, June 27, 2006 2:58 PM
>> To: accessd at databaseadvisors.com
>> Subject: [AccessD] Advanced Unbound Form With Classes and Collections 
>> Part
>
>> 3
>>
>> We have built a 'collection class' in our demo, the People Class.  It is
>> an
>> object representing all of the people in our database.  We can retrieve
>> people from it either with their ID, or by their sort order (first or 
>> last
>> name sort).
>>
>>
>>
>> But why can't we do a For Next loop?  I mean, our class represents
>> multiple
>> Persons, so it contains all of the Person classes, why are we forced to
>> use
>> an index or position to retrieve a person?
>>
>>
>>
>> Surprise, we're not.  Though to get this capability requires a little
>> 'outside of the box' work.  Here's what we need to do.  First, we need to
>> add a function to our People class:
>>
>>
>>
>> Public Function NewEnum() As IUnknown
>>
>> Set NewEnum=PeopleByFirst.[_NewEnum]
>>
>> End Function
>>
>>
>>
>> The next portion is a little tricky in Access.  We need to set this
>> procedure's 'id' to -4.  In Visual Basic 6, you can do this by clicking
>> Tools>Procedure Attributes, and then clicking the Advanced button.  I
>> looked, couldn't find this in Access, but all's not lost.  We can still 
>> do
>> this.  Right click on the People class in our demo project's code window.
>> Select Export File.  Save it somewhere.  Now go and open that saved file
>> in
>> Notepad.  You'll see the code of our class with some extra stuff thrown
>> in.
>> What we need to do is add a line in our NewEnum function so it looks like
>> this:
>>
>>
>>
>> Public Function NewEnum() As IUnknown
>>
>> Attribute NewEnum.VB_UserMemId = -4
>>
>> Set NewEnum=PeopleByFirst.[_NewEnum]
>>
>> End Function
>>
>>
>>
>> Once this is done, let's test it.
>>
>>
>>
>> Create a form with a button, and put the following code behind it:
>>
>>
>>
>> Dim ps as Person
>>
>> Dim ppl as People
>>
>> Set ppl=New People
>>
>> For Each ps in ppl
>>
>>            Debug.print ps.FullName
>>
>> Next
>>
>> Set ps=nothing
>>
>> Set ppl=nothing
>>
>>
>>
>> Now press the button and run our test code.  Whalla!  We can now loop
>> through the Person objects in our People Collection with a For Next loop!
>>
>>
>>
>> So now that we know about collections, and we have created the same
>> functionality of a collection with our own 'collection class', let's go a
>> step further, and make our Person class 'aware' of it's collection class.
>> We'll do this in the next part.
>>
>>
>>
>> Drew
>>
>> --
>> 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