日期:2014-05-17  浏览次数:20895 次

下标越界问题?挺简单,接受了两个值,但是提示下标越界

错误提示(就是红色的那行)

0
Microsoft VBScript 运行时错误 '800a0009' 

下标越界: '0' 

\www\asp\asp\account\account\save.asp, line 29



VB code


<!--#include file="Conn.asp"-->
<!--#include file="session.asp"-->
<%
set rs=server.createobject("adodb.recordset")
sql="select * from L_paydetail"
rs.open sql,conn,1,3

arrl_price=split(request.form("l_price"),",")
arrl_number=split(request.form("l_number"),",")
arrtext=split(request.form("text"),",")
arrL_payinfo=split(request.form("L_payinfo"),",")

for i=0 to ubound(arrl_price)'for 循环开始
response.Write arrtext(i)
if arrtext(i)<>"" then
rs.addnew

rs("L_payout")=arrtext(i)'这两句直接迷糊了呀?哈哈
rs("l_sum")=arrtext(i)
else 
rs.addnew

rs("l_price")=arrl_price(i)
rs("l_number")=arrl_number(i)
rs("l_sum")=arrl_price(i)*arrl_number(i)
rs("L_payout")=arrl_price(i)*arrl_number(i)

end if
[color=#FF0000]if arrL_payinfo(i)<>"" then[/color]
rs("L_payinfo")=arrL_payinfo(i)
end if
rs("L_paytype")=request.Form("select")
rs("L_payusername")=session("username")
rs.update

next 'for循环结束

rs.close
set rs=nothing
conn.close
set conn=nothing

response.Redirect "index.asp" 
%>









------解决方案--------------------
这个问题你发了多少个帖子啊?


for i=0 to ubound(arrl_price)'for 循环开始


其他的数组元素也有ubound(arrl_price)+1个这么多吗?没有这么多就不要直接赋值
要加判断

If i > Ubound(arrtext)+1 Then 
rs("L_payout")=""
而不是
rs("L_payout")= arrtext(i)


------解决方案--------------------
是的。数组不一样,里面的值也不一定一样多。容易出现越界。