VBScript: Comment utiliser un objet dictionnaire retourné par une fonction?

StackOverflow https://stackoverflow.com/questions/140002

  •  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.
Était-ce utile?

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 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top