William Hindman
wdhindman at dejpolsystems.com
Wed Jun 28 10:16:32 CDT 2006
...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 >