WIKI使用導航
站長百科導航
站長專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機
- cPanel
- 網(wǎng)址導航專題
- 云計算
- 微博營銷
- 虛擬主機管理系統(tǒng)
- 開放平臺
- WIKI程序與應用
- 美國十大主機
VBScript
VBScript是一種腳本語言,可以用于微軟 IE 瀏覽器的客戶端腳本和微軟 IIS (Internet Information Service) 的服務器端腳本。
VBScript 是微軟編程語言 Visual Basic 家族中的一個成員。如果你熟悉微軟的 Visual Basic 或者 Visual Basic for Applications,你會很快就熟悉 VBScript。
VBScript與Basic語言有密切關系。如果你熟悉BASIC,你將會發(fā)現(xiàn)VBScript很容易學習和使用。VBScript是Microsoft Visual Basic的簡化版本。
VBScript是一種腳本語言。這意味著這種語言比BASIC語言的成熟版本容易使用又難于使用。編制簡單的程序時,腳本語言是容易使用的。腳本語言的句法比較簡單。但是,簡單的句法也使開發(fā)大的應用程序變得很困難。
你可以在HTML文件中直接嵌入VBScript腳本。這使你能夠擴展HTML,使它不僅僅是一種頁面格式語言。帶有VBScript腳本的網(wǎng)頁在每次下載到瀏覽器時都可以是不同的,而且可以對用戶的操作作出反應。
VBScript 是Active Sever Pages的缺省語言。你也可以在ASP網(wǎng)頁中使用其它腳本語言,如Jscript(將在第九章中討論),Perl,或者REXX(由IBM UK實驗室的Michael Cowlishaw所創(chuàng)的一種語言)。但是,本書中所有的ASP例子程序都使用VBScript。
VBScript應用領域[ ]
- Windows操作系統(tǒng)
VBScript可以被用來自動地完成重復性的[[Windows]]操作系統(tǒng)任務。在Windows操作系統(tǒng)中,VBScript可以在Windows Script Host的范圍內運行。Windows操作系統(tǒng)可以自動辨認和執(zhí)行*.VBS和*.WSF兩種文件格式,此外 Internet Explorer可以執(zhí)行HTA和CHM文件格式。VBS和WSF文件完全是文字式的,它們只能通過少數(shù)幾種對話窗口與用戶通訊。HTA和CHM文件使用HTML格式,它們的程序碼可以象HTML一樣被編輯和檢查。在WSF、HTA和CHM文件中VBScript和JavaScript的程序碼可以任意混合。HTA文件實際上是加有VBS、JavaScript成分的HTML文件。CHM文件是一種在線幫助,用戶可以使用專門的編輯程序將HTML程序編輯為CHM。
- 網(wǎng)頁瀏覽器
網(wǎng)頁中的VBS可以用來指揮客戶方的網(wǎng)頁瀏覽器(瀏覽器執(zhí)行VBS程序)。VBS與JavaScript在這一方面是競爭者,它們可以用來實現(xiàn)動態(tài)HTML,甚至可以將整個程序結合到網(wǎng)頁中來。至今為止VBS在客戶方面未能占優(yōu)勢,因為它只獲得Microsoft Internet Explorer的支持(Mozilla Suite可以通過裝置一個外掛來支持VBS)。而JavaScript則受到所有網(wǎng)頁瀏覽器的支持。在Internet Explorer中VBS和JavaScript使用同樣的權限,它們只能有限地使用Windows操作系統(tǒng)中的對象。
- 網(wǎng)頁服務器
在網(wǎng)頁服務器方面VBS是微軟的Active Server Pages的一部分,它與JavaServer Pages和PHP是競爭對手。在這里VBS的程序碼直接嵌入到HTML頁內,這樣的網(wǎng)頁以ASP結尾。網(wǎng)頁服務器Internet信息服務執(zhí)行ASP頁內的程序部分并將其結果轉化為HTML傳遞給網(wǎng)頁瀏覽器供用戶使用。這樣服務器可以進行數(shù)據(jù)庫聞訊并將其結果放到HTML網(wǎng)頁中。
VBScript優(yōu)缺點[ ]
VBscript優(yōu)點:
- 由于VBScript由網(wǎng)頁瀏覽器解釋執(zhí)行,不需要增大服務器的負擔。
- 易學。
- 在所有2000 / 98SE以后的Windows版本都可直接使用。
- 可以使用其它程序和可使用的物件(尤其Microsoft Office)。
VBscript缺點:
- 現(xiàn)在VBS無法作為電子郵件的附件了。Microsoft Outlook拒絕接受VBS為附件,收信人無法直接使用VBS附件。
- VBS的各種編輯程器不受歡迎。
- 操作系統(tǒng)沒有任何特別的保護設施。VBS程序與其它JS、EXE、BAT或CMD程序一樣對待。操作系統(tǒng)沒有監(jiān)察惡意功能的能力。
VBScript和VB的對比[ ]
不能為變量定義類型
在VB中,為變量定義類型使用Dim變量名As類型 但是在VBScript中這樣寫是錯誤的。只能使用Dim變量名,解釋器會自動根據(jù)賦值的類型定義變量類型。
不能使用條件編譯
在VB中,可以使用#If…Then、#ElseIf…Then、#Else、#End If、#Const… = …等語句定義編譯時使用的語句 而由于VBScript不需要編譯即可直接執(zhí)行,所以并不需要條件編譯語句。
VBScript安全性[ ]
微軟決定Outlook和Outlook Express中的HTML郵件可以使用VBScript后出現(xiàn)了許多利用Windows Script Host和ActiveX的功能的電腦病毒。這些病毒之所以能夠傳播開來也是因為一開始這些系統(tǒng)功能完全未受保護。雖然VBScript和JavaScript使用同樣的使用操作系統(tǒng)的功能的安全措施,今天呼喚這些功能被看作不符合標準。
一般很難保護VBScript的程序碼不被用戶看到。
VBScript 數(shù)據(jù)類型[ ]
VBscript 只有一種數(shù)據(jù)類型,稱為 Variant。Variant 是一種特殊的數(shù)據(jù)類型,根據(jù)使用的方式,它可以包含不同類別的信息。因為 Variant 是 VBscript 中唯一的數(shù)據(jù)類型,所以它也是 VBscript 中所有函數(shù)的返回值的數(shù)據(jù)類型。
Variant 子類型[ ]
除簡單數(shù)字或字符串以外,Variant 可以進一步區(qū)分數(shù)值信息的特定含義。例如使用數(shù)值信息表示日期或時間。此類數(shù)據(jù)在與其他日期或時間數(shù)據(jù)一起使用時,結果也總是表示為日期或時間。從 Boolean 值到浮點數(shù),數(shù)值信息是多種多樣的。Variant 包含的數(shù)值信息類型稱為子類型。大多數(shù)情況下,可將所需的數(shù)據(jù)放進 Variant 中,而 Variant 也會按照最適用于其包含的數(shù)據(jù)的方式進行操作。
子類型描述[ ]
- Empty 未初始化的 Variant。對于數(shù)值變量,值為 0;對于字符串變量,值為零長度字符串 ("")。
- Null 不包含任何有效數(shù)據(jù)的 Variant。
- Boolean 包含 True 或 False。
- Byte 包含 0 到 255 之間的整數(shù)。
- Integer 包含 -32,768 到 32,767 之間的整數(shù)。
- Currency -922,337,203,685,477.5808 到 922,337,203,685,477.5807。
- Long 包含 -2,147,483,648 到 2,147,483,647 之間的整數(shù)。
- Single 包含單精度浮點數(shù),負數(shù)范圍從 -3.402823E38 到 -1.401298E-45,正數(shù)范圍從 1.401298E-45 到 3.402823E38。
- Double 包含雙精度浮點數(shù),負數(shù)范圍從 -1.79769313486232E308 到 -4.94065645841247E-324,正數(shù)范圍從 4.94065645841247E-324 到 1.79769313486232E308。
- Date (Time) 包含表示日期的數(shù)字,日期范圍從公元 100 年 1 月 1 日到公元 9999 年 12 月 31 日。
- String 包含變長字符串,最大長度可為 20 億個字符。
- Object 包含對象。
- Error 包含錯誤號。
編譯器錯誤代碼[ ]
- Microsoft VBScript 編譯器錯誤 錯誤 缺少語句
- ActiveServerPages,ASP0126(0x80004005)-->找不到包含文件
- MicrosoftOLEDBPRoviderforODBCDrivers(0x80040E21)-->sql語句出錯(數(shù)據(jù)類型不匹配或表名(字段名)錯誤或表處于編輯狀態(tài),或表不存在于conn打開的數(shù)據(jù)庫中)
- MicrosoftOLEDBPRoviderforODBCDrivers(0x80040E14)-->sql語句出錯(字段名錯誤,或數(shù)據(jù)類型不匹配)
- MicrosoftOLEDBPRoviderforODBCDrivers(0x80040E07)-->sql語句出錯(要插入或更新的字段的類型與變量數(shù)據(jù)類型不匹配)
- MicrosoftOLEDBPRoviderforODBCDrivers(0x80040E57)-->sql語句出錯(要插入或更新的數(shù)據(jù)溢出)
- MicrosoftOLEDBPRoviderforODBCDrivers(0x80040E10)-->sql語句出錯(update字段名或要更新的數(shù)據(jù)類型錯誤)
- MicrosoftOLEDBPRoviderforODBCDrivers(0x80004005)-->sql語句出錯(要插入或更新的字段的數(shù)值不能為空值)
- MicrosoftOLEDBPRoviderforODBCDrivers(0x80004005) -->打開數(shù)據(jù)庫出錯,沒有在指定目錄發(fā)現(xiàn)數(shù)據(jù)庫
- MicrosoftOLEDBPRoviderforODBCDrivers(0x80040E37)-->沒有發(fā)現(xiàn)表
- 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語句定義錯誤
- MicrosoftVBscript編譯器錯誤(0x800A0408)-->sql語句錯誤(?????????????????)
- Microsoft VBScript 運行時錯誤 (0x800A01B6)錯誤原因:set rs=server.create......你少了 set
- ADODB.Recordset(0x800A0BB9)-->sql語句出錯(sql語句或conn語句未定義或對一個rs屬性進行賦值時發(fā)生錯誤)
- 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)-->數(shù)據(jù)庫以只讀方式打開,無法更新數(shù)據(jù)
語法錯誤[ ]
如果 VBscript 語句結構違反了一個或多個 VBScript 腳本語言語法規(guī)則,就會產(chǎn)生 VBScript 語法錯誤。
錯誤通常在執(zhí)行程序前,編譯程序時產(chǎn)生。 以下是53個語法錯誤:
錯誤編號 描述
十進制 十六進制 說明
1001 800A03E9 內存不足
1002 800A03EA 語法錯誤
1003 800A03EB 缺少“:”
1005 800A03ED 需要 '('
1006 800A03EE 需要 ')'
1007 800A03EF 缺少“]”
1010 800A03F2 需要標識符
1011 800A03F3 需要 '='
1012 800A03F4 需要 'If'
1013 800A03F5 需要 'To'
1014 800A03F6 需要 'End'
1015 800A03F7 需要 'Function'
1016 800A03F8 需要 'Sub'
1017 800A03F9 需要 'Then'
1018 800A03FA 需要 'Wend'
1019 800A03FB 需要 'Loop'
1020 800A03FC 需要 'Next'
1021 800A03FD 需要 'Case'
1022 800A03FE 需要 'Select'
1023 800A03FF 需要表達式
1024 800A0400 需要語句
1025 800A0401 需要語句的結束
1026 800A0402 需要整數(shù)常數(shù)
1027 800A0403 需要 'While' 或 'Until'
1028 800A0404 需要 'While,'、 'Until,' 或語句未結束
1029 800A0405 需要 'With'
1030 800A0406 標識符太長
1031 800A0407 無效的數(shù)
1032 800A0408 無效的字符
1033 800A0409 未結束的串常量
1034 800A040A 未結束的注釋
1037 800A040D 無效使用關鍵字 'Me'
1038 800A040E 'loop' 沒有 'do'
1039 800A040F 無效 'exit' 語句
1040 800A0410 無效 'for' 循環(huán)控制變量
1041 800A0411 名稱重定義
1042 800A0412 必須為行的第一個語句
1043 800A0413 不能賦給非Byval參數(shù)
1044 800A0414 調用 Sub 時不能使用圓括號
1045 800A0415 需要文字常數(shù)
1046 800A0416 需要 'In'
1047 800A0417 需要 'Class'
1048 800A0418 必須在一個類的內部定義
1049 800A0419 在屬性聲明中需要 Let , Set 或 Get
1050 800A041A 需要 'PRoperty'
1051 800A041B 參數(shù)數(shù)目必須與屬性說明一致
1052 800A041C 在類中不能有多個缺省的屬性/方法
1053 800A041D 類初始化或終止不能帶參數(shù)
1054 800A041E PRoperty Let 或 Set 至少應該有一個參數(shù)
1055 800A041F 不需要的 'Next'
1056 800A0420 只能在 ‘PRoperty’ 或 ’Function’ 或 ’Sub’ 上指定 ’Default’
1057 800A0421 說明 'Default' 必須同時說明 'Public' "
1058 800A0422 只能在 PRoperty Get 中指定 'Default'
運行時錯誤[ ]
如果 VBScript 腳本執(zhí)行系統(tǒng)無法實施的操作,則會產(chǎn)生 VBScript 運行時錯誤。只有在運行腳本、為變量表達式賦值或分配內存時,才會產(chǎn)生 VBScript 運行時錯誤。 以下是65個運行時錯誤:
錯誤編號 描述
十進制 十六進制 說明
5 800A0005 無效過程調用或參數(shù)
6 800A0006 溢出
7 800A0007 內存不足
9 800A0009 下標越界
10 800A000A 該數(shù)組為定長的或臨時被鎖定
11 800A000B 被零除
13 800A000D 類型不匹配
14 800A000E 字符串空間溢出
17 800A0011 無法執(zhí)行請求的操作
28 800A001C 堆棧溢出
35 800A0023 未定義 Sub 或 Function
48 800A0030 加載 DLL 錯誤
51 800A0033 內部錯誤
52 800A0034 壞文件名或數(shù)
53 800A0035 文件未找到
54 800A0036 壞文件模式
55 800A0037 文件已經(jīng)打開
57 800A0039 設備I/O錯誤
58 800A003A 文件已經(jīng)存在
61 800A003D 磁盤空間已滿
62 800A003E 輸入超出文件尾
67 800A0043 文件太多
68 800A0044 設備不可用
70 800A0046 權限禁用
71 800A0047 磁盤未準備好
74 800A004A 不能用不同的驅動器重新命名
75 800A004B 路徑/文件訪問錯誤
76 800A004C 路徑未找到
91 800A005B 未設置對象變量
92 800A005C For 循環(huán)未初始化
94 800A005E 非法使用 Null
322 800A0142 不能建立所需臨時文件
424 800A01A8 需要對象
429 800A01AD ActiveX 部件無法創(chuàng)建對象
430 800A01AE 類不支持自動化
432 800A01B0 在自動化操作中未找到文件名或類名
438 800A01B6 對象不支持該屬性或方法
440 800A01B8 Automation錯誤
445 800A01BD 對象不支持此操作
446 800A01BE 對象不支持指定的參數(shù)
447 800A01BF 對象不支持當前的區(qū)域設置
448 800A01C0 未找到命名參數(shù)
449 800A01C1 參數(shù)不可選
450 800A01C2 錯誤的參數(shù)個數(shù)或無效的參數(shù)屬性值
451 800A01C3 對象不是一個集合
453 800A01C5 指定的dll函數(shù)未找到
455 800A01C7 代碼源鎖錯誤
457 800A01C9 這個鍵已經(jīng)是本集合的一個元素關聯(lián)
458 800A01CA 變量使用了一個 VBScript 中不支持的自動化(Automation)類型
462 800A01CE 遠程服務器不存在或不能訪問
481 800A01E1 無效圖片
500 800A01F4 變量未定義
501 800A01F5 違法的分配
502 800A01F6 腳本對象不安全
503 800A01F7 對象不能安全初始化
504 800A01F8 對象不能安全創(chuàng)建
505 800A01F9 無效的或不合格的引用
506 800A01FA 類未被定義
507 800A01FB 發(fā)生異常
5016 800A1398 需要正則表達式對象
5017 800A1399 正則表達式中的語法錯誤
5018 800A139A 錯誤的數(shù)量詞
5019 800A139B 在正則表達式中需要 ']'
5020 800A139C 在正則表達式中需要 ')'
5021 800A139D 字符集越界
32811 800A802B 元素未找到