2016-06-29 2 views
0

그래서 매우 구체적이고 복잡한 방식으로 정렬해야하는 데이터베이스에서 가져온 항목 목록이 있습니다. 이 문제를 해결하기 위해 레코드 세트의 모든 정보를 포함하는 객체를 만들었고 어레이로 구성했습니다. 원하는 순서대로 인쇄 할 수 있습니다. 문제는 내 "do 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 (string)을 보유하고있는 객체입니다. 나는 중요하지 않았고 너무 많이 버려진 너무 많은 코드를 포함하는 것에 대해 걱정했다. 나는 앞으로 이것에 대해 더 예의 바르게해야 할 것입니다. – Naiya55

+1

왜 레코드 세트 루프에서 tablethelper 객체를 설정해야합니까? 루프 전에 설정하고 (다시) 루프 내부에서 사용합니다. –

답변

0

그래서 내 문제를 알아 냈습니다. 원래 크기 0으로 배열을 초기화 했으므로 코드 상단의 redim을 실행하면 크기가 1로 배열 크기가 조정되어 배열의 첫 번째 요소와 관련된 모든 요소가 만들어집니다. 이것은 분명히 나에게 에러를 주었고 배열을 사이즈 1로 초기화함으로써 그것을 고쳤다. 그러나 이것을 보완하고 redim 문을 if 문 끝으로 이동하고 for 루프의 경계를 변경하는 것을 잊었습니다. 요컨대, 나는 바보입니다. 밝은면에서, 나는 SO에 올바르게 게시하는 방법에 대해 더 많이 배웠다!

관련 문제