前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Microsoft VBScript 运行时错误 '800a0009' 下标越界: '[number: 1]'的解决方法

Microsoft VBScript 运行时错误 '800a0009' 下标越界: '[number: 1]'的解决方法

作者头像
p4nda
发布2023-01-03 13:31:41
2.2K0
发布2023-01-03 13:31:41
举报
文章被收录于专栏:技术猫屋

从年初开始准备考研,已经很久没有更新自己的博客了。假期帮学校搞服务器,遇到了一个有趣的问题,记录一下吧。

起因

在服务器数据迁移完毕,环境搭建好,正式运行后,学校官网首页出现了这个问题

打开文件,找到问题行:

代码语言:javascript
复制
<%
    sql="select top 10 d_id,d_title,class_id,d_time,is_url,url from a_detail where class_id = 12 or class_id = 18 or class_id = 19 order by d_id desc"
    set rs=server.createobject("adodb.recordset")
    rs.open sql,conn,1,1
    if not rs.eof and not rs.bof then
    Do While Not rs.eof
        dim class_id,d_id,d_time,d_year,d_month,d_day
        class_id = rs("class_id")
        d_id = rs("d_id")
        d_time_text = CStr(rs("d_time"))
        d_time_arr = Split(d_time_text,"-")
        d_year = d_time_arr(0)
        
        if d_time_arr(1) <= 9 then   // 问题行
            d_month = "0"&d_time_arr(1)            
        else
            d_month = d_time_arr(1)
        end if
        
        if d_time_arr(2) <= 9 then
            d_day = "0"&d_time_arr(2)
        else
            d_day = d_time_arr(2)            
        end if
        
        if rs("is_url") = true then
            Response.Write("<tr><td><img src='pic/row.png' align='absmiddle'><font class='NewsTitledy'>"&d_month&"-"&d_day&"</font>&nbsp;|&nbsp;<a class='NewsTitledy' href='"&rs("url")&"' target='_blank'>"&rs("d_title")&"</a><td></tr>")
        else
            Response.Write("<tr><td><img src='pic/row.png' align='absmiddle'><font class='NewsTitledy'>"&d_month&"-"&d_day&"</font>&nbsp;|&nbsp;<a class='NewsTitledy' href='page/page/"&class_id&"/"&d_year&"-"&d_month&"-"&d_day&"-"&d_id&".html' target='_blank'>"&rs("d_title")&"</a><td></tr>")
        end if        
        rs.movenext
    Loop    
    end if    
    rs.close
%>

这段代码的功能不难理解,就是从top表中取出相应的字段,然后调用各个字段的值,在组合列出链接目录。 从代码看,没有任何问题,文件是从原服务器上直接拷贝下来的,在原来的环境下,没有任何问题,那么现在问题出现在哪里了呢?

寻找原因

根据提示,发现是数组下标越界了,尝试将d_time_arr(1) <= 9 改成 d_time_arr(0) <= 9 :

再结合一下代码,瞬间明白了!!!

看这一行

代码语言:javascript
复制
       d_time_arr = Split(d_time_text,"-")

我们知道split() 方法用于把一个字符串分割成字符串数组,在这里的分割依据是“-”符号,但是服务器的时间格是“yyyy/M/d”!

解决

知道问题就容易解决了。 方法有两种,第一种就是将服务器的时间格式改为yyyy-M-D,步骤如下:

** 运行 --> 输入 regedit

** 找到 HKEY_USERS.DEFAULTControl PanelInternational

** 找到右侧的 sDate和sShortDate,将其中的“/” 改为“-”

** 重启IIS

第二种简单点,直接修改代码,将d_time_arr = Split(d_time_text,"-")改成d_time_arr = Split(d_time_text,"/") 以上,成功解决了“Microsoft VBScript 运行时错误 '800a0009' 下标越界: '[number: 1]' ”的问题。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 起因
  • 寻找原因
  • 解决
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档