VBScript: Como utiliize um objeto dicionário retornado de uma função?
-
02-07-2019 - |
Pergunta
Eu estou tentando retornar um dicionário de uma função. Eu acredito que a função está a funcionar correctamente, mas não tenho certeza de como utilizar o dicionário retornado.
Aqui está a parte relevante da minha função:
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
Como faço para chamar esta função e usar o dicionário retornado?
EDIT: Eu tentei isso:
Dim someStuff
someStuff = GetSomeStuff
e
Dim someStuff
Set someStuff = GetSomeStuff
Quando tento acesso someStuff, eu recebo um erro:
Microsoft VBScript runtime error: Object required: 'GetSomeStuff'
EDIT 2: Tentando esta na função:
Set GetSomeStuff = stuff
Os resultados neste erro:
Microsoft VBScript runtime error: Wrong number of arguments or invalid property assignment.
Solução
Eu não estava muito certo do que era o seu problema, então eu experimentei um pouco.
Parece que você acabou de perder que atribuir uma referência a um objeto, você tem que usar set
, mesmo para um valor de retorno:
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
Outras dicas
Você tentou fazer
set GetSomeStuff = stuff
na última linha da função?
Você tentou:
Dim returnedStuff
Set returnedStuff = GetSomeStuff()
Em seguida, "For Each" iteração sobre o dicionário? Há um exemplo de como usar o dicionário (ainda que por VB6, a essência do que é o mesmo embora!) aqui .