“下标范围”错误(页面加载时的vbscript)

时间:2009-12-02 16:47:41

标签: asp-classic vbscript

我的名字是埃德,我需要你的帮助。在我的经典ASP应用程序中加载页面时出现此错误:

Microsoft VBScript runtime error  '800a0009' 
Subscript out of range: 'cont' 
/admin/cadastros_apz_material.asp, line 173 

相关代码是:

do while not rs.eof
  for i = 1 to tpp
     if i = 1 then matriz(cont) = Rs("id_material_apv_produto") else matriz(cont) = matriz(cont) & "_" & rs("id_material_apv_produto")
     rs.movenext: if rs.eof then exit do
   next: cont = cont + 1
loop: set rs = nothing: if cint(pag) = 1 and ubound(matriz) >= 1 then id = matriz(1)

感谢。

2 个答案:

答案 0 :(得分:5)

首先关闭::运营商很不错,但你明确地过度了。我建议清理代码以使其更具可读性。它也有助于调试,因为它会破坏线路并帮助按行定位错误。

Do While Not rs.EOF
  For i = 1 To tpp
    If i = 1 Then 
      matriz(cont) = rs("id_material_apv_produto") 
    Else 
      matriz(cont) = matriz(cont) & "_" & rs("id_material_apv_produto")
    End If
    rs.MoveNext
    If rs.EOF Then Exit Do
  Next
  cont = cont + 1
Loop
Set rs = Nothing
If CInt(pag) = 1 And UBound(matriz) >= 1 Then 
  id = matriz(1)
End If

现在为您的错误。它抱怨说,在某些时候,cont指的是matriz之外的位置。您的数组具有错误的维度,请检查它的创建方式。

答案 1 :(得分:3)

看来matriz()在索引处不包含数值元素,其值存储在cont中。

猜测:

  • Matriz()是从1开始的(选项基础1,即1 ... x)和cont = 0
  • Matriz()对于正在阅读的记录数量来说太小了