Type Mismatch Error: 'UBound'

Type Mismatch Error: 'UBound'

我需要帮助解决一个非常烦人的问题,我从今天早上 8 点开始就一直在处理这个问题。在调试经典 asp 错误方面,我绝不是专家。但是,我知道的足以弄清楚发生了什么,但不完全确定如何 deal/eradicate 解决这个问题:

问题:sql 查询可能 return 没有任何东西会导致我的数组为空,这会给我标题中指定的错误。

代码:

  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 是不相关的(只是基于数组和另一个查询的计算)并且只是想添加 'wend' 语句所以没有人认为它没有正确编码。

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

类型不匹配:'ubound'

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

我还没有尝试解决这个问题,因为我不确定如何处理这个问题。我什至查看了 iis 日志文件,它的错误是 500 0 0 130。然后配置 IE 以在 运行 时间内正确显示错误的详细信息。这就是它吐出的内容,目前被卡住了。任何帮助将不胜感激。我在谷歌上搜索并阅读了无数其他文章,但在这个问题上我仍然感到有些迷茫,而微软与外国技术支持一样有帮助。

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

使用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 块内移动第二个 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