为什么我的语句总是不执行?

hgllucky 2003-12-12 11:32:03
下面的代码总是提示
Microsoft VBScript 运行时错误 错误 '800a0009'
下标越界: 'i'
/rlzy/xfbc.asp,行61


if request.form("tj")="提交" then
xf=request.form("xf")
array2=split(xf,", ")
max2=ubound(array2)
if max2>=0 then
i=0
Set conn88=Server.CreateObject("ADODB.Connection")
conn88.Open "Driver=SQL Server;Server=192.169.5.25;UID=hgx;PWD=hgx;Database=rlzy"
Set myrst88=Server.CreateObject("ADODB.Recordset")
sql88="select * from 培训记录表 where 课程名称 like '%" & kcmc & "%'"
sql88=sql88 & "and 时间='" & date1 & "' and 截止时间='" & date2 & "' and 所在公司='" & gs & "'"
myrst88.open sql88,conn88,3,3
do while not myrst88.eof
(下面语句为第61行)
sql ="update 培训记录表 set 学费='" & array2(i) & "' where 编号='" & myrst88("编号") & "'"
conn88.execute(sql)
i=i+1
myrst88.movenext
loop
myrst88.close
set myrst88=nothing
conn88.close
set conn88=nothing
end if
end if
...全文
72 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
bullion 2003-12-12
  • 打赏
  • 举报
回复
做个判断,如果
if i > max2 then
就不写
else

end if
qwater 2003-12-12
  • 打赏
  • 举报
回复
循环变量差1个,用array2(i-1)
jichu2003 2003-12-12
  • 打赏
  • 举报
回复
我觉得你的数组定义有问题,你应该定义一个动态数组,然后根据数据库的记录数重新载定义,简单的流程如下:
dim array2(),num

在你的语句:myrst88.open sql88,conn88,3,3 之后加上,如下语句:
num=myrst88.recordcount '得到数据库的记录数
redim array2(num) '重新定义数组

然后接着你的do loop循环即可,就没有数组越界的问题了,但这只是其中一种解决办法。
你试试,如果行的话,别忘了给分啊!
bananasmiling 2003-12-12
  • 打赏
  • 举报
回复
sql ="update 培训记录表 set 学费='" & array2(i) & "' where 编号='" & myrst88("编号") & "'"
1数组范围太小
2查询出来的条数比array2的个数多,当然就越界了
xinxian1366 2003-12-12
  • 打赏
  • 举报
回复
同意 a_zhe_20(兜兜裤) 的意见

这个问题的检查办法是,先不循环只做第一次
如果可以通过的话,就说明在循环中i的值越界了
就要考虑i在循环中怎么处理了
shleo 2003-12-12
  • 打赏
  • 举报
回复
数组范围太小
jacklinchen 2003-12-12
  • 打赏
  • 举报
回复
myrst88.recordcount > ubound(array2)
就是说你查询出来的条数比array2的个数多,当然就越界了
vivisogood 2003-12-12
  • 打赏
  • 举报
回复
array2(i)
越界了

i=0 改成i=1
array2(i)改成 array2(i-1)
poolnet 2003-12-12
  • 打赏
  • 举报
回复
ubound(array2) <> myrst88.recordcount
a_zhe_20 2003-12-12
  • 打赏
  • 举报
回复
你能确定array2()数组的下标和查询出的纪录集一样,或者比纪录集条数大吗?
vivisogood 2003-12-12
  • 打赏
  • 举报
回复
是啊!
改成
for
next
循环啊!
angelheavens 2003-12-12
  • 打赏
  • 举报
回复
max2与RecordCount不相等
vivisogood 2003-12-12
  • 打赏
  • 举报
回复
如果你是 按 , 分割 。但是你多了个空格的话
max2永远都是0了

你response.write max2 看看
vivisogood 2003-12-12
  • 打赏
  • 举报
回复

array2=split(xf,", ")
里面是不是多了个空格啊!
vivisogood 2003-12-12
  • 打赏
  • 举报
回复
哎等下我 根据你的程序帮你写一个。
uscool 2003-12-12
  • 打赏
  • 举报
回复
有可能
myrst88.open sql88,conn88,3,3 后
myrst88.recordcount >ubound(array2)
你应该从你的记录结果值和你获取的值多少个来判断你的数组。
优化一下程序吧!

28,408

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧