DWUTKA at marlow.com
DWUTKA at marlow.com
Wed Jun 28 09:35:03 CDT 2006
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