2016-06-29 7 views
0

So habe ich eine Liste von Elementen, die ich aus einer Datenbank ziehen, die auf eine sehr spezifische und komplizierte Weise sortiert werden müssen. Um dies zu bekämpfen, habe ich ein Objekt erstellt, das alle Informationen aus dem Datensatz enthält und diese nach Arrays organisiert, die ich in der gewünschten Reihenfolge ausdrucken kann. Das Problem ist, dass nach meinem "do while rs.eof", wo ich alle Objekte auf das setze, was ich brauche, sie fallen nicht in den Geltungsbereich, wenn die Schleife endet, auch wenn die Arrays selbst nicht. Ich habe überprüft, dass die Objekte in der Schleife gesetzt werden und sie funktionieren, aber sie hören einfach auf, zu dem Zeitpunkt zu sein, an dem ich zu Response.Write() komme. Ich schließe den Anfang der Schleife nicht ein, weil es mehr oder weniger die else-Anweisung ist, die mit dem geänderten Array kopiert wurde. Irgendwelche Tipps?Objekt bleibt außerhalb des Geltungsbereichs in Vbscript/asp classic

Else 
      ReDim Preserve f0(Ubound(f0)+1) 
      Set tab = new TabletHelper 
      Set f0(Ubound(f0)) = tab 
      item = rs("Item") 
      dest = rs("Destination") 
      time = rs("DateTime") 
      f0(Ubound(f0)).setItem(item) 
      f0(Ubound(f0)).setLocation(dest) 
      f0(Ubound(f0)).setDateTime(time) 
     End If 
     rs.movenext 
    loop 

    rs.Close 

    If Ubound(a045) > 0 then 
    for i = 1 to Ubound(a045) 
      Response.Write("<tr><td>"&a045(i).iNum()&"</td><td>"&a045(i).dest()&"</td><td>"&a045(i).dateT()&"</td></tr>") 
    next 
+0

Welches Objekt? Sie haben 'f0' * (was ein' Array' ist) * in der Schleife gesetzt, aber Sie versuchen, danach auf 'a045' * (was auch ein' Array' ist) * zuzugreifen ... was ist das? Im Idealfall sollten Sie eine [MCVE] bereitstellen, die dies nicht ist. – Lankymart

+0

Der TabletHelper wäre das Objekt. Es ist ein Objekt, das 3 Datenmember (Strings) enthält und das wars. Ich habe mir Sorgen gemacht, zu viel Code aufzunehmen, der nicht wichtig war und viel zu viel weggelassen wurde. Darauf muss ich in Zukunft mehr Rücksicht nehmen. – Naiya55

+1

Warum legen Sie das Tablet Helper-Objekt in der Recordset-Schleife fest? Ich würde es vor der Schleife setzen und (re) es innerhalb der Schleife benutzen. –

Antwort

0

Also habe ich mein Problem herausgefunden. Ich hatte meine Arrays ursprünglich als Größe 0 initialisiert, so dass, wenn der Redim am oberen Rand des Codes lief, es das Array auf Größe 1 skalieren würde, was jedes Element, mit dem ich arbeitete, mit dem ersten im Array machte. Dies gab mir offensichtlich einen Fehler und ich reparierte es, indem ich stattdessen das Array auf Größe 1 initialisierte. Allerdings habe ich vergessen, dies zu kompensieren und die redim-Anweisung an das Ende der if-Anweisung zu verschieben und die Grenzen der for-Schleife zu ändern. Kurz gesagt, ich bin ein Idiot. Auf der positiven Seite habe ich mehr darüber gelernt, wie man korrekt auf SO schreibt!

Verwandte Themen