Que?

You know, sometimes I wonder whether I could make a falafel out of all the crumbs and stuff that fall out of my keyboard when I clean it?!

Duane.

--- In AccessDevelopers@yahoogroups.com, "Carl Beck" <[EMAIL PROTECTED]> wrote:
>
> Hey Duane,
>
> Is this what you are looking for?
>
>
>
> Carl
>
>
>
> _____
>
> From: AccessDevelopers@yahoogroups.com
> [mailto:[EMAIL PROTECTED] On Behalf Of Duane Hennessy
> Sent: Tuesday, January 24, 2006 11:43 PM
> To: AccessDevelopers@yahoogroups.com
> Subject: [AccessDevelopers] Re: The Dictionary Object...Please Consider.
>
>
>
> <http://us.i1.yimg.com/us.yimg.com/i/mesg/tsmileys2/04.gif> Hahahaha!
> Just three weeks before Christmas I scored a two year permanent position
> with Government, hence I'm back online
> <http://us.i1.yimg.com/us.yimg.com/i/mesg/tsmileys2/09.gif> . I've been flat
> out for 8 years now and finally get a break. Currently programming System
> Architect, which is VBA integrated (though quirky at times)
>
> One of my up and coming tutorials, which is cool, is subclassing controls.
> I was building a form in System Architect and the FlexGrid control was
> unregistered. The spreadsheet control available was totally ugly, the
> ListView control didn't cut it. So I created a class that creates a matrix
> on a form given the number of columns and rows. Then I wrapped the checkbox
> control in a class for the matrix class control to use
> <http://us.i1.yimg.com/us.yimg.com/i/mesg/tsmileys2/03.gif> (I need a
> smiley with a propeller hat on!). Anyhoo, the control works real cool,
> subclassing using With Events mostly and some methods calling public form
> methods if they exist.
>
> Can you tell I have an afternoon free?
> <http://us.i1.yimg.com/us.yimg.com/i/mesg/tsmileys2/01.gif>
> Anyhow, back to creating code.
>
> Thanks for the kudos. It was easier to write than the first part of the
> regular _expression_ one.
> <http://us.i1.yimg.com/us.yimg.com/i/mesg/tsmileys2/39.gif>
>
> Duane.
>
>
> --- In AccessDevelopers@yahoogroups.com, "Tom Oakes" [EMAIL PROTECTED] wrote:
> >
> > Holy smokes - are you getting any actual work done down there?
> >
> > I'll second your enthusiasm regarding the Dictionary object - I use it
> > often. The biggest advantage over the Collection object is the Exists
> > property, in my opinion. If you reference the Microsoft Scripting Runtime
> > library, you can early bind:
> >
> > Dim dicItems As Dictionary
> >
> > It's worth noting that you can store any object/data type in a dictionary.
> > Collections, controls, recordsets, databases, forms, custom classes, etc.
> > The dictionary comes in very handy in class module hierarchies - keeping
> > track of a "collection" of subordinate/child classes in a class module.
> >
> >
> > Kudos on a well-written tutorial.
> >
> > Tom Oakes
> > Personal PC Consultants, Inc.
> > [EMAIL PROTECTED]
> > 503.230.0911 (O)
> > 402.578.2648 (C)
> > 512.727.9497 (F)
> >
> >
> >
> > _____
> >
> > From: AccessDevelopers@yahoogroups.com
> > [mailto:[EMAIL PROTECTED] On Behalf Of Duane Hennessy
> > Sent: Tuesday, January 24, 2006 5:49 PM
> > To: AccessDevelopers@yahoogroups.com
> > Subject: [AccessDevelopers] The Dictionary Object...Please Consider.
> >
> >
> >
> > Okay, I'll admit I'm a bit of a fan of the Array. You either love or hate
> an
> > Array. People who dislike the Array will often opt for a Collection
> instead.
> > Other languages do provide a really cool object called a Dictionary or
> Hash
> > Table. This is like a Collection that behaves like a Collection combined
> > with an Array with some extra handy methods. VBA does not have this but
> > _vbscript_ does provide a Dictionary object, which is cool, and we can make
> > use of this object within our Access VBA environment. To build a
> dictionary
> > object do the following:
> >
> > Dim my_dictionary as Object
> > Set my_dictionary = CreateObject("Scripting.Dictionary")
> >
> > Voila! We have a dictionary. What can we do with it? We can add items,
> check
> > for the existence of items, return an array of keys, return an array of
> > items, set how a dictionary compares keys and get the count and so on. An
> > example:
> >
> > 'First create the Dictionary Object
> > Dim my_dictionary as Object
> > Set my_dictionary = CreateObject("Scripting.Dictionary")
> >
> > 'When adding an object or value to a dictionary you put the key first and
> > the actual value or object second. The key is mandatory and you cannot add
> > items without it.
> > my_dictionary.Add "Key 1", "Value 1"
> > my_dictionary.Add "Key 2", "Value 2"
> > my_dictionary.Add "Key 3", "Value 3"
> > my_dictionary.Add "Key 4", "Value 4"
> >
> > So now we've added four values to the dictionary. Let's do some things we
> > cannot do cleanly or at all with a Collection. Say we want to replace
> "Value
> > 3" with the name "Zebra". Too easy!
> >
> > my_dictionary.Item("Key 3") = "Zebra"
> >
> > You couldn't do that with a collection! In a collection you would have to
> > remove one item and add another, thus losing the order or your items. A
> > dictionary behaves like an Array in this respect. What if we were not sure
> > there was a key called "Key 3" within the dictionary and wanted to avoid
> an
> > error. Again, easy, we just use the Exists method of the dictionary
> object:
> >
> > if my_dictionary.Exists("Key 3") then
> > my_dictionary.Item("Key 3") = "Zebra"
> > else
> > my_dictionary.Add "Key 3", "Zebra"
> > end if
> >
> > We might want to know how many items are in the dictionary, just use the
> > Count method which is the same as the one in a collection.
> >
> > MsgBox my_dictionary.Count
> >
> > If you want to iterate through the items in a dictionary, you can't use an
> > integer counter as you would an Array or Collection but you can use two
> > methods to do so:
> >
> > 'You can just grab the items from the dictionary like so:
> > Dim items as Variant
> > items = my_dictionary.Items
> >
> > 'Iterate through the array of items. These items can include objects
> aswell.
> > Dim separate_item as Variant
> > For Each separate_item in items
> > MsgBox separate_item
> > Next separate_item
> >
> > 'Or you can extract the keys and iterate through the items (which is
> another
> > advantage over a Collection that does not give you it's keys or let you
> know
> > what they are)
> > Dim keys as Variant
> > keys = my_dictionary.Keys
> >
> > 'Iterate through the array of items. These items can include objects
> aswell.
> > Dim key as Variant
> > For Each key in keys
> > MsgBox my_dictionary.Item(key)
> > Next key
> >
> > Too easy! To remove an item or all items you can use Remove and RemoveAll
> > respectively:
> >
> > my_dictionary.Remove("Key 2")
> >
> > Or
> >
> > my_dictionary.RemoveAll
> >
> > These are the basics. I'll look at the CompareMode method in un minuto.
> The
> > Dictionary object is a real advantage when we need to build a Collection
> of
> > Collections or a Class Collection. For example; say we had to collect data
> > on spys and their current missions. Usually we would have to create a
> Class
> > Object called Spy and hold a Private or Public Collection within the class
> > to which we would add their missions. One class too many (A Collection is
> a
> > Class)! Let's use a Dictionary instead...
> >
> > Dim my_dictionary As Object
> > Dim missions As Collection
> > Dim spy_name As String
> > Dim keys, key As Variant
> >
> > Set my_dictionary = CreateObject("Scripting.Dictionary")
> >
> > 'Add three lots of spies.
> > Set missions = New Collection
> > spy_name = "Alexander Poligraphovich"
> > missions.Add "Vladivostok"
> > missions.Add "Ukraine"
> > missions.Add "Beijing"
> > my_dictionary.Add spy_name, missions
> >
> > spy_name = "Mohammed Ramadan"
> > Set missions = New Collection
> > missions.Add "Munich"
> > missions.Add "Tehran"
> > missions.Add "Sydney"
> > my_dictionary.Add spy_name, missions
> >
> > spy_name = "Sri FitzPatrick"
> > Set missions = New Collection
> > missions.Add "Dublin"
> > missions.Add "San Francisco"
> > missions.Add "Benin"
> > my_dictionary.Add spy_name, missions
> >
> > keys = my_dictionary.Keys
> > For Each key In Keys
> > MsgBox key & vbCrLf & _
> > my_dictionary(key).item(1) & vbCrLf & _
> > my_dictionary(key).item(2) & vbCrLf & _
> > my_dictionary(key).item(3)
> > Next key
> >
> > Buenos!
> >
> > The CompareMode method lets you set how the dictionary compares it's keys
> > when looking for duplicates etc. There are four compare modes
> > vbBinaryCompare, vbTextCompare, vbDatabaseCompare (for MS Access only) and
> > vbUseCompareOption (which uses the setting in the Option Compare statement
> > at the top of a module). How can we use this? Say we add two values with
> the
> > Keys of monkey and MONKEY' one in all lowercase and the other in all
> > uppercase.
> >
> > my_dictionary.Add "monkey", "Giraffe"
> > my_dictionary.Add "MONKEY", "Elephant"
> > MsgBox my_dictionary.Count
> >
> > The MsgBox will show an item count of 2, because the two keys are
> > essentially different. The dictionary is performing a binary comparison
> upon
> > the keys so you can add more than one 'monkey' as long as they have some
> > difference in character case. What if we wanted the word monkey in all of
> > it's forms to be compared by name and not content? In other words we don't
> > want more than one 'monkey' in the dictionary. We use CompareMode
> > vbTextCompare:
> >
> > my_dictionary.CompareMode = vbTextCompare
> > my_dictionary.Add "monkey", "Giraffe"
> > my_dictionary.Add "MONKEY", "Elephant"
> > MsgBox my_dictionary.Count
> >
> > On this example we don't even get to the Msgbox, instead we get an error
> > stating "This Key is already associated with an element of this
> > collection.". This stops two keys being added that have the same name.
> > vbBinaryCompare behaves the same way as the first example does (it is the
> > default) and vbDatabaseCompare....Well I read what it did once and never
> had
> > to remember it again! You can find explanations for these, albeit very
> > succinct, within the MS Help in Access, or better still Google it.
> >
> > Hopefully this gives you an extra tool alongside the Collection or Array
> and
> > some ideas on future use. A Dictionary makes code structure cleaner and
> more
> > humanly understandable. This _vbscript_ tool will really pay dividends.
> > <http://us.i1.yimg.com/us.yimg.com/i/mesg/tsmileys2/01.gif>
> >
> > Any questions about Dictionaries and their usage please don't hesitate to
> > ask.
> >
> > Buenos suerte!
> >
> > Duane Hennessy.
> > Bandicoot Software
> > Tropical Queensland, Australia
> > (ABN: 33 682 969 957)
> >
> > Want Increased Productivity?
> > <http://www.bandicootsoftware.com.au> http://www.bandicootsoftware.com.au
> >
> >
> >
> >
> > Please zip all files prior to uploading to Files section.
> >
> >
> >
> > _____
> >
> > YAHOO! GROUPS LINKS
> >
> >
> >
> > * Visit your group "AccessDevelopers
> > <http://groups.yahoo.com/group/AccessDevelopers> " on the web.
> >
> >
> > * To unsubscribe from this group, send an email to:
> > [EMAIL PROTECTED]
> > <mailto:[EMAIL PROTECTED]>
> >
> >
> > * Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service
> > <http://docs.yahoo.com/info/terms/> .
> >
> >
> > _____
> >
>
>
>
>
> Please zip all files prior to uploading to Files section.
>
>
>
>
> SPONSORED LINKS
>
>
> Microsoft
> <http://groups.yahoo.com/gads?t=ms&k=Microsoft+access+developer&w1=Microsoft
> +access+developer&w2=Microsoft+access+help&w3=Microsoft+access+database&w4=M
> icrosoft+access+training&w5=Microsoft+access+training+course&w6=Microsoft+ac
> cess+programming&c=6&s=193&.sig=d-CjBIrYOH9NCKHYFeGZJA> access developer
>
> Microsoft
> <http://groups.yahoo.com/gads?t=ms&k=Microsoft+access+help&w1=Microsoft+acce
> ss+developer&w2=Microsoft+access+help&w3=Microsoft+access+database&w4=Micros
> oft+access+training&w5=Microsoft+access+training+course&w6=Microsoft+access+
> programming&c=6&s=193&.sig=crx-d4AAhdklv_VozGVAUw> access help
>
> Microsoft
> <http://groups.yahoo.com/gads?t=ms&k=Microsoft+access+database&w1=Microsoft+
> access+developer&w2=Microsoft+access+help&w3=Microsoft+access+database&w4=Mi
> crosoft+access+training&w5=Microsoft+access+training+course&w6=Microsoft+acc
> ess+programming&c=6&s=193&.sig=qg2hDuQNweByMCX0NU7cEA> access database
>
>
> Microsoft
> <http://groups.yahoo.com/gads?t=ms&k=Microsoft+access+training&w1=Microsoft+
> access+developer&w2=Microsoft+access+help&w3=Microsoft+access+database&w4=Mi
> crosoft+access+training&w5=Microsoft+access+training+course&w6=Microsoft+acc
> ess+programming&c=6&s=193&.sig=bLZHqTqWUQny609X1OkmNA> access training
>
> Microsoft
> <http://groups.yahoo.com/gads?t=ms&k=Microsoft+access+training+course&w1=Mic
> rosoft+access+developer&w2=Microsoft+access+help&w3=Microsoft+access+databas
> e&w4=Microsoft+access+training&w5=Microsoft+access+training+course&w6=Micros
> oft+access+programming&c=6&s=193&.sig=d8GQXfQW3RZ64rOfzIMo8A> access
> training course
>
> Microsoft
> <http://groups.yahoo.com/gads?t=ms&k=Microsoft+access+programming&w1=Microso
> ft+access+developer&w2=Microsoft+access+help&w3=Microsoft+access+database&w4
> =Microsoft+access+training&w5=Microsoft+access+training+course&w6=Microsoft+
> access+programming&c=6&s=193&.sig=iXDlL79-kkgjv6fLyFu3Sg> access
> programming
>
>
>
> _____
>
> YAHOO! GROUPS LINKS
>
>
>
> * Visit your group "AccessDevelopers
> <http://groups.yahoo.com/group/AccessDevelopers> " on the web.
>
> * To unsubscribe from this group, send an email to:
> [EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>
>
> * Your use of Yahoo! Groups is subject to the Yahoo!
> <http://docs.yahoo.com/info/terms/> Terms of Service.
>
>
>
> _____
>



Please zip all files prior to uploading to Files section.




YAHOO! GROUPS LINKS




Reply via email to