大家快来诊断,到底那里出了毛病?谢谢了~~~~~

BrightEye 2001-11-20 08:52:59
非常奇怪!usrinfo表里明明有"class"字段,为什么运行是提示“ADO找不到对象”,什么意思?
<%dim myclass()
j=0
for i=0 to UBound(status)-1 step 10
Redim PRESERVE myclass(j)
sql="SELECT class FROM usrinfo WHERE number='" & status(i+2) & "'"
conn.Execute sql
response.write status(i+2)
myclass(j)=rs("class")
if myclass(j)=1 then nofreeck= nofreeck + 1
j=j+1
next%>
以下是iis提示的错误信息:
ADODB.Fields 错误 '800a0cc1'

在应用程序所要求的名称或序数的相应集合中,ADO 找不到对象。

/ywgl/gpfeeck.asp, 行60

...全文
213 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
CTBOK 2001-11-22
  • 打赏
  • 举报
回复
sql="SELECT class FROM usrinfo WHERE number='" & status(i+2) & "'"
~~~~~
改class,number吧?
BrightEye 2001-11-22
  • 打赏
  • 举报
回复
分已给出,又加了15分。
CommerceServer 2001-11-21
  • 打赏
  • 举报
回复
你把你的数据库与页面发到commerceserver@163.net上,我给你debug一下。
BrightEye 2001-11-21
  • 打赏
  • 举报
回复
没有人愿意看代码吗?
CommerceServer 2001-11-21
  • 打赏
  • 举报
回复
老兄:你要安装MSDN呀,Platform SDK Document -> Data Services -> Microsoft Data Access Components -> Microsoft ActiveX Data Objects(ADO) -> ADO Programmer's Reference
或msdn.microsoft.com上也是这个位置。

该加分了吧,我下班都四个小时了。
BrightEye 2001-11-21
  • 打赏
  • 举报
回复
rs对象已经在前面定义过了呀!代码如下:
<%
set conn=server.createobject("ADODB.Connection")
connstr="DBQ="+Server.MapPath("telesrvice.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
conn.open connstr
set rs=server.CreateObject("ADODB.RecordSet")
sql="SELECT number,dept_xm,attr,dhqx,currdhqx,tf,currtf,gpid,sender,executer,regtime,flag FROM ck WHERE regtime BETWEEN '"& today &"' AND '" & sj &"'"
rs.open sql,conn,1,1
rec=rs.RecordCount
if rs.bof and rs.eof then
rs.close
set rs=nothing
conn.close
set conn=nothing
Response.Redirect "ok.asp?id=002"
else
dim status()
i=0
rs.MoveLast
do while not rs.bof
redim preserve status(i),status(i+1),status(i+2),status(i+3),status(i+4),status(i+5),status(i+6),status(i+7),status(i+8),status(i+9)
status(i)=rs("gpid")
status(i+1)=rs("dept_xm")
status(i+2)=rs("number")
status(i+3)=rs("attr")
status(i+4)=rs("dhqx")
status(i+5)=rs("currdhqx")
status(i+6)=rs("tf")
status(i+7)=rs("currtf")
status(i+8)=rs("regtime")
status(i+9)=rs("sender")
i=i+10
rs.MovePrevious
loop
end if
rs.close
dim myclass()
j=0
for i=0 to UBound(status)-1 step 10
Redim PRESERVE myclass(j)
sql="SELECT class FROM usrinfo WHERE number='" & status(i+2) & "'"
conn.Execute sql
'response.write status(i+2)
myclass(j)=rs("class") 'II提示这行有错误
if myclass(j)=1 then nofreeck= nofreeck + 1
j=j+1
Next
feeck=nofreeck * 10
rs.close
set rs=nothing
conn.close
set conn=nothing
response.Flush
%>
BrightEye 2001-11-21
  • 打赏
  • 举报
回复
to up:
能告诉url吗?谢谢~~~~
CommerceServer 2001-11-21
  • 打赏
  • 举报
回复
这需要Adodb的知识,你到MSDN的ADO Programmer's Reference去看一看,你的E文好象很好,这里介绍的很全面。
rs就象开门与关门一样,门打开了,人就可以进屋,门关上了,人就不可以进去。
开门的条件就是rs.open sql,conn和set rs= conn.Execute(sql),把查询的结果集送给rs。
BrightEye 2001-11-21
  • 打赏
  • 举报
回复
to CommerceServer & balloy:
非常感谢!Everything is OK!你俩说得对,就是把"conn.Execute sql"这一句改为您说的"set rs= conn.Execute(sql)"就可以了。还要请教你们俩,就是"conn.Execute sql "和"
set rs= conn.Execute(sql)"或者"rs.open sql,conn"究竟有什么区别呀?是不是因为前面那句"rs.close"关闭了rs对象,rs变成了空值?而"set rs= conn.Execute(sql) "或者"rs.open sql,conn"是重新打开rs对象并执行sql语句的意思吗?请继续指教!以后可能还要继续哦!:)

CommerceServer 2001-11-21
  • 打赏
  • 举报
回复
不知你那里运行的结果是否对,我对你的业务不太熟。胡乱运行了一个结果如下:

当前共有 1 张工票

工票号 用户名 电话号码 用户种类 原电话权限 现电话权限 原特服功能 现特服功能 用户性质 下票时间 下票人
20011121350 再见 3390012 办公 国内直拨 国内直拨 来电显示闹钟服务 来电显示 2001-11-21 08:24:50 0002

今天共有1张程控业务工票,应收费用0元
CommerceServer 2001-11-21
  • 打赏
  • 举报
回复
你的程序我运行出来了,需改动的代码如下:

for i=0 to UBound(status)-1 step 10
Redim PRESERVE myclass(j)
sql="SELECT class FROM usrinfo WHERE number='" & status(i+2) & "'"

response.write status(i+2)

set rs = conn.Execute(sql)

if Not rs.EOF and rs.BOF then
myclass(j)=rs("class")
end if

rs.close
if myclass(j)=1 then nofreeck= nofreeck + 1
j=j+1
Next
feeck=nofreeck * 10
'rs.close 这还有一个错误,把他去掉
set rs=nothing
conn.close
set conn=nothing
BrightEye 2001-11-21
  • 打赏
  • 举报
回复
谢谢了。我试试再说。
CommerceServer 2001-11-21
  • 打赏
  • 举报
回复
我的改动前面的几位仁兄也说过了。
不过你的查询怎么没有数据?
if rs.EOF or rs.BOF then '怎么没有数据?
Response.Write "NO"
Response.End
end if
是我加的,测试用的,你也可以这么写:
if Not rs.EOF and rs.BOF then '怎么没有数据?
myclass(j)=rs("class")
end if

CommerceServer 2001-11-21
  • 打赏
  • 举报
回复
for i=0 to UBound(status)-1 step 10
Redim PRESERVE myclass(j)
sql="SELECT class FROM usrinfo WHERE number='" & status(i+2) & "'"

response.write status(i+2) '这个值为3390012

set rs = conn.Execute(sql) '这么改动了一下。

if rs.EOF or rs.BOF then '怎么没有数据?
Response.Write "NO"
Response.End
end if

myclass(j)=rs("class")
rs.close
if myclass(j)=1 then nofreeck= nofreeck + 1
j=j+1
Next

将你的程序测了一下,改动如上,怎么查询不出来?
我在页面开始加入一句
who="3390001"

你下班了吗?

balloy 2001-11-21
  • 打赏
  • 举报
回复
myclass(j)=rs("class") 'II提示这行有错误

当然有错误,你在前面已经rs.close了,这是rs = nothing,当然得不到。

sql="SELECT class FROM usrinfo WHERE number='" & status(i+2) & "'"
conn.Execute sql

向上面的这两句话是没有任何用的,Select出来的东西放在哪儿了?
正确的写法是 set rs=conn.execute(sql) 或 rs.open sql, conn
amorg(飘雪) 早说过了
BrightEye 2001-11-21
  • 打赏
  • 举报
回复
to CommerceServer:
没关系。谢谢了哦!
CommerceServer 2001-11-21
  • 打赏
  • 举报
回复
先等一等,你给我的邮件太大了,公司又有几十人上网,我才收到,不好意思。
BrightEye 2001-11-21
  • 打赏
  • 举报
回复
to CommerceServer:
it's Ok?
saimaya 2001-11-21
  • 打赏
  • 举报
回复
关注
BrightEye 2001-11-21
  • 打赏
  • 举报
回复
我试了,换字段名也不行呀!报同一个错误,而且以前这样用没有问题。
加载更多回复(5)

28,406

社区成员

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

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