函數和過程一樣都是命名了的代碼塊,但它們卻有很大的區別,過程完成程序任務,函數則返回值。我們可以這樣理解,過程象一個完整的句子,而函數則象一個單詞。舉個例子,當你想獲取某個數的平方根,你只要將該數傳給 VBScript 的 Sqr() 函數,此函數會立即返回該數的平方根。如:
A=sqr(9)
則 A=3。熟練掌握腳本語言的函數將給你編寫 ASP 程序帶來極大的方便,就以上一期結尾處作者布置給大家的課後練習來說,如果你對腳本語言的函數掌握不夠全面,那麼解決如此之小的一個問題將很有可能花費你相當大的精力。現在讓我們來回顧一下這道課後練習。
“作者正在用 ASP 制作一套基於 WEB 的 BBS 系統,希望能在其中添加一項特殊功能,即當任何用戶登陸該 BBS 後都能夠查閱近七天來所有新發布的信息。”
如果你不熟悉 VBScrip,就不會知道 VBScrip 本身提供了一個用來取得日期之間的差或和的函數 DateSerial,它的語法如下:
DateSerial(year, month, day)
如果你要指定一個日期,例如:1998 年 11 月 10 日,那麼 DateSerial 函數中每個參數的取值范圍都應該是可接受的,即日的取值應在 1 和 31 之間,月的取值應在 1 和 12 之間。但是,也可以使用表示某日之前或之後的年、月、日數目的數值表達式為每個參數指定相對日期。以下樣例中使用了數值表達式代替絕對日期。在這裡,DateSerial 函數返回 1998 年 11 月 10 日之前二十年 (1990-20) 零兩個月 (11-2) 又一天 (10-1) 的日期:即 1978 年 9 月 9 日。程序如下:
Datep=DateSerial(1998-20, 11-2,10-1)
對於 year 參數,若取值范圍是從 0 到 99,則被解釋為 1900 到 1999 年。對於此范圍之外的 year 參數,則使用四位數字表示年份(例如 1800 年)。當任何一個參數的取值超出可接受的范圍時,則會適當地進位到下一個較大的時間單位。例如,如果指定了 35 天,則這個天數將被解釋成一個月加上多出來的日數,多出來的日數取決於其年份和月份。但是如果參數值超出 -32,768 到 32,767 的范圍,或者由三個參數指定(無論是直接還是通過表達式指定)的日期超出了可以接受的日期范圍,就會發生錯誤。
當我們了解並掌握了函數 DateSerial 的使用方法後,再來看看作者布置的這道題目,一切就迎刃而解了。下面我將程序中的此部分代碼公布如下: itemp=DateSerial(Year(date), month(date), day(date)-7)
itemp=DateValue(itemp)
sql=\Select * from message Where message.creatime Between #\&date&\# And #\&itemp&\# \
在這裡我們又接觸到了一組函數 Year,month,day,它們是用來得到一個日期的年、月、日。date 是常數,表示今天日期,而函數 DateValue 則是將字符串變量轉化為日期格式的變量。在本段程序的第三行,我們第一次接觸到了標准的 SQL 查詢語句,這句語句是什麼意思呢?
“Select”是標准的 SQL 數據庫查詢命令,通過 SELECT 語句我們可以在數據庫中檢索數據,並將查詢結果提供給用戶,此處的“*”表示查詢該名為“message”的數據庫中的所有記錄,而“where”的作用是設定一個查詢條件,是為了將數據庫中符合條件的記錄取出來,“message.creatime”是一個儲存了數據庫中記錄創建日期的變量。將整句語句連起來理解就是:查詢名為 message 的數據庫中的所有記錄,並將其中創建日期在今天和今天以前七日以內的所有記錄存儲在變量 sql 中。可能由於大家第一次接觸 SQL 語句,一時間無法完全理解它的作用,不過不用擔心在今後的章節中作者將專門用一期給大家介紹 SQL 的使用方法。
通過上面的學習,大家應該已經能夠理解函數在程序中的作用,當然我們不必去死背函數,但要做到熟練運用只有一條捷徑 -- 多實踐。接下來讓我們來看看 VBScript 的基本語法。
了解編程語言的朋友一定知道在程序中控制程序流程的語句主要可以分為條件語句和循環語句,在 VBScript 中可使用以下條件語句: If...Then...Else 語句
Select Case 語句
If...Then...Else 語句用於計算條件是否為 True 或 False,並且根據計算結果指定要運行的語句。通常,條件是使用比較運算符對值或變量進行比較的表達式,If...Then...Else 語句可以按照需要進行嵌套。
讓我們來創建兩個范例文件:if1.asp 和 if2.asp
將以下語句剪貼到記事簿中,並保存為 if1.asp( 注意:請將程序中“<”後的空格去掉 ) < html>
< head>
< TITLE>if1.asp< /TITLE>
< /head>< body bgcolor=\#FFFFFF\>
< form action=\if2.asp\ method=get>
Your First Name< INPUT NAME=\FirstName\ MaxLength=20>< p>
Your Last Name< INPUT NAME=\LastName\ MaxLength=20>< p>
< INPUT TYPE=submit>< INPUT TYPE=reset>
< /form>
< /body>
< /html>
將以下語句剪貼到記事簿中,並保存為 if2.asp < html>
< head>
< TITLE>ifrespond.asp< /TITLE>
< /head>
< % fname=request.querystring(\Firstname\)
lname=request.querystring(\Lastname\)
If fname=\George\ and lname=\Washington\ then %>
Hi.You must be the first president!
< % else %>
Hi!Nice to Meet You
< %end if %>
< /body>
< /html>
asp1.asp 產生一個文本輸入框,要求用戶輸入姓、名,如下圖: