类型不匹配错误:'UBound'

时间:2016-04-28 16:26:42

标签: vbscript asp-classic

我需要一个非常恼人的问题的帮助,我今天早上8点以来一直在努力。在调试经典的asp错误时,我绝不是专业人士。但是,我知道如何处理正在发生的事情,但不完全确定如何处理/根除这个问题:

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

代码:

c.getString(colIndex);

第239-253行是无关紧要的(只是基于数组和另一个查询的计算)而只是想添加'wend'语句,所以没有人认为它没有正确编码。

额外信息: 这适用于我们的自定义vb应用程序,对于此特定的asp文件,用户转到报告>每日>摘要,然后用户选择某一天来获取当天的财务摘要。如果我今天运行报告,它运行,我得到数字,如果我在本月26日运行它,它运行并执行没有错误。如果我昨天(2016年4月27日)运行它,我会在我们的vb应用程序的reportViewer中得到它: (Microsoft VBScript运行时错误'800a000d')

类型不匹配:'ubound'

/apps/Program14/reports/trans_summary.asp,238行

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

1 个答案:

答案 0 :(得分:3)

ubound(varCampArray)不是>0时,varCampArray2会有什么?它可能不是一个数组。这就是UBoundvarCampArray2方法引发错误的原因!

在使用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