Går det att fylla en dictionary med värden från en databas med en loop!? För att loopa igeonom alla fält kan du använda 0 till 4 istället som Vem föreslog. Eller så användur du + 1 alternativt -1: Tack för all hjälp, vá mycket tips jag fick! som grädde på moset fungerar du ju mé! /Evafylla en "dictionary" dynamiskt
Set test = server.CreateObject("Scripting.Dictionary")
for i = 1 to 5
test.add i, recordset.Fields(i)--> Det här ju förstås inte....
Next
om jag gör enligt följande är det inget problems:
test.add "key 1", recordset.Fields(0)
test.add "key 2", recordset.Fields(1)
test.add "key 3", recordset.Fields(2)
test.add "key 4", recordset.Fields(3)
test.add "key 5", recordset.Fields(4)
tack på förhand....evaSv: fylla en "dictionary" dynamiskt
Har för mig att du får problem om du anger tal som key.
Du måste oxå vara ordentlig och skriva ut att det är värde som skall läggas in i ditt directory. Annars komer den lägga in en referens till ditt fält. Vilket ger fel om du försöker läsa och har stängt ditt recordset.
<code>
Set test = server.CreateObject("Scripting.Dictionary")
For i = 0 To 4
test.Add "Key " & i, Recordset(i).Value
Next
</code>
Eller:
<code>
Set test = server.CreateObject("Scripting.Dictionary")
For i = 0 To 4
test.Add "Key " & i + 1, Recordset(i).Value
Next
</code>
Eller:
<code>
Set test = server.CreateObject("Scripting.Dictionary")
For i = 1 To 5
test.Add "Key " & i, Recordset(i-1).Value
Next
</code>
Alternativt till att skriva ut value kan du använda paranteser. Men det är ingen snygg lösning.
<code>
Set test = server.CreateObject("Scripting.Dictionary")
For i = 0 To 4
test.Add "Key " & i, (Recordset(i))
Next
</code>
Detta kommer utvärdera uttrycket innan det skickar det som parameter.
Problemet med att lägga till värdet beror på att argumentet är deklarerat som variant. För attt ta emot objekt, tal, strängar osv. Du skulle inte få detta probelm om argumentet var deklareratt som sträng.
Det är därför viktigt att man som programmerare vet vad som egentligen händer ner i mista detalj. Även om koden är förenklad.Sv: fylla en "dictionary" dynamiskt