vbscript ADODB.Stream(0x800A0BB9)错误,求教高手指点
各位老师好,本人新手一名.学着写了三个页面,三个页面分别为:admin_cptj.asp(产品添加);formdata.inc.asp(获取字段值);function.inc.asp(函数调取).如果admin_cptj.asp(产品添加)不加有错误继续执行代码("on error resume next")就会报(如下图)错误,我一直没看出冲突原因,请高手帮忙看一下冲突原因,另外我这样是否正确,是否影响使用或者占用服务器资源.谢谢
以下是三个页面具体代码:
admin_cptj.asp(产品添加)
程序代码:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!-- #include file="../config/db.asp"--> <!-- #include file="../config/function.inc.asp"--> <% on error resume next set rst=server.CreateObject("adodb.recordset") set fs=server.CreateObject("scripting.filesystemobject") %> <!-- #include file="../config/formdata.inc.asp"--> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.> <html xmlns="http://www.> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>留言显示</title> </head> <body> <% if session("acc")=false then msgboxU"未登录或非法操作! 请重新登录" response.write("<meta http-equiv='Refresh' content='0.2;URL=admin_dl.asp' /> ") else dim sql,sql1,rst,page,pagelistnum,myErrors,errstr,addselectwords if request.QueryString("act")="add" then if trim(formdata.item("f_title"))="" or trim(formdata.item("f_image"))="" or trim(formdata.item("f_content"))="" then msgboxU"录入信息不全,请填写完整!" else sql="tbl_goods" rst.open sql,conn,1,3 rst.addnew rst("gds_name")=formdata.item("f_title") rst("gds_img")=formdata.item("f_image") rst("gds_info")=formdata.item("f_content") rst.update rst.close set MyErrors=conn.errors if MyErrors.count=0 then msgboxU "添加产品成功!" else msgboxU "添加产品失败! 原因" &myErrors.item(0).description '删除已经上传的文件 fs.deletefile server.MapPath("../upfile") & "\" & formdata.item("image") end if end if end if end if '处理添加新闻 %> <div> <table width="865" border="0"> <tr> <td height="29" colspan="4" align="center" bgcolor="#0066CC">后台管理系统</td> </tr> <tr> <td width="198" height="30" align="center" bgcolor="#0099CC"><table > <tr> <td><a href="admin_index.asp?act=liuyan">留言管理</a></td> </tr> </table></td> <td width="197" height="30" align="center" bgcolor="#0099CC"><table > <tr> <td><a href="admin_index.asp?act=news">新闻管理</a></td> </tr> </table></td> <td width="197" align="center" bgcolor="#0099CC"><table > <tr> <td><a href="admin_index.asp?act=chanping">产品管理</a></td> </tr> </table></td> <td width="255" align="center" bgcolor="#0099CC"><table > <tr> <td><a href="admin_index.asp?act=anything">其它管理</a></td> </tr> </table></td> </tr> <tr> <td height="572" colspan="4" valign="top"> <table width="824" height="393" border="1"> <form action="admin_cptj.asp?act=add" method="post" enctype="multipart/form-data" name="form1" id="form1"> <tr> <td width="182" height="38" bordercolor="#666666" bgcolor="#0099CC">产品标题</td> <td width="626" height="38" bordercolor="#666666"><input name="f_title" type="text" size="30" /> </td> </tr> <tr> <td height="38" bordercolor="#666666" bgcolor="#0099CC">产品图片</td> <td height="38" bordercolor="#666666"><input type="file" name="f_image" /></td> </tr> <tr> <td height="265" bordercolor="#666666" bgcolor="#0099CC">产品描述</td> <td height="265" bordercolor="#666666"><textarea name="f_content" cols="80" rows="20"></textarea></td> </tr> <tr> <td height="40" bordercolor="#666666"> </td> <td height="40" bordercolor="#666666"><input type="submit" name="Submit" value="添加" /> <input type="reset" name="Submit2" value="取消" /></td> </tr> </form> </table> </td> </tr> </table> </div> </body> </html>
formdata.inc.asp(获取字段值)
程序代码:
<!-- #include file="../config/function.inc.asp"--> <% dim data,datalength,fstart,fend,tstart,tend,tinfo,flag,flaglen,tformname,tfile,tfilename,tfilepath,tfileext,sfilename,formdata,updata,tmpdata,tcrlf set formdata=server.CreateObject("scripting.dictionary") set updata=server.CreateObject("adodb.stream") set tmpdata=server.CreateObject("adodb.stream") updata.type=1 '设置对象的数据类型为二进制数据 updata.mode=3 '设置对象的打开模式为读写模式 updata.open '打开对象 updata.write request.BinaryRead(request.TotalBytes) updata.position=0 data=updata.read datalength=updata.size tcrlf=chrb(13) & chrb(10) '回车符号代码 flag=leftb(data,instrb(data,tcrlf)-1) '获取每个表单项目数据之间分隔符 fstart=lenb(flag)+2 '搜索开始位置 加2是因为分隔符后有一个回车符号占两个字节 flaglen=fstart '分隔符长度,包含了后面的回车符 '循环处理表单元素 do '分离出表单元素信息 即从开始查找位置到有两个回车符之间的信息 fend=instrb(fstart,data,tcrlf&tcrlf)+3 '初始化临时STREAM对象 tmpdata.type=1 tmpdata.mode=3 tmpdata.open '设置指针位置 updata.position=fstart updata.copyto tmpdata,fend-fstart '将元素表单信息复制到临时STREAM对象 fstart=instrb(fend,data,flag)-1 '查找下一个分隔符所在位置 'fstart=instrb(fend,data,flag) tmpdata.position=0 tmpdata.type=2 '设置读取方式为文本 tmpdata.charset="gb2312" '设置编码方式为GB2312 tinfo=tmpdata.readtext '取得表单元素的名称 tstart=instr(22,tinfo,"name=""")+6 tend=instr(tstart,tinfo,"""",1) tformname=mid(tinfo,tstart,tend-tstart) '获得表单元素的值 if instr(tstart,tinfo,"filename=""",1)>0 then '如果是文件 tmpdata.close tmpdata.type=1 tmpdata.mode=3 tmpdata.open '取得文件属性 tstart=instr(tend,tinfo,"filename=""",1)+10 tend=instr(tstart,tinfo,"""",1) tfile=mid(tinfo,tstart,tend-tstart) '得到文件全路径 if tfile<>"" then tfilename=mid(tfile,instrrev(tfile,"\")+1) '得到文件名 tfilepath=left(tfile,instrrev(tfile,"\")) '得到文件路径 tfileext=mid(tfile,instrrev(tfile,".")+1) '得到文件后缀 sfilename=GetRndFileName(tfileext) ' response.Write tfilename & "<br>" & tfilepath & "<br>" & tfileext ' 得到文件数据 updata.position=fend updata.copyto tmpdata,fstart-2-fend tmpdata.savetofile server.MapPath("../upfile") & "\" & sfilename,2 formdata.add tformname,sfilename end if else '如果是表单元素 tmpdata.close tmpdata.type=1 tmpdata.mode=3 tmpdata.open updata.position=fend '设置指针指向数据区域开始位置 updata.copyto tmpdata,fstart-fend-2 '复制数据到临时STREAM对象;复制长度为一下分隔符开始位置减-2,-2是因为要减掉最后的回车符长度 tmpdata.position=0 tmpdata.type=2 tmpdata.charset="gb2312" formdata.add tformname,tmpdata.readtext end if fstart=fstart+flaglen '得到下次搜索开始位置:分隔符开始位置加上分隔符长度得到下次搜索开始位置 tmpdata.close loop while (fstart+2)<datalength '如果还没有到结果 因为结束标志--两个字节,所以这里要加上2后再判断 set tmpdata=nothing updata.close set updata=nothing %>;
function.inc.asp(函数调取)
程序代码:
<% '在客户端弹出提示消息 sub msgboxU(str) response.write("<script language=vbscript>msgbox " &chr(34)&str&chr(34)&"</script>") end sub '截断字符串函数 function cutstr(str,length,addstr) if len(str)<=length then cutstr=str else cutstr=left(str,length)&addstr end if end function '翻页函数 function fy(sql,page,pagelistnum,link) dim rs,znum,zpage page=cint(page)'将page转换成整数型 set rs=server.createobject("adodb.recordset") rs.open sql,conn,1,1 znum=rs("num") '得到总页数 zpage=znum\pagelistnum if znum mod pagelistnum>0 then zpage=zpage+1 response.write"共"& zpage&"页,第"& page &"页" '得到第一页/上一页链接 if page=1 then response.write "第一页,上一页" else response.write "<a href="& link &"&page=1>第一页</a><a href="& link & "&page=" & (page-1) &">上一页</a>" '得到上一页/最后页链接 end if if page<zpage then response.write "<a href="& link &"&page="& (page+1) &">下一页</a><a href="& link &"&page="& zpage &">最后页</a>" else response.Write "下一页 最后一页" end if rs.close set rs=nothing end function '编写随机不重复文件名 function GetRndFileName(sExt) dim sRnd Randomize sRnd=Int(900*Rnd)+100 GetRndFileName=year(now) & month(now) & day(now) & hour(now) & minute(now) & second(now) & sRnd & "." & sExt end function %>
[ 本帖最后由 xfychina 于 2014-5-10 20:30 编辑 ]