asp无限分类递归过程嵌套产生错误,求教高手。

来源:百度知道 编辑:UC知道 时间:2024/07/05 07:19:11
源码如下:
1 dim conn,connstr
2 connstr="DBQ="+server.mappath("#Date.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" '数据库连接地址
3 set conn=server.createobject("ADODB.CONNECTION")
4 conn.open connstr
5 call show(0)
6 Sub show(sj)
7 dim mRs
8 Set mRs=Server.CreateObject("adodb.recordSet")
9 mRs.open "Select * from class where shangji = "&sj ,Conn,1,1
10 do while not mRs.eof
11 Response.Write( mRs("mingcheng"))
12 if mRs("xiajishuliang") > 0 then show(mRs("xiajishuliang"))
13 mRs.movenext
14 loop
15 mRs.close
16 Set mRs=nothing
17 End Sub

错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E21)
ODBC 驱动程序不支持所需的属性。
/1.asp, 第 13 行
错误应该是第 9 行,不是13行

查询本身没有错误,如果去掉第12行,就会正常运行,所有我想是不是变量在递归过程中产生错

把第十二行的 mRs("xiajishuliang") 转换为数值类型再与0比较吧...从数据库里读出来的是字符串的

我忘了字符串转换为数值的是不是这样了,不过一定要用trim把字符串两边的空格去掉,因为从数据库里取出来的字符串后面都是带有多余空格的

Cint(trim(mRs("xiajishuliang"))) > 0

这样是不行的,在递归以前必须先把mRs对象关闭,如果不关闭,递归一次没问题,第二次的时候ODBC会出错

跟数据类型没关系

Set mRs=Server.CreateObject("adodb.recordSet")
dim mRs
Sub show(sj)
mRs.open "Select * from class where shangji = "&sj ,Conn,1,1
do while not mRs.eof
Response.Write( mRs("mingcheng"))
if mRs("xiajishuliang") > 0 then show(mRs("xiajishuliang"))
mRs.movenext
loop
End Sub
mRs.close
Set mRs=nothing