您的位置 → 首页 → 建站百科
相关文章
- Dreamweaver中10个经典问答收集
- 服务器的w3wp.exe进程占用cpu100%的完美解决方案
- 在用Dreamweaver保存文件时发生共享违例怎么解
- css中用一张背景图做页面的技术有什么优势
- 如何设计一个出色的网站?
- 使用智能建站有哪些要求?
- 智能建站与主机空间的区别?
- 中小企业建网站的必要性,为什要建网
- 企业网站为什么要进行网络推广?
- 丰富的原创内容是网站建设与网站优化
- 英文网站建设常见问题及解决方案
- 提高流量和的链接数53种最好的办法
- 一次有趣的ASP程序调试过程
- CSS+DIV设计网页时的一些常用规范
- 让网页适应不同分辨率
- 网页设计的整体布局理念
- FLASH遮住菜单的解决方法
- 如何提高alexa排名-提高alexa排名全攻
- 什么是“沙盒期”以及该如何避免“沙
- 电子商务如何更好提高销量
- 单页面网站的优化技巧
- 网络创业者们看过来 网站的盈利方式
- 网站有的地方打不开的几种原因
- 谈如何做好一个WEB2.0站点
一次有趣的ASP程序调试过程
作者:客服中心 文章来源:天润智力 点击数:136580 更新时间:2010-7-20
引用内容
Microsoft VBScript 编译器错误 错误 '800a03f6'
缺少 'End'
/iisHelp/common/500-100.asp,行242
Microsoft VBScript 运行时错误 错误 '800a000d'
类型不匹配
/sfbbs/inc/Dv_ClsMain.asp,行710
碰到这样的错误提示我们应该高兴,因为它明确的指出了错误的地方,一般情况下只要检查下所在行的代码即可,但这次错误比较特别,710行处在一个函数体中,函数肯定是没有问题的,那么问题应该出在调用函数的地方,可是页面中有好几处调用了这个函数(难点一:确定出错位置);还有,这个函数主要的是一个循环体,我们还得判断出是在哪次循环时出的错(难点二)。OK,我们先来看下这个函数:
程序代码
Public Function RecordsetToxml(Recordset,row,xmlroot)
Dim i,node,rs,j,DataArray
If xmlroot="" Then xmlroot="xml"
If row="" Then row="row"
Set RecordsetToxml=Server.CreateObject("msxml2.FreeThreadedDOMDocument"& MsxmlVersion)
RecordsetToxml.appendChild(RecordsetToxml.createElement(xmlroot))
If Not Recordset.EOF Then
DataArray=Recordset.GetRows(-1)
For i=0 To UBound(DataArray,2)
Set Node=RecordsetToxml.createNode(1,row,"")
j=0
For Each rs in Recordset.Fields
node.attributes.setNamedItem(RecordsetToxml.createNode(2,LCase(rs.name),"")).text= DataArray(j,i)& "" '710行
j=j+1
Next
RecordsetToxml.documentElement.appendChild(Node)
Next
End If
DataArray=Null
End Function
这个函数的功能还是比较简单的,主要就是建立一个FreeThreadedDOMDocument对象,其根节点是xmlroot,下边只有一个子节点row,然后将Recordset对象中的各字段及其值以属性的方式保存在row节点中。
好了,现在我们先来解决第一个难点:找出错误位置!修改RecordsetToxml函数如下:
程序代码
Public Function RecordsetToxml(Recordset,row,xmlroot)
Dim i,node,rs,j,DataArray
If xmlroot="" Then xmlroot="xml"
If row="" Then row="row"
Set RecordsetToxml=Server.CreateObject("msxml2.FreeThreadedDOMDocument"& MsxmlVersion)
RecordsetToxml.appendChild(RecordsetToxml.createElement(xmlroot))
If Not Recordset.EOF Then
DataArray=Recordset.GetRows(-1)
For i=0 To UBound(DataArray,2)
Set Node=RecordsetToxml.createNode(1,row,"")
j=0
For Each rs in Recordset.Fields
Response.Write(row & " " & xmlroot & " " & rs.name & "<br/>")
node.attributes.setNamedItem(RecordsetToxml.createNode(2,LCase(rs.name),"")).text= DataArray(j,i)& "" '710
j=j+1
Next
RecordsetToxml.documentElement.appendChild(Node)
Next
End If
DataArray=Null
End Function
注意Response.write语句放置的位置也很重要!浏览,返回结果为:
引用内容
style xml ID
style xml StyleName
style xml Main_Style
style xml Style_Pic
style xml page_index
style xml page_dispbbs
style xml page_showerr
style xml page_login
style xml page_online
style xml page_usermanager
style xml page_fmanage
style xml page_boardstat
style xml page_paper_even_toplist
style xml page_query
style xml page_show
style xml page_dispuser
style xml page_help_permission
style xml page_postjob
style xml page_post
style xml page_boardhelp
style xml upsize_ts
Microsoft VBScript 编译器错误 错误 '800a03f6'
缺少 'End'
/iisHelp/common/500-100.asp,行242
Microsoft VBScript 运行时错误 错误 '800a000d'
类型不匹配
/sfbbs/inc/Dv_ClsMain.asp,行711
可以初步判断是类似RecordsetToxml(Recordset,"style","xml")的位置出错,OK,我们搜索"style","xml",没有结果:(,再搜索"style",搜索结果中只有一处参数中有带"style"的,就是它了,发现也是位于一个函数中:
程序代码
Public Sub Loadstyle()
Dim Rs
Set Rs=Dvbbs.Execute("Select * From Dv_style")
Set Application(CacheName &"_style")=RecordsetToxml(rs,"style","") '就是这句了
Set Rs=Nothing
LoadStyleMenu()
End Sub
这个函数的作用也挺简单的,就是从Dv_style表中将论坛样式读取出来以XML格式保存到Application对象中,OK,结合上边错误信息,我们可以猜到是在读取upsize_ts字段时出错了!才想起来这个字段动网本身是没有的,是在Access2000转Access2003时新增的,将其删除,问题解决!