>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

Antwort per Email an