您的位置 → 首頁 → 建站百科
相關文章
- 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時新增的,將其刪除,問題解決!