我需要一个非常恼人的问题的帮助,我今天早上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搜索并阅读了无数其他文章,但我仍然对这个问题感到失落,微软和外国技术支持一样有用。
答案 0 :(得分:3)
当ubound(varCampArray)
不是>0
时,varCampArray2
会有什么?它可能不是一个数组。这就是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