ASP運行中常見的錯誤類型

今天弄ASP,遇到了很多問題,想想大家可能也會遇到這類的問題,在網上也找了一些資料,來和大家一起分享,有些是經歷過的,有些是網上給予來的,還希望大家能一起來研究和討論,有不足的,一起來填補。。錯誤類型如下:

錯誤類型:
ADODB.Field (0x800A0BCD)
BOF 或 EOF 中有一個是“真”,或者當前的記錄已被刪除,所需的操作要求一個當前的記錄。

原因:你在利用SQL查找數據庫的記錄時,查找結果爲空,而且你沒有對空記錄的情況做出處理。
解決:1 如果你不相信查找結果爲空,那你應該考慮你的SQL語句是否正確;2 如果確實有空的情況,那你應該添加"if rs.eof then"或者"do while not rs.eof"之類的語句,對eof的情況進行處理。

錯誤類型:
(0x80020009)
發生意外。

原因:也是在利用SQL查找數據庫記錄時,查找結果爲空,而且你在後面的代碼中調用了rs("aa")之類的記錄
解決:要麼同上,加上rs.eof的判斷和處理,要麼就是你的SQL語句有誤,導致記錄查不出來,也就無法在後來使用rs("aa")的記錄了。

錯誤類型:
Active Server Pages, ASP 0126 (0x80004005)
找不到包含文件 'xxx.asp'。

原因:就如錯誤提示所說,不存在這個包含文件。
解決:如果你確定有這個文件,那麼就是你的路徑寫錯了,比如說其實他相對於網站根目錄的路徑應該是inc/xxx.asp,那麼include裏面就應該寫inc/xxx.asp,而不僅僅是xxx.asp。附:include的寫法是:

錯誤類型:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] 操作必須使用一個可更新的查詢。

原因:這個在XP服務器上非常常見,屬於服務器的配置問題,或者說是用戶的權限問題。
解決:如果僅僅是在本機上調試出現的錯誤,則右鍵點擊網站所在的文件夾,點擊"共享和安全...",在"安全"中點添加...,寫入everyone,然後再使這個用戶的權限爲所有,即除了第一個外全部打勾,確定之後再刷新就可以用了。(注:如果找不到“安全”選項,則在任意一個文件夾下點擊“工具”,然後是“文件夾選項”--“查看”,在“使用簡單文件共享”一欄把勾去掉即可)

錯誤類型:
Microsoft VBScript 編譯器錯誤 (0x800A0401)
語句未結束

原因:語法錯誤。
解決:按系統所提示的行來檢查。如果提示的恰好是本頁的最後一行,則很有可能是if語句忘記寫"end if"啦,select語句忘記寫"end select"啦,總之是需要end的地方沒有end,導致服務器找不到語句的結尾,只好在最後一行顯示錯誤。

錯誤類型:
Microsoft JET Database Engine (0x80040E10)
至少一個參數沒有被指定值。

原因:在寫SQL語句的時候,我們經常會調用一些參數,很可能這些參數中有一個沒有被賦值。
解決:檢查每一個參數的值是否真的傳遞過來了,很可能有些參數其實是"",這樣的參數去索引數據庫當然是不行的。

錯誤類型:
Microsoft JET Database Engine (0x80040E37)
Microsoft Jet 數據庫引擎找不到輸入表或查詢 'AA'。 確定它是否存在,以及它的名稱的拼寫是否正確。

原因:不存在這個表。
解決:應該是你寫錯了表名,或者連錯了數據庫?再仔細覈對一下吧!

錯誤類型:
Microsoft VBScript 運行時錯誤 (0x800A000D)
類型不匹配: /'[string: ""]/''

原因:是因爲你的變量的類型是字符串型的,而你卻當作數字或者其他類型來使用。
解決:比如你需要數字的變量用來計算i=i+1等數學運算,那麼應該在變量上使用cint(變量名),強制轉換爲數字型,兩個變量之間作比較也一定要是相同的類型,因此也需要轉換,方法同上。

錯誤類型:
Microsoft JET Database Engine (0x80040E07)
標準表達式中數據類型不匹配。

原因:一般也是在寫SQL語句時發生了錯誤,即把數字型和字符串型的變量混淆了。
解決:很好辦,試一試把SQL中變量加了''的去掉單引號,或者把原先認爲是數字的加上'',再查看效果。

錯誤類型:
Microsoft VBScript 運行是錯誤(0x800A01A8)
缺少對象:”

原因:很有可能是你沒有對rs對象進行定義。
解決:別忘了寫set rs=server.CreateObject("adodb.recordset"),這樣可以定義對象;或者直接不用這種寫法,直接用conn.execute("SQL")這樣會方便得多,也不用考慮對象問題。

錯誤類型:
Microsoft VBScript 運行時錯誤 (0x800A005E)
無效使用 Null: 'Replace'

原因:無效使用函數的情況也比較多見,包括Split等,這個道理也比較簡單,就是因爲你Replace的內容是空的。
解決:最好加一句IF檢驗一下你要replace的內容是否爲空。

ASP常用錯誤類型
ActiveServerPages,ASP0126(0x80004005)-->找不到包含文件

MicrosoftOLEDBProviderforODBCDrivers(0x80040E21)-->sql語句出錯(數據類型不匹配或表名(字段名)錯誤或表處於編輯狀態,或表不存在於conn打開的數據庫中)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E14)-->sql語句出錯(字段名錯誤,或數據類型不匹配)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E07)-->sql語句出錯(要插入或更新的字段的類型與變量數據類型不匹配)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E57)-->sql語句出錯(要插入或更新的數據溢出)
MicrosoftOLEDBProviderforODBCDrivers(0x80040E10)-->sql語句出錯(update字段名或要更新的數據類型錯誤)
MicrosoftOLEDBProviderforODBCDrivers(0x80004005)-->sql語句出錯(要插入或更新的字段的數值不能爲空值)
MicrosoftOLEDBProviderforODBCDrivers(0x80004005) -->打開數據庫出錯,沒有在指定目錄發現數據庫
MicrosoftOLEDBProviderforODBCDrivers(0x80040E37)-->沒有發現表

MicrosoftVBscript運行時錯誤(0x800A000D)-->錯誤引用rs變量(rs對像已關閉或未定義)
MicrosoftVBscript運行時錯誤(0x800A01C2)-->vbscript腳本錯誤(vbscript語句出錯)
MicrosoftVBscript運行時錯誤(0x800A0006)-->vbscript腳本錯誤(溢出錯誤)
MicrosoftVBscript編譯器錯誤(0x800A040E)-->缺少loop
MicrosoftVBscript編譯器錯誤(0x800A03EA)-->缺少if或endif
MicrosoftVBscript編譯器錯誤(0x800A03EE)--> 語句未結束(缺少")")
MicrosoftVBscript編譯器錯誤(0x800A03F6)-->if語句出錯(缺少endif)
MicrosoftVBscript運行時錯誤(0x800A005B)-->缺少set
MicrosoftVBscript運行時錯誤(0x800A0005)-->變量未定義
MicrosoftVBscript編譯器錯誤(0x800A03F9)-->if語句缺少then
MicrosoftVBscript編譯器錯誤(0x800A0411)-->dim語句定義錯誤


ADODB.Recordset(0x800A0BB9)-->sql語句出錯(sql語句或conn語句未定義或對一個rs屬性進行賦值時發生錯誤)
ADODB.Recordset(0x800A0CC1)-->rs對像出錯(rs對像本身不存在或錯誤地引用了一個不存在的字段名)
ADODB.Recordset(0x800A0BCD)-->rs對像出錯(記錄集中沒有記錄卻對記錄集進行操作)
ADODB.Recordset(0x800A0E78)-->rs對像出錯(記錄集不存在,缺少rs.open語句)
ADODB.Recordset(0x800A0CC1) -->rs對像出錯(引用了一個不存在的字段名)
ADODB.Recordset(0x800A0E7D)-->conn定義錯誤
ADODB.Recordset(0x800A0CB3)-->數據庫以只讀方式打開,無法更新數據 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章