VBScript: come utilizzare un oggetto dizionario restituito da una funzione?

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

  •  02-07-2019
  •  | 
  •  

Domanda

Sto cercando di restituire un dizionario da una funzione. Credo che la funzione funzioni correttamente, ma non sono sicuro di come utilizzare il dizionario restituito.

Ecco la parte rilevante della mia funzione:

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

Come posso chiamare questa funzione e usare il dizionario restituito?

EDIT: ho provato questo:

Dim someStuff
someStuff = GetSomeStuff

e

Dim someStuff
Set someStuff = GetSomeStuff

Quando provo ad accedere ad someStuff, ricevo un errore:

Microsoft VBScript runtime error: Object required: 'GetSomeStuff'

MODIFICA 2: provare questo nella funzione:

Set GetSomeStuff = stuff

Risultati in questo errore:

Microsoft VBScript runtime error: Wrong number of arguments or invalid property assignment.
È stato utile?

Soluzione

Non ero troppo sicuro di quale fosse il tuo problema, quindi ho provato un po '.

Sembra che ti sia sfuggito che per assegnare un riferimento a un oggetto, devi usare set , anche per un valore di ritorno:

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

Altri suggerimenti

Hai provato a fare
imposta GetSomeStuff = stuff
nell'ultima riga della funzione?

Hai provato:

Dim returnedStuff
Set returnedStuff = GetSomeStuff()

Quindi " per ciascuno " iterando sul dizionario? C'è un esempio dell'uso del Dizionario (anche se per VB6, l'essenza è la stessa però!) qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top