2016-06-29 22 views
0

所以我有一個項目的列表,我從數據庫中拉出來,需要以非常具體和複雜的方式進行排序。爲了解決這個問題,我創建了一個包含記錄集中所有信息的對象,並通過數組來組織它們,我可以按照我想要的順序打印出來。問題是,在我的「do while rs.eof」之後,我將所有對象設置爲我需要的任何對象,即使數組本身沒有,它們在循環結束時也會超出範圍。我已經檢查過,這些對象是在循環中設置的,並且它們可以工作,但是當我到達Response.Write()時,它們就停止了。我不包括循環的開始,因爲它更多或更少的複製粘貼與數組更改。有小費嗎?對象不斷超出範圍在VBScript/ASP經典

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個數據成員(字符串)的對象,就是這樣。我擔心包含太多不重要的代碼,而且太多了。我將來必須更加體貼這一點。 – Naiya55

+1

爲什麼在記錄集循環中設置tablethelper對象?我會在循環之前設置它,並且(在循環中)使用它。 –

回答

0

所以我想出了我的問題。我原來一直在初始化我的數組大小爲0,所以當代碼頂部的redim運行時,它會將數組大小調整爲1,使我處理數組中的第一個元素成爲可能。這顯然給了我一個錯誤,我通過將數組初始化爲1來修復它。但是,我忘了補償這一點,並將redim語句移到if語句的末尾,並更改for循環的邊界。總之,我是個白癡。在光明的一面,我瞭解了更多關於如何正確發佈SO的信息!