Dictionary - Add method parameters

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

I checked many posts about the Scripting.Dictionary and still cannot figure
out what the two parameters are, the key and a description or an item and a
key or what? Then what is an item (or the description) and what can it be
used for?
If I have a description for each key, can I store it alongside the key and
use it later after I found its corresponding key?
My problem is as follows: I have a text file with 114000 lines. On each
line, there is a contract number and a 3 character field (a code) that I must
use to determine the template to use. Can I use the dictionary to solve my
problem or not?
The Add method is generally used in this manner:
Dic.Add CStr(Item), Item
or
Dic.Add sh.Name, CStr(sh.Name)
Could I use
Dic.Add strContract, strCode
If yes, then how do I search and display a specific contract number and its
corresponding code?
If no, should I use a Dictionary and a dynamic array instead?
Thanks
 
The example in MSDN seems to show it well

Dim d ' Create a variable.
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "Athens" ' Add some keys and items.
d.Add "b", "Belgrade"
d.Add "c", "Cairo"

Check if it exists

If d.Exists("c") Then
msg = "Specified key exists."
Else
msg = "Specified key doesn't exist."
End If

Use items

a = d.Items ' Get the items.
For i = 0 To d.Count -1 ' Iterate the array.
s = s & a(i) & "<BR>" ' Create return string.
Next

Use keys

a = d.Keys ' Get the keys.
For i = 0 To d.Count -1 ' Iterate the array.
s = s & a(i) & "<BR>" ' Return results.
Next


--

HTH

RP
(remove nothere from the email address if mailing direct)
 
so
Dic.Add CStr(contract_number), template_code

if you will look up using the contract number to get the template code.
 
Hi Bob,
Your reply is quite helpful. I had only checked the F1 key and could not get
any help on the Scripting.Dictionary; only the Word Dictionary. Next time, I
will look in MSDN first.
Now that I know I can use the dictionary for my case, I have one more
question. When I check if a specific key exists, then do I absolutely have to
iterate through the items to find out its index (0 to .count - 1)?
Thank you for your comment.
 
Hi Jac,

Yes I guess so, but why would you need the index, the Dictionary object is
not index based. If you want the value, try

If d.Exists("c") Then
MsgBox d.Item("c")
End If


--

HTH

RP
(remove nothere from the email address if mailing direct)
 
Hi again Bob,
The reason is that I need the corresponding template code to determine which
template to use for a particular contract number.
 
Hi Tom,
Why do you convert to string the contract number and not the template code
(or both)?
Thanks for your reply.
 
That is the whole point. You use the contract number to retrieve the
contract code. You don't need the index number.
In Bob's example, the sample code:


should return Cairo in the message box.
 
out of habit from using collections. You can use a number

Sub AB()
Set d = CreateObject("Scripting.Dictionary")
d.Add 12, "Athens" ' Add some keys and items.
d.Add 18, "Belgrade"
d.Add 32, "Cairo"

Debug.Print d.Item(32)

End Sub

Will Return Cairo


--
Regards,
Tom Ogilvy



Jac Tremblay said:
Hi Tom,
Why do you convert to string the contract number and not the template code
(or both)?
Thanks for your reply.
 
Hi Bob,
You are right again. I had not noticed that one could get the item value
directly like that. There is no need to make things more complicated than
they really are.
Thanks to you, and thanks to Tom who opened my eyes.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top