类型不匹配错误:'UBound'

问题描述:

我需要一个非常烦人的问题的帮助,我从今早8开始一直在努力..我不是专业的,当涉及到调试经典的asp错误。然而,我知道足够的知道发生了什么,但不完全确定如何处理/根除这个问题:类型不匹配错误:'UBound'

问题:sql查询可能会返回任何将导致我的数组为空,这是给我标题中指定的错误。

代码:

233 while not rs.eof 
    234 varCampArray = split(trim(rs("Notes")) & "", ";") 
    235  If ubound(varCampArray) > 0 Then 
    236   varCampArray2 = split(varCampArray(0) & "", "=") 
    237  End If 
    238  if ubound(varCampArray2) > 0 then 
    254  wend 

线239-253是无关的(只是基于关闭阵列和另一个查询计算),只是想那么没有人认为其不正确编码添加“蜿蜒”的语句。

附加信息: 这是我们自定义的vb应用程序,对于这个特定的asp文件,用户转到Report> Daily> Summary,然后从那里用户选择某一天来获得当天的财务摘要。如果我今天运行这个报告,它会运行,并且我得到数字,如果我在本月26日运行它,它会运行并且没有错误地执行。如果我运行它昨天(2016年4月27日),我在我们的VB应用程序获取此在的ReportViewer: (Microsoft VBScript运行时错误 '800a000d')

类型不匹配:UBOUND'

/应用/Program14/reports/trans_summary.asp,第238行

我还没有试图解决这个问题,因为我不确定如何处理这个问题。我甚至查看了iis日志文件,它的错误是500 0 0 130.然后配置IE以正确显示运行时错误的详细信息。这就是它吐出来的东西,而且我现在被卡住了。任何帮助将不胜感激。我搜索了无数其他文章,但我仍然对这个问题感到迷茫,而且微软和外国技术支持一样有帮助。

ubound(varCampArray)不是>0varCampArray2会有什么?它可能不是一个数组。这就是为什么UBound方法在varCampArray2上抛出错误!

只是在使用UBound之前检查它是否是数组。

while not rs.eof 
    varCampArray = split(trim(rs("Notes")) & "", ";") 
    If ubound(varCampArray) > 0 Then 
      varCampArray2 = split(varCampArray(0) & "", "=") 
    End If 
    If isArray(varCampArray2) Then 
     if ubound(varCampArray2) > 0 then 
       'do something here 
      end If 
     Else 
      Msgbox "all these time i thought it was an array!!!" 
     End If 
wend 

或者简单地说,如果在第一个if区块内,您可以移动第二个。

while not rs.eof 
    varCampArray = split(trim(rs("Notes")) & "", ";") 
    If ubound(varCampArray) > 0 Then 
      varCampArray2 = split(varCampArray(0) & "", "=") 
      if ubound(varCampArray2) > 0 then 
       'do something here 
      end If 
    End If 
wend 
+0

感谢VINS,处理这个问题最多的一天,只是不得不从我的机器走开,只是重新启动我的脑海里,然后回来看你的答案后,我终于发现了问题。问题在于数据被忽略(为了使查询/报告成功,数组数据是必需的)。你的回答引导我解决了我的问题,我非常感谢。我将你的建议添加到报告代码中(如果嵌套在另一个嵌套中,然后从那里嵌套)。 – user2001006