注册 登录
编程论坛 ASP技术论坛

split转成数组类型不匹配

lzxm160 发布于 2008-10-07 19:52, 2233 次点击
function checkip(ip) '检测指定IP是否投过票
    dim ipArray()
    sql="Select ip from Candidate where id="&id
    Set rs2=cnn.execute(sql)
    ipArray()=split(rs2,",")出错行
    For i = 0 To UBound(ipArray)
    if ip=ipArray(i) then
        checkip=true
    else
        checkip=false
    end if
    next
end function


错误提示如下:
# 错误类型:
Microsoft VBScript 运行时错误 (0x800A000D)
类型不匹配
6 回复
#2
multiple19022008-10-07 20:14
一方面,对数组赋值直接写数组名,就像Set rs一样,你也没把rs的所有属性一起列出来赋值嘛。
另一方面,你的rs2也不是字符串啊,是不是要写rs2("ip")呢?
#3
aspic2008-10-07 22:57
程序代码:

function checkip(ip) '检测指定IP是否投过票
    dim ipArray()
    sql="Select ip from Candidate where id="&id
    Set rs2=cnn.execute(sql)
    ipArray()=split(rs2(0),",")出错行
    For i = 0 To UBound(ipArray)
    if ip=ipArray(i) then
        checkip=true
    else
        checkip=false
    end if
    next
end function

而且你的参数是ip你的sql语句里那里的id的参数呢?
#4
craft001wen2008-10-09 10:41
直接定义数组名就可以了,如果要重新定义可用NEW
function checkip(ip) '检测指定IP是否投过票
    dim ipArray
    sql="Select ip from Candidate where id="&id
    Set rs2=cnn.execute(sql)
    ipArray=split(rs2("ip"),",")
    ipArray=New ipArray()
    For i = 0 To UBound(ipArray)
    if ip=ipArray(i) then
        checkip=true
    else
        checkip=false
    end if
    next
end function
#5
superlinyzu2008-10-09 11:07
[bo][un]craft001wen[/un] 在 2008-10-9 10:41 的发言:[/bo]

直接定义数组名就可以了,如果要重新定义可用NEW
function checkip(ip) '检测指定IP是否投过票
    dim ipArray
    sql="Select ip from Candidate where id="&id
    Set rs2=cnn.execute(sql)
    ipArray=sp ...


我昨天测试数组:
dim arr1()
arr1(0)=1
arr1(1)=2
结果输出错误:下标出界
dim arr1(5)
arr1(0)=1
arr1(1)=2
错误同样是下标出界
应该就是你说的这个问题吧,应该直接定义?
#6
superlinyzu2008-10-09 11:10
回复 4# craft001wen 的帖子
不好意思问一下:
ipArray数组的元素都是字符型的吗?如果ip是数字型的是不是需要clng或别的函数转换一下?
#7
anlige2008-10-09 16:39
ipArray=split(rs2,",")出错行
1