>Herauslese kommt einfach nichts. Wie kann ich �berpr�fen ob das
myDictionary.Item("1000")wirklich vorhanden ist?
Und wozu habe ich mir gestern die Arbeit gemacht und hab lang und breit
erkl�rt, wie man mit den Dictionary Objekt arbeitet? Inklusive dem
Verwenden des DO und dem Auslesen des kompletten Variablensatzes.
Und bei myDictionary.Item("1000") kannst Du Dir das Item auch sparen,
weil item eh die Defaulteigenschaft ist. Ok, aber wenn es dasteht, dann
schadet es auch nicht.
Wenn dir nicht klar ist wie das Ding funktioniert, dann pack halt den
Code in eine sowieso.VBS Datei hinein, ersetz die DB Geschichte durch
Konstanten und spiel mit dem Teil rum und probier die Dinge aus. Ist
allemal schneller als den zus�tzlichen Ballast der ASP-Seite samt
Datenbank mitzuschleppen. Und es w�re auch schneller als bei jedem
Tippfehler hier in die Liste zu posten und dann auf Antwort zu warten.
Vom eigenen Erfolgerlebnis noch gar nicht zu reden.
Also dann noch ein letzter Vorschlag: das folgende Script in eine Datei
test.vbs packen und einmal laufen lassen um zu sehen wie das Ding
tickert. Um die Dinge sch�n untereinander zu sehen, kann man das Script
auch in der DOS Box laufen lassen mit CSCRIPT TEST.VBS. Dann
ausprobieren und rumprobieren bis es tut was es soll. Und dann wieder
in die ASP seite einsetzen und den wscript.echo durch Response.write
ersetzen und an passender Stelle die Daten von der Datenbank einf�llen
lassen. Sollte dann kein Thema mehr sein.
Option Explicit
Dim a, b, dict, i
Set dict = CreateObject("Scripting.Dictionary")
dict.Add "1000", "Produkt1"
dict.Add "1050", "Produkt2"
dict.Add "1070", "Produkt3"
' -- Alle Schl�ssel durchlaufen
a = dict.keys
for i = 0 to dict.count - 1
wscript.echo a(i)
next
wscript.echo
' -- Alle Daten durchlaufen
a = dict.items
for i = 0 to dict.count - 1
wscript.echo a(i)
next
wscript.echo
' -- Schl�ssel und Daten durchlaufen
a = dict.keys
b = dict.items
for i = 0 to dict.count - 1
wscript.echo a(i) & " = " & b(i)
next
wscript.echo
' -- Schl�ssel �ber Schleife, Daten �ber DictObjekt
a = dict.keys
for i = 0 to dict.count - 1
wscript.echo a(i) & " = " & dict(a(i))
next
wscript.echo
' -- Daten zusammensetzen
a = dict.keys
for i = 0 to dict.count - 1
wscript.echo dict(a(i)) & a(i)
next
wscript.echo
Und hier zum Nachlesen das Posting von Gestern
Was Du wohl haben / nutzen m�chtest ist mit dem Dictionary Objekt
machbar. Mit normalen Variablen ist das nicht drin. Es sein denn Du
wolltest einen Array mit 1070 oder mehr Elementen einrichten was ein
bischen heftiger Overkill w�re.
Nummer Name
1000 Produkt1
1050 Produkt2
1070 Produkt3
Erstens: Objekt belegen (hier mal gleich das Beispiel aus der Hilfe
abgewandelt)
Dim d
Set d = CreateObject("Scripting.Dictionary")
d.Add "1000", "Produkt1"
d.Add "1050", "Produkt2"
d.Add "1070", "Produkt3"
Oder aus der Datenbank gef�llt
d.Add rs_Produkte("ProduktNummer"), (rs_Produkte("ProduktName")
Evtl. will er ein explizites Konvertieren auf String haben (bitte
ausprobieren)
d.Add CStrg(rs_Produkte("ProduktNummer")), (rs_Produkte("ProduktName")
Um das dann zu nutzen machst Du z.B. ein
Response.write "Produkt 1050 = " & D("1050")
Oder man kann die ganze Chose in einer Schleife durchlaufen. Dazu wird
das komplette Dictionary in einen Array "umgeladen" und per Schleife
durchger�delt. Beispiel wiederum aus der Hilfe und dann leicht
abge�ndert
a = d.Keys
For i = 0 To d.Count-1
Response.write a(i) & "<BR>"
Next
Das jeweils linke (oder erste Argument beim Add) sind die Keys. Das
rechte (oder das zweite Argument beim Add) sind die Items. Die kannst
Du beide gleichwertig verwenden. Obiges Beispiel k�nnte sein
a = d.Keys
b = d.Items
For i = 0 To d.Count-1
Response.write a(i) & " = " & b(i) & "<BR>"
Next
Wobei das nat�rlich K�se ist, denn hier k�nnte ich ja genau das
Dictionary Objekt verwenden.
a = d.Keys
For i = 0 To d.Count-1
Response.write a(i) & " = " & d(a(i)) & "<BR>"
Next
Ok wenn das zu verwirrend ist, bleib beim ersten Beispiel.
Nochwas: das Dict. Objekt ist schwer beleidigt wenn doppelte Namen
daherkommen. Also entweder ist das von der DB her schon garantiert dass
nix doppeltes kommt. Oder Du baust ein St�ck Code ein, das Doppelte
abf�ngt. Dazu gibt es die .Exist Methode.
Etwa nach dem Schema
If Not d.Exists("1050") Then
d.Add "1050", "Produkt2"
End If
--
Viele Gr��e
Hubert Daubmeier
| Oft Gefragtes: http://www.aspgerman.com/aspgerman/faq/
| [aspdebeginners] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdebeginners/ = Listenarchiv
| Sie knnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdebeginners.asp