VBScript: Comment utiliser un objet dictionnaire retourné par une fonction?
-
02-07-2019 - |
Question
J'essaie de renvoyer un dictionnaire à partir d'une fonction. Je crois que la fonction fonctionne correctement, mais je ne sais pas comment utiliser le dictionnaire renvoyé.
Voici la partie pertinente de ma fonction:
Function GetSomeStuff()
'
' Get a recordset...
'
Dim stuff
Set stuff = CreateObject("Scripting.Dictionary")
rs.MoveFirst
Do Until rs.EOF
stuff.Add rs.Fields("FieldA").Value, rs.Fields("FieldB").Value
rs.MoveNext
Loop
GetSomeStuff = stuff
End Function
Comment appeler cette fonction et utiliser le dictionnaire renvoyé?
EDIT: j'ai essayé ceci:
Dim someStuff
someStuff = GetSomeStuff
et
Dim someStuff
Set someStuff = GetSomeStuff
Lorsque j'essaie d'accéder à someStuff, j'obtiens une erreur:
Microsoft VBScript runtime error: Object required: 'GetSomeStuff'
EDIT 2: Essayer ceci dans la fonction:
Set GetSomeStuff = stuff
Résultats de cette erreur:
Microsoft VBScript runtime error: Wrong number of arguments or invalid property assignment.
La solution
Je ne savais pas trop quel était votre problème, alors j’ai essayé un peu.
Il semble que vous veniez juste de manquer que pour affecter une référence à un objet, vous devez utiliser set
, même pour une valeur renvoyée:
Function GetSomeStuff
Dim stuff
Set stuff = CreateObject("Scripting.Dictionary")
stuff.Add "A", "Anaconda"
stuff.Add "B", "Boa"
stuff.Add "C", "Cobra"
Set GetSomeStuff = stuff
End Function
Set d = GetSomeStuff
Wscript.Echo d.Item("A")
Wscript.Echo d.Exists("B")
items = d.Items
For i = 0 To UBound(items)
Wscript.Echo items(i)
Next
Autres conseils
Avez-vous essayé de faire
set GetSomeStuff = stuff
dans la dernière ligne de la fonction?
Avez-vous essayé:
Dim returnedStuff
Set returnedStuff = GetSomeStuff()
Ensuite, "Pour chaque". itérer sur le dictionnaire? Il existe un exemple d'utilisation du dictionnaire (bien que pour VB6, son sens est le même!) ici .