2016-06-29 3 views
0

私は非常に具体的かつ複雑な方法でソートする必要があるデータベースから引き出している項目のリストを持っています。これに対処するために、レコードセット内のすべての情報を含むオブジェクトを作成し、配列で整理しました。これを必要な順序で印刷できます。問題は、すべてのオブジェクトを必要なものに設定した私の "do while rs.eof"の後で、配列自体がしなくても、ループが終了したときに範囲外になることです。私は、オブジェクトがループ内に設定されていることを確認して、動作しますが、Response.Write()に到達するまでに終了します。配列の変更をコピーして貼り付けたelseステートメントが多かれ少なかれ、ループの始めは含めません。任意のヒント?オブジェクトは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

どのオブジェクトですか?ループ内に 'f0' *(' Array')*が設定されていますが、後で 'a045' *(' Array'でもあります)*にアクセスしようとしています。理想的には、これが提供しない[mcve]を提供する必要があります。 – Lankymart

+0

TabletHelperがオブジェクトになります。これは、3つのdatamembers(文字列)を保持するオブジェクトであり、それです。私は、あまり重要ではないコードをあまりにも多く含んでいることを心配していました。私は将来これについてもっと心配する必要があります。 – Naiya55

+1

なぜレコードセットループにtablethelperオブジェクトを設定するのですか?私はループの前にそれを設定し、ループの内部で(再)使用します。 –

答えて

0

私は私の問題を理解しました。最初はサイズ0の配列を初期化していたので、コードの先頭にあるredimが実行されると、配列のサイズを1に変更し、配列の最初の要素と同じ要素を作成します。これは明らかに私にエラーを与え、代わりにサイズ1に配列を初期化することで修正しました。しかし、これを補うことを忘れて、redim文をif文の最後に移動し、forループの境界を変更することは忘れてしまいました。要するに、私はばかです。明るいところで、私はSOに正しく投稿する方法についてもっと学びました!

関連する問題