读书人

sub之间的数据怎么引用

发布时间: 2013-06-26 14:29:32 作者: rapoo

sub之间的数据如何引用?
有两个SUB

sub sub1()

set rs=server.createobject("adodb.recordset")
sql="select * from aa "
rs.open sql,conn,1,1
if not (rs.bof and rs.eof) then
do while not rs.eof
select case left(rs("wf2"),4)
case "ds"
dszjjg()
case "zx3"
zx3zjjg()
end select
rs.movenext
loop
Rs.close
Set Rs = Nothing
Conn.close
Set conn = Nothing
end if
end sub

sub dszjjg()
tzhm=split(rs("tzhm"))
end sub

当满足条件运行到 sub dszjjg()时,系统提示:

Microsoft VBScript 运行时错误 错误 '800a000d'

类型不匹配: 'rs'

/wdwj/tet.asp,行 240

也就是说在 sub dszjjg()中无法取到 sub1() 中 数据库rs("tzhm")中字段的值,请问是怎么回事?子sub不能引用上级sub中的rs变量吗?


[解决办法]
sub内部变量是独立,你只能传值或定义为公共变量。
[解决办法]
不可以


'应该把值传入sub中
...
case "ds"
dszjjg(rs)
...

sub dszjjg(rs)
tzhm=split(rs("tzhm"))
end sub


[解决办法]
定义一个全局变量,在SUB1中赋值,在SUB2中就能使用了
[解决办法]
变量改为全局的,要不就修改sub过程,增加参数传递
dim rs''''''
sub sub1()

set rs=server.createobject("adodb.recordset")
sql="select * from aa "
rs.open sql,conn,1,1
if not (rs.bof and rs.eof) then
do while not rs.eof
select case left(rs("wf2"),4)
case "ds"
dszjjg()
case "zx3"
zx3zjjg()
end select
rs.movenext
loop
Rs.close
Set Rs = Nothing
Conn.close
Set conn = Nothing
end if
end sub

sub dszjjg()
tzhm=split(rs("tzhm"))
end sub

读书人网 >ASP

热点推荐