標題標題  顯示論壇會員列表名單  搜索論壇搜索  HelpHelp
  注冊注冊  登入登入
ASP教學區
 DoReMe : ASP教學區
主題 話題: 第八章 VBScript 回復發表新主題
作者
貼子內容 << Prev Topic下一個主題 >>
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回復: 26
Posted: 2004/11月/24 9:42上午 | IP記錄 引用 oneni

這一章介紹如何使用Visual Basic的Scripting版本(VBScript),Active Sever Pages的缺省腳本語言。VBScript通過變量,操作符,循環,分支,函數和子例程,擴展了HTML。通過在HTML網頁 中加人VBScript腳本,你可以使靜態的HTML網頁成為動態網頁。學習完這一章之後,你將理解如何創建驅動ASP網頁的V BScript腳本。

VBScript介紹

VBScript與Basic語言有密切關係。如果你熟悉BASIC,你將會發現VBScript很容易學習和使用。VBScr ipt是Microsoft Visual Basic的簡化版本。

VBScript是一種腳本語言。這意味著這種語言比BASIC語言的成熟版本容易使用又難於使用。編製簡單的程序時,腳本語言 是容易使用的。腳本語言的句法比較簡單。但是,簡單的句法也使開發大的應用程序變得很困難。

你可以在HTML文件中直接嵌入VBScript腳本。這使你能夠擴展HTML,使它不僅僅是一種頁面格式語言。帶有VBScr ipt腳本的網頁在每次下載到瀏覽器時都可以是不同的,而且可以對用戶的操作作出反應。

VBScript是Active Sever Pages的缺省語言。你也可以在ASP網頁中使用其它腳本語言,如Jscript(將在第九章中討論),Perl,或者REX X(由IBM UK實驗室的Michael Cowlishaw所創的一種語言)。但是,本書中所有的ASP例子程序都使用VBScript。

客戶端和服務器端編程語言

VBScript既可以作為客戶端編程語言,也可以作為服務器端編程語言。客戶端編程語言是可以由瀏覽器解釋執行的語言。Jav a和Jscript/JavaScript也可以作為客戶端編程語言。當一個以這些語言中的任意一種編制的程序被下載到一個兼容 的瀏覽器中時,瀏覽器將自動執行該程序。

客戶端編程語言的優點是瀏覽器完成了所有的工作,這可以減輕服務器的負擔。而且客戶端程序運行起來比服務器端程序快得多。當一個 瀏覽器的用戶執行了一個操作時,不必通過網絡對其作出響應,客戶端程序就可以作出響應。

但是,一般來說,可以解釋VBScript腳本的瀏覽器只有Microsoft Internet Explorer。例如Netscape Navigater將忽略VBScript腳本。這意味著目前沒有充分的理由把VBScript作為客戶端編程語言。你不應該花 費時間來編寫只有少數瀏覽器可以解釋的程序。

注意

Internet Explorer和Netscape Navigater都可以解釋JavaScript程序。要瞭解JavaScript的更多信息,請參見下一章。

注意

如果你在開發Internet應用程序,你也許想用VBScript作為客戶端語言。而對於Intranet,你也許要對你所使 用的瀏覽器進行一定的控制。

VBScript也可以作為服務器端編程語言。服務器端編程語言是在服務器上執行的語言。服務器為一個站點提供文件,而瀏覽器接 收這些文件。服務器端編程語言執行站點主機上的所有操作,所有的功能要你自己來實現。

用VBScript作為服務器端編程語言的好處是VBScript不受瀏覽器的限制。VBScript腳本在網頁通過網絡傳送給 瀏覽器之前被執行。Web瀏覽器收到的只是標準的HTML文件。

當你創建ASP網頁時,你將用VBScript作為服務器端編程語言。因此,本書只講述這方面的內容。但是,你應該知道,你在本 章中所學的大部分內容在用VBScript作為客戶端編程語言時也是使用的。

Back to Top 查看 oneni's 資料 搜索其他貼子 oneni 訪問 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回復: 26
Posted: 2004/11月/24 9:42上午 | IP記錄 引用 oneni

在Active Sever Pages中使用VBScript

在這一節中,你將學習如何創建可以執行Visual Basic腳本的ASP網頁。在本書的第四部分,「用對像和組件創建ASP網頁」中,你將學習到關於Active Sever Pages的大部分內容。目前,你可以把ASP網頁當作HTML網頁看待,不過是把文件名後綴改為.asp。

為了能使用本章中的例子,你需要把所有的文件以後綴名.asp保存,而不是.cfm。如果你不這樣做,則腳本不會被解釋。當包含 腳本的ASP網頁被下載時,腳本的實際文本將會出現在瀏覽器窗口中。這當然是你所不希望見到的。

要使用本章中的例子,你還必須把文件保存在Web服務器的目錄下。例如,你可以把文件保存在wwwroot目錄下。對要執行的腳 本來說,網頁必須保存在一個Web服務器可以訪問的目錄下。

當你下載一個ASP網頁時,你不要直接從磁盤上下載。例如,如果你把一個ASP網頁保存為C:\Inetpub\wwwroot \mypage.asp,你不要通過在瀏覽器的地址條中鍵入這個文件路徑來下載該文件。你應該通過Web服務器申請這個文件。例 如,如果你的服務器名為mysever,文件保存在Web服務器的根目錄下,在瀏覽器的地址條中鍵入地址 http://mysever/mypage.asp即可。同樣,如果你不這樣做,該ASP網頁中的腳本不會被解釋。

你還必須把保存ASP網頁的目錄設置為允許執行腳本或允許執行程序。如果沒有得到許可,Web服務器不會執行一個腳本。要瞭解這 方面的更多信息,請參見第2章,「安裝和使用Internet Information Sever」。

注意

當你修改一個ASP網頁時,你會發現修改後的內容沒有反映到已下載到瀏覽器中的網頁中。這是web服務器使用了內存緩衝區的結果 。使用內存緩衝區是為了提高性能。當你開發一個站點時,你也許要取消這個特性。(參見第二章。)

把Visual Basic腳本集成到Active Sever Pages中

把VBScript的腳本集成到Active Sever Pages中的方法不止一種。(要瞭解詳細信息,請參見第13章,「建立Active Sever Pages」。)最容易的方法是使用兩個特殊字符<%和%>。例如,下面的Visua Basic腳本在一個ASP網頁中自動執行:

<HTML>

<HEAD>

<TITLE> Simple VBScript</TITLE>

</HEAD>

<BODY>

<% FOR myvar=1 TO 500%>

<B> Hello Magic!</B>

<% NEXT %>

</BODY>

</HTML>

這個腳本把句子「Hello Magec!」在一行中顯示500次(見圖8.1)。注意此例中字符對<%和%>的使用。它們指明Visual Basic腳本的開始和結束。

圖8.1 用VBScript來創建ASP頁

 

 

 

 

 

 

 

 

 

 

 

 

 

字符對<%和%>的作用與HTML中的字符對<和>的作用非常相似。不過是<和>用來指明 HTML標識,<%和%>用來指明腳本。當Web服務器看到這個特殊字符對時,就試圖把它們之間的內容解釋為一個腳 本。

例如,文本<% FOR myvar=1 TO 500 %>和文本<% NEXT %>都是Visual Basic腳本的例子。這兩個腳本結合起來構成了一個迭代500次的循環。

還應注意此例中Visual Basic腳本如何與HTML標識相集成。在ASP網頁中,腳本與HTML可以自由混合。文本<B> Hello Magic! </B>不是Visual Basic腳本的一部分,<B>標識是HTML的成分而不是VBScript的。但是,文本<B> Hello Magic! </B>會被解釋和顯示500次,因為它被括在Visual Basic腳本中。

當把Visual Basic腳本集成到ASP網頁中時,你要注意另外一個表達式。你可以用符號對<%=和%>來打印變量或函數的值。 考慮下面這個簡單的ASP網頁:

<HTML>

<HEAD>

<TITLE> Simple VBScript</TITLE>

</HEAD>

<BODY>

<%FOR myvar=1 TO 500%>

<%=myvar%><B>: Hello Magic!</B>

<% NEXT %>

</BODY>

</HTML>

這個例子也把「Hello Magic!」顯示500次。但是,在每個「Hello Magic!」前面有一個數字,該數字代表變量myvar的值。

表達式<%=myvar%>打印變量myvar的值。符號對<%和%>用來指明一個腳本,而符號對&l t;%=和%>用來指明變量或函數的值。跟在表達式<%=後面的任何內容都將被打印在瀏覽器窗口中。

這裡有一個用符號對<%=和%>打印函數值的例子。下面的ASP網頁在網頁頂部打印當前的日期和時間:

<HTML>

<HEAD>

<TITLE> Simple VBScript</TITLE>

</HEAD>

<BODY>

This page was created on :<%=NOW%>

<BR>Have a nice day!

</BODY>

</HTML>

VBScript函數NOW返回當前的系統日期和時間。當這個文件被下載到瀏覽器中時,當前的日期和時間出現在網頁的頂部(見圖 8.2)。

圖8.2 用ASP頁顯示時間和日期

 

 

 

 

 

 

 

 

 

 

 

 

 

你不要把沒有返回值的VBScript命令放在符號對<%=和%>之間。這會導致錯誤。例如,不要這樣做:

<%=FOR I=1 TO 100%>

不要混淆了符號對<%和%>與符號對<%=和%>的作用。一個是用來指明腳本的開始和結束;另一個用來 顯示變量和函數的值。

Back to Top 查看 oneni's 資料 搜索其他貼子 oneni 訪問 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回復: 26
Posted: 2004/11月/24 9:43上午 | IP記錄 引用 oneni

聲明變量

在Visual Basic腳本中,使用一個變量之前不需要專門聲明它。例如,下面的ASP網頁可以工作得很好:

<HTML>

<HEAD>

<TITLE> Simple VBScript</TITLE>

</HEAD>

<BODY>

<% myvar=」Hello Magic!」%>

<%=myvar%>

</BODY>

</HTML>

在這個例子中,變量myvar沒有經過聲明。但是,它被分配了一個值「Hello Magic!」,並且這個值被輸出到瀏覽器。這不會導致錯誤。

然而,如果你在編寫長而複雜的程序,你也許希望變量應該先聲明再使用。這樣做的好處是使你的腳本易於調試。如果你敲錯了應該變量 的名字,將會產生錯誤。下面的例子演示了如何強制變量必須先聲明後使用:

<% OPTION EXPLICI %>T

<HTML>

<HEAD>

<TITLE> Simple VBScript</TITLE>

</HEAD>

<BODY>

<%

DIM myvar

myvar=」Hello Magic!」

%>

<%=myvar%>

</BODY>

</HTML>

在這個例子中,OPTION EXPLICIT語句強制所有的變量必須專門聲明。DIM語句聲明了變量myvar。如果你不聲明這個變量,你將會收到錯誤信息 :Variable is undefined:』myvar』.

你可以用DIM語句同時聲明多個變量,只要把變量名用逗號隔開即可。在下面的例子中,用一個DIM語句聲明了四個變量:

DIM myvar1,myvar2,myvar3,myvar4

注意

OPTION EXPLICIT語句的位置很特殊。你必須把OPTION EXPLICIT語句作為一個ASP網頁的起始語句之一。它必須出現在任何HTML標識或其它VBScript命令之前。如果你 不這樣做,該語句將被視為非法語句。

Back to Top 查看 oneni's 資料 搜索其他貼子 oneni 訪問 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回復: 26
Posted: 2004/11月/24 9:43上午 | IP記錄 引用 oneni

變量子類型

當你用DIM語句聲明一個變量時,你沒有為變量定義數據類型。這是因為VBScript中所有變量都是相同的數據類型。所有變量 都是variant型變量。variant是一種特殊的變量類型,它可以代表許多其它類型的變量。

當你需要用一個變量代表一個數字時,你只要把一個數字分配給該變量,不用引號標記。當你需要用一個變量代表一個字符串時,你只要 把字符串分配給該變量,用引號標記。(數字不用引號,字符串要用引號。)一個variant型變量可以自動與賦給它的值的類型保 持一致。

通常,你沒有理由為一個變量如何代表你分配給它的數據而操心。但是,有一個函數可以揭示一個variant型變量的子類型。考慮 如下的例子:

<%myvar=」Hello Magic!」%><%=TYPENAME(myvar)%>

<%myvar=3%><%=TYPENAME(myvar)%>

在這個例子中,變量myvar被分配了兩個不同數據類型的值。對每種類型的值,VBScript函數TYPENAME()可以顯 示該變量所代表的實際數據的子類型。例如,當給變量myvar分配字符串數據「Hello Magic!」時,variant型變量的子類型是string。當給變量myvar分配整數3時,myvar的子類型是int eger。

舉這個例子的目的是說明variant型變量實際代表的數據是有子類型的。函數TYPENAME()可以揭示一個變量的子類型。 但是,在多數情況下,你不需要關心一個變量是如何代表數據的(參見下一節)。

Back to Top 查看 oneni's 資料 搜索其他貼子 oneni 訪問 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回復: 26
Posted: 2004/11月/24 9:43上午 | IP記錄 引用 oneni

變量數據範圍

不同的變量子類型可以代表的數據有不同的範圍。表8.1列出了變量子類型和它們的數據範圍的完整信息:

表8.1 變量子類型及其數據範圍

子類型 範圍

Byte 0到255

Boolean TRUE或FALSE

Integer -32,768到32,767

Long -2,147,483,648 到2,147,483,647

Single 負數:-3.402823E38到-1.401298E-45

正數:1.401298E-45到3.402823E38

Double 負數:-1.79769313486232E308到-4.94065645841247E-324

正數:4.94065645841247E-324到1.7976931348623eE308

Currency -922,337,203,685,477.5808到922,337,203,685,477.5807

Date 100年1月1日到9999年12月31日

object 任何對像

string 變長字符串,長度從0個字符到大約20億個字符

注意string子類型的數據範圍非常之大。你可以把整個網頁,或者甚至整部小說保存在一個字符串變量中。我發現把網頁保存在字 符串中是很有用處的。

空變量和空值變量

在給一個變量分配一個值之前,該變量是空的。用函數ISEMPTY()可以檢測一個變量是否為空。如下例所示:

<%

myvar=」Hello Magic!」

%>

myvar:<%=ISEMPTY(myvar)%>

myvar2:<%=ISEMPTY(myvar2)%>

在這個例子中,檢測了兩個變量myvar和myvar2,看它們是否為空。因為myvar已經被分配了一個值,當把變量myva r作為函數ISEMPTY()的參數時,該函數返回FALSE。而myvar2沒有分配數據,因此以myvar2為參數時,函數 ISEMPTY()返回TRUE。

空變量與被分配了長度為0的字符串或數字0的變量是不同的。例如,語句myvar=」」和myvar=0都該變量myvar分配 了一個值。在這兩種情況下,該變量都不是空的。只有一個從未被賦過值的變量才是空變量。

空變量與包含空值的變量也是不同的。這也許有些奇怪。一個被分配了空值NULL的變量不是空變量。而是有值NULL。如果你想使 一個已經分配了值的變量成為空變量,你必須使用關鍵字EMPTY.像這樣:

myvar=EMPTY

Back to Top 查看 oneni's 資料 搜索其他貼子 oneni 訪問 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回復: 26
Posted: 2004/11月/24 9:46上午 | IP記錄 引用 oneni

聲明常量

VBScript可以聲明常量。常量與變量有相似之處;但是,一旦你聲明了一個常量,該常量的值將不能被改變。這裡有一個例子:

<%

CONST REG_FEE=10.00

%>

You will be charged $<%=REG_FEE%> to register at this web site.

在這個例子中,常量REG_FEE被分配了值10.00。因為REG_FEE是一個常量,在腳本中將不能給REG_FEE分配新 值。如果你試圖改變一個常量的值,你將收到錯誤信息:Illegal Assignment error.。

當有些數值你不希望在腳本中被改變,而是希望將來進行手工修改時,使用常量是有用的。例如,你希望你的站點的註冊費用是一個固定 價格。但是,在將來的某一天,你也許要提高這個價格。通過改變一個常量的值,你可以很容易地完成這個工作。

你可以一次定義多個常量,只要把每個常量定義用逗號隔開即可。像這樣:

<%

CONST REG_FEE=10.00,REG_TERM=20,SITE_NAME=」 Web Site of Magic」

%>

Back to Top 查看 oneni's 資料 搜索其他貼子 oneni 訪問 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回復: 26
Posted: 2004/11月/24 9:46上午 | IP記錄 引用 oneni

創建和修改數組

當你需要存儲一組相關的值時,你應該使用數組。數組是一個可以存儲一組值的變量。例如,你可以創建一個數組,用來存儲你的站點上 出售的一系列商品:

<%

DIM Product(10)

Product(0)=」Trading Card」

Product(1)=」Book on Active Sever Pages」

Producr(2)=」Computer Monitor」

%>


在這個例子中,DIM語句用來聲明一個數組。與前面討論的變量不同,數組在使用之前必須聲明。這個DIM語句聲明了一個可以存儲 11個值的數組。

注意

VBScript中數組的下標從0開始,因此每個數組的元素個數都比聲明語句中的數字多1。(用剛才討論的數組Product, 你可以存儲11個值。)如果你試圖存儲更多的 數據,則將發生錯誤。

聲明了一個數組之後,你可以用一個索引為它的元素分配數值。在上面的例子中,索引值為1的數組元素被分配了值「Book on Active Sever Pages」。如果你想輸出這個元素的值,你可以用這樣的語句:

<%=Product(1) %>

上例中數組的作用與一個列表相似。它有一個索引,可以用來引用所有的元素。你也可以創建有多個索引的數組。考慮如下的例子:

<%

DIM Product(10,1)

Product(0,0)=」Trading Card」

Product(0,1)=」A very valuable trading card.」

Product(1,0)=」Book on Active Sever Pages」

Product(1,1)=」A comprehensive book on Active Sever Pages」

Product(2,0)=」computer Monitor」

Product(2,1)=」This monitor is in excellent shape.」

%>

這個腳本中DIM語句創建了一個多維數組。這個數組的作用與一個表相似;第一個索引指定行,第二個索引指定列。

這個數組保存了產品名字和產品描述。要指向一個特定的產品,你應使用第一個索引,要指定產品名字或產品描述,應使用第二個索引。

使用數組時,並不只限於使用二維數組。你可以聲明直到60維的數組。要創建一個多維數組,只要簡單地在數組聲明語句中增加一個維 數即可。像這樣:

DIM Product(10,10,10,10)

這個聲明創建了一個四維數組,每一維可以存儲11個元素。這意味著這個數組共可以保存14,641個數值(11*11*11*1 1=14.641)。可以看到,隨著維數的增加,數組的大小增加得很快。

目前討論過的只限於固定大小的數組。一旦你聲明了一個固定大小的數組,你將不能改變數組中的元素個數。要改變一個固定數組的大小 ,你必須刪除它再重新創建。然而,VBScript另外有一種動態數組。這裡有一個例子:

<%

DIM Product()

REDIM Product(2)

Product(0)=」Trading Card」

Product(1)=」Book on Active Sever Pages」

Product(2)=」Computer Monitor」

REDIM PRESERVE Product(3)

Product(3)=」Coffee Cup」

%>

在這個例子中,DIM語句把數組Product聲明為動態數組。當你聲明一個動態數組時,你不需要指定數組的維數。在你第一次給 一個動態數組分配數值之前,你必須用REDIM語句指定它的維數。

這個例子中,數組Product首先被創建為只能有三個元素。接下來,再次使用REDIM語句,增大了這個數組的大小。該數組被 重定義維數以包含四個元素。這使你可以把值「Coffee Cup」保存在重定義的數組中。

注意第二個REDIM語句中關鍵字PRESERVE的使用。當一個數組被重設維數時,這個關鍵字保存該數組中的內容。如果你不使 用這個關鍵字,數組中的所有數據都會丟失。

你可以用REDIM語句增加維數,也可以減少維數。你還可以用REDIM語句增大或減小一個特定維的大小。但是,當你刪除某一維 或減小某一維的大小時,你將會丟失數據。

例如,假設你在上一個例子中把REDIM PRESERVE Product(2)作為最後一個語句,在這種情況下,你將不能再使用Product(3)。數據「Coffe Cup」將會從數組Product中丟失。

用關鍵字PRESERVE,你只能修改一個多維數組的最後一維。你可以增大最後一維,不丟失數據,或減小最後一維,丟失一部分數 據。但是,當你增加或減少維數時,你無法保存數組中的數據。

用REDIM語句,你可以擴展或減縮一個數組任意多次。當你從數據庫中取出數據時,你將會發現這個特性是很有用的。在本書的第五 部分,「數據組件」中,你將學習這方面的內容。

Back to Top 查看 oneni's 資料 搜索其他貼子 oneni 訪問 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回復: 26
Posted: 2004/11月/24 9:46上午 | IP記錄 引用 oneni

數組函數

使用數組時,有三個函數是你必須掌握的。函數UBOUND()返回一個數組的大小。確切地說,它可以返回數組的某一維的大小。這 裡有這個函數的一些例子:

<%

DIM Product(10,33)

%>

<%=UBOUND(Product)%>

<%=UBOUND(Product,1)%>

<%=UBOUND(Product,2)%>

在這個例子中,第一個UBOUND()函數返回值是10。在缺省情況下,這個函數返回的是一個函數的第一維的上界。

第二個UBOUND()函數的返回值與第一個相同。它返回的是數組Product的第一維的上界。

警告

雖然數組的某一維的第一個索引值總是0,但其第一維總是用1表示,不要混淆了維數與索引。

最後,第三個UBOUND()函數的返回值是33。這是數組Product的第二維的維數。

當一個數組不是你聲明的,但你需要確定這個數組的大小時,函數UBOUND()是有用的。例如,在第23章「使用記錄集中」,你 將學習如何從一個數據庫表中把記錄取到數組中。如果你需要知道這項操作所產生的數組的大小,你可以使用函數UBOUND()。( 知道一個數組的大小使你能夠遍歷和顯示它的所有元素。)

VBScript有一個ERASE語句,可以用來操作固定大小的數組和動態數組。通過對一個靜態數組使用ERASE語句,你可以 清除這個數組。如果該數組是一個字符串數組,ERASE語句把該數組的所有元素重新 初始化為空字符串」」。如果該數組是一個數值數組,ERASE語句可以把該數組的所有元素重新初始化為0。這裡有一些例子:

<%

DIM Product(2)

Product(1)=」Running shoes」

ERASE Product

%>

<%=Product(1)%>

當這個腳本執行時,不會輸出任何信息。ERASE語句清除了數組Product的所有數據,不論有多少元素被分配了值。

當對動態數組使用ERASE語句時,它的作用與上述的不同。當你對動態數組使用ERASE語句時,該數組本身會被刪除。在你能重 新使用這個數組之前,你必須對它重新初始化。如下例所示:

<%

DIM Product()

REDIM Product(100)

Product(1)=」Running Shoes」

ERASE Product

%>

這個腳本創建了一個名為Product的動態數組。該數組的索引值為1的元素被賦了一個值。然後,用ERASE語句刪除了這個數 組。如果你在它被刪除之後試圖訪問這個數組的任何一個元素,則將會發生錯誤。

當你刪除了一個數組後,內存就被釋放。對一個訪問率很高的站點來說,每一字節的內存都很珍貴。因此當你不再需要一個動態數組時, 用ERASE語句刪除它是個不錯的主意。

操作數組的最後一個有用的函數是ISARRAY()。函數ISARRAY()可以用來測試一個變量表達式是否是一個數組。這裡有 一個例子:

<%

DIM Product(10)

DIM somevar

%>

<%=ISARRAY(Product)%>

<%=ISARRAY(somevar)%>

在這個例子中,第一個ISARRAY()函數返回TRUE,因為Product實際上是一個數組。第二個ISARRAY()函數 返回FALSE,因為變量somevar沒有被聲明為一個數組。

Back to Top 查看 oneni's 資料 搜索其他貼子 oneni 訪問 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回復: 26
Posted: 2004/11月/24 9:46上午 | IP記錄 引用 oneni

註釋Visual Basic腳本

你可以在ASP網頁中使用HTML風格的註釋。但是,在Visual Basic腳本中你不能用這種註釋。要在一個腳本中加人註釋,你必須用下面的方法:

<!--I am an HTML comment.-->

<%

REM I am a VBScript comment.

『I am also a VBScript comment.

%>

在這個例子中,REM語句用來建立一條註釋。注意一個撇號可以用於同樣的目的。REM語句與撇號執行同樣的功能。

這兩種註釋只能用來註釋一行。用REM語句或撇號建立的註釋在一行的末尾結束。但是,你可以把註釋與其它Visual Basic語句寫在同一行中:

<%

FOR i=1 TO 100 『The start of a loop

myvar=myvar+1 『Increments myvar

NEXT 『The end of a loop

%>

HTML風格的註釋與VBScript註釋的一個重要區別是VBScript註釋不發送給瀏覽器,你不能用web瀏覽器中的Vi ew Source命令來察看VBScript註釋。

Back to Top 查看 oneni's 資料 搜索其他貼子 oneni 訪問 oneni's
 
oneni
Newbie
Newbie


加入: 2004/11月/24
Online Status: Offline
回復: 26
Posted: 2004/11月/24 9:47上午 | IP記錄 引用 oneni

在腳本中增加日期和時間函數

VBScript有許多函數,使你可以得到各種格式的日期和時間。你已經用過了這些函數中的一個。你可以用函數NOW返回當前的 日期和時間:

At the tone,the time will bi: <%=NOW%>

你應該注意,返回的日期和時間是你的Web服務器的系統時鐘的日期和時間。如果身處紐約的某個人在看你的網頁,他看到的日期和時 間與她當地的日期和時間也許是不一至的。

函數NOW同時返回日期和時間。如果你只想返回當前日期,你可以使用函數DATE。如果你只想返回當前時間,你可以使用函數TI ME。例如:

The date is :<%=DATE%>

The time is :<%=TIME%>

操作日期

使用函數MONTH(),DAY(),WEEKDAY(),和YEAR(),你可以把一個日期分割成更小的部分。所有這些函數都 以一個日期表達式作為參數,並返回一個數字。這裡有一個如何使用這些函數的例子:

The Month is :<%=MONTH(DATE)%>

<BR>

The Day is : <%=DAY(DATE)%>

<BR>

The weekday is :<%=WEEKDAY(DATE)%>

<BR>

The year is :<%=YEAR(DATE)%>

假設當前日期是1997年8月9日,星期三。如果你把上面的例子包含在一個ASP網頁中,在瀏覽器中將顯示如下的文字:

The Month is : 7

The Day is : 9

The weekday is : 4

The year is : 1997

注意函數weekday()假定一個星期的第一天是星期日。如果你想把星期一作為一週的第一天,你可以使用如下的語句:

The weekday is :<%=weekday(DATE,vbWednesday)%>

你可以把任何一天作為一週的第一天。要指定一週的第一天是星期幾,只要用vbSunday,vbMonday,vbTusday ,vbWednesday,vbThurday,vbFriday或vbSaturday代替函數WEEKDAY()的第二個參 數即可。

你不單可以用函數DATE作為這些函數的參數。你也可以提供一個日期字符串或者一個日期常數作為參數,如下例所示:

The weekday is :<%=WEEKDAY(#12/25/2000#)%>

The weekday is :<%=WEEKDAY(「12-25-2000」)%>

這兩個函數都返回2000年聖誕節這一天是星期幾。(這也許使你不習慣:返回值是2,代表星期一。)表達式#12/25/200 0#是一個日期常數,日期常數總是括在字符』#』中。表達式」12-25-2000」是一個日期字符串。用這兩種方法為函數提供 一個日期都是可行的。

要以更加易讀的形式返回月份和星期幾,你可以使用函數WEEKDAYNAME()或MONTHNAME()。這兩個函數返回的是 字符串。這裡有一個使用這兩個函數的例子:

The month is :<%=MONTHNAME(MONTH(DATE))%>

The weekday is:<%=WEEKDAYNAME(WEEKDAY(DATE))%>

假設當前日期是八月,星期三。在這種情況下,第一個函數將返回字符串July,第二個函數返回字符串Wednesday。你可以 把1到12之間的任何整數作為函數MONTHNAME()的參數,你可以把1到7之間的任何整數作為函數WEEKDAYNAME ()的參數。

在缺省情況下,這兩個函數不會縮寫返回的字符串。函數MONTHNAME()返回的是July而不是Jul,函數WEEKDAY NAME()返回的是Wednesday而不是Wed。然而,通過指定第二個參數為TRUE,你可以強制這兩個函數返回縮寫的字 符串。(TRUE表示要縮寫,FALSE表示不縮寫。)如下例所示:

The month is: <%=MONTHNAME(MONTH(DATE),TRUE)%>

The weekday is: <%=WEEKDAYNAME(WEEKDAY(DATE),TRUE)%>

操作時間

你也可以把時間分割成更小的部分。通過函數HOUR(),MINUTE(),和SECOND(),你可以返回時間的不同部分。下 面是使用這些函數的一些例子以及可能的返回值:

The hour is:<%=HOUR(TIME)%>

The hour is:21

The minute is:<%=MINUTE(TIME)%>

The minute is:39

The second is:<%=SECOND(TIME)%>

The second is:34

函數HOUR()返回一個0到23之間的整數(0點是午夜後的一個小時)。函數MINUTE()返回一個0到59之間的整數。函 數SECOND()也返回一個0到59之間的整數。

你不單可以用函數TIME作為這些函數的參數,你還可以提供一個時間常數或時間字符串作為參數。下面的兩個例子都從時間中抽取分 鐘數34:

The minute is:<%=MINUTE(#12:34:19#%>

The minute is:34

The minute is:<%=MINUTE(「12:34:23」)%>

The minute is:34

比較日期和時間

VBScript有兩個用於比較日期和時間的函數。你可以用函數DATEADD()對日期和時間作加法,用函數DATEDIFF ()計算兩個日期或時間的間隔。下面是使用函數DATEADD()的一些例子:

Your registration will exprie on <%=DATEADD(「ww」,6,DATE)%>

Exactly fifteen seconds from now,at<%=DATEADD(「s」,15,TIME)%>your computer

will melt.

第一個例子返回比當前日期晚六個星期的日期,第二個例子返回15秒鐘後的時間中的秒數。

函數DATEADD()有三個參數:

第一個參數指定一個時間間隔。(見表8.2)

第二個參數時間間隔的倍數因子。

最後,第三個參數是一個日期或時間的變量或常量。

表8.2 日期和時間間隔

間隔 描述

yyyy 年

q 季度

m 月

y 天

d 天

w 天

ww 星期

h 小時

m 分鐘

s 秒

你可以用函數DATEDIFF確定兩個日期或時間之間的間隔。下面的例子演示了如何使用這個函數:

You have been a member for <%=DATEDIFF(「d」,」1/1/1988」,DATE)%> days.

There are exactly <%=DATEDIFF(「s」,DATE,」1/1/2000」)%> seconds remaining until

the year 2000.

第一個例子中的DATEDIFF()函數返回1/1/1988與當前日期之間的天數。第二個例子中的DATEDIFF()返回當 前日期到2000年之間的秒數。

函數DATEDIFF()有三個參數:

第一個參數是一個日期或時間間隔(參見表8.2).

另兩個參數是兩個日期。為了避免出現負數,第一個日期參數應該比第二個早。(如果該函數返回一個負數,你應該知道第一個日期比第 二個日期晚。)

格式化日期和時間

你可以規定一個日期或時間的顯示格式。在缺省情況下,當你通過函數DATE顯示一個日期時,它看起來是這樣的:

7/9/97

但是,你可以用函數FORMATDATETIME()顯示一個基於你計算機的區域設置的日期。你可以把一個日期顯示為短日期格式 或長日期格式。

注意

從控制面板中選擇區域設置圖標,可以為你的計算機進行區域設置。你可以通過區域設置來指定日期和時間的長格式或短格式。

下面的例子演示了如何控制長日期格式和短日期格式的顯示:

Short Date:<%=FORMATDATETIME(DATE,vbShortDate)%>

Long Date:<%=FORMATDATETIME(DATE,vbLongDate)%>

當根據英國(美國)區域設置顯示日期時,日期顯示為如下的格式:

Short Date:7/9/97

Long Date:Wednesday,July 09,1997

注意短日期格式的顯示與不做任何格式化時完全相同。在缺省情況下,日期以短日期格式顯示。

你也可以用函數FORMATDATETIME()格式化一個時間。同樣,你可以指定一個時間顯示為長格式或短格式。當用短格式顯 示時間時,將使用24小時時鐘(軍事時間)。下面的例子演示了如何用FORMATDATETIME()函數操作時間:

Short Time:<%=FORMATDATETIME(TIME,vbShortTime)%>

Long Time:<%=FORMATDATETIME(TIME,vbLongTime)%>

當以英國(美國)區域設置顯示時間時,時間的格式如下:

Short Time:03:20

Long Time:3:20:08 AM

Back to Top 查看 oneni's 資料 搜索其他貼子 oneni 訪問 oneni's
 

of 3 下一頁 >>
  回復發表新主題
顯示可打印的頁面 顯示可打印的頁面

論壇跳轉
不能 張貼新論題在這個討論版
不能 回應論題在這個討論版
不能 刪除你的發言在這個討論版
不能 編輯你的發言在這個討論版
不能 新增投票標題在這個討論版
不能 在這個討論版投票

Edit by doreme Forums version 2004
Welcome ©2001-2004 doreme Guide

This page was generated in 1.3271 seconds.

 
保養品
保養品, Skin Care
www.elady.tw
Makeups Wholesale
Wholesale Cosmetics SkinCares
lungjyi.com
保養品批發
名牌保養品、保養品批發
www.perfume.com.tw/skincare
Wholesale Perfumes
Fragrances Perfumes Wholesale
lungjyi.net