天天看點

ASP程式設計中20個非常有用的例子

1.如何用asp判斷你的網站的虛拟實體路徑

答:使用Mappath方法

<p align="center"><font size="4" ><b>

The Physical path to this virtual website is:

</b></font >

<font color="#FF0000" size="6" >

<%= Server.MapPath("/")% >

</font ></p>

2.我如何知道使用者所用的浏覽器?

答:使用the Request object方法

strBrowser=Request.ServerVariables("HTTP_USER_AGENT")

If Instr(strBrowser,"MSIE") < > 0 Then

  Response.redirect("ForMSIEOnly.htm")

Else

  Response.redirect("ForAll.htm")

End If

 

3.如何計算每天的平均反複通路人數

答:解決方法

<% startdate=DateDiff("d",Now,"01/01/1990")

if strdate< 0 then startdate=startdate*-1

avgvpd=Int((usercnt)/startdate) % >

顯示結果

<% response.write(avgvpd) %>

that is it.this page have been viewed since November 10,1998

4.如何顯示随機圖象

<% dim p,ppic,dpic

ppic=12

randomize

p=Int((ppic*rnd)+1)

dpic="graphix/randompics/"&p&".gif"

%>

顯示

<img src="< %=dpic% >">

5.如何回到先前的頁面

答:<a href="< %=request.serverVariables(" target="_blank" rel="external nofollow" Http_REFERER")% >" >preivous page< /a >

或用圖檔如:< img src="arrowback.gif" alt="< %=request.serverVariables("HTTP_REFERER")% >" >

6.如何确定對方的IP位址

答:userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")

If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR")

7.如何鍊結到一副圖檔上

答:<% @Languages=vbs cript % >

<% response.expires=0

strimagename="graphix/errors/erroriamge.gif"

response.redirect(strimagename)

%>

8.強迫輸入密碼對話框

答:把這句話放載頁面的開頭

<% response.status="401 not Authorized"

response.end

%>

9.如何傳遞變量從一頁到另一頁

答:用 HIDDEN 類型來傳遞變量

<% form method="post" action="mynextpage.asp" >

<% for each item in request.form %>

<input namee="< %=item% >" type="HIDDEN"

value="< %=server.HTMLEncode(Request.form(item)) % >" >

<% next %>

</form>

10.為何我在 asp 程式内使用 msgbox,程式出錯說沒有權限

答:由于 asp 是伺服器運作的,如果可以在伺服器顯示一個對話框,那麼你隻好等有人按了确定之後,你的程式才能繼續執行,而一般伺服器不會有人守着,是以微軟不得不禁止 這個函數,并胡亂告訴你 (:) 呵呵) 沒有權限。但是ASP和用戶端腳本結合倒可以顯示一個對話框,as follows:

<% yourVar="測試對話框" %>

<script language="javascript">

alert("< %=yourvar% >")

</script>

11.有沒有辦法保護自己的源代碼,不給人看到

答:可以去下載下傳一個微軟的Windows s cript Encoder,它可以對asp的腳本和用戶端javas cript/vbs cript腳本進行加密。。。不過用戶端加密後,隻有ie5才能執行,伺服器端腳本加密後,隻有伺服器上安裝有s cript engine 5(裝一個ie5就有了)才能執行。

12.怎樣才能将 query string 從一個 asp 檔案傳送到另一個?

答:前者檔案加入下句: Response.Redirect("second.asp?" & Request.ServerVariables("QUERY_STRING"))

13.global.asa檔案總是不起作用?

答:隻有web目錄設定為web application, global.asa才有效,并且一個web application的根目錄下 global.asa才有效。IIS4可以使用Internet Service Manager設定application setting 怎樣才能使得htm檔案如同asp檔案一樣可以執行腳本代碼?

14.怎樣才能使得htm檔案如同asp檔案一樣可以執行腳本代碼?

答:Internet Sevices Manager - > 選擇default web site - >右鼠鍵- >菜單屬性-〉主目錄- > 應用程式設定(Application Setting)- > 點選按鈕 "配置"- > app mapping - >點選按鈕"Add" - > executable browse選擇 /WINNT/SYSTEM32/INETSRV/ASP.DLL EXTENSION 輸入 htm method exclusions 輸入PUT.DELETE 全部确定即可。但是值得注意的是這樣對htm也要由asp.dll處理,效率将降低。

15.如何注冊元件

答:有兩種方法。

第一種方法:手工注冊 DLL 這種方法從Iis 3.0一直使用到Iis 4.0和其它的Web Server。它需要你在指令行方式下來執行,進入到包含有DLL的目錄,并輸入:regsvr32 component_name.dll 例如 c:/temp/regsvr32 AspEmail.dll 它會把dll的特定資訊注冊入伺服器中的系統資料庫中。然後這個元件就可以在伺服器上使用了,但是這個方法有一個缺陷。當使用這種方法注冊完畢元件後,該元件 必須要相應的設定NT的匿名帳号有權限執行這個dll。特别是一些元件需要讀取系統資料庫,是以,這個注冊元件的方法僅僅是使用在伺服器上沒有MTS的情況 下,要取消注冊這個dll,使用:regsvr32 /u aspobject.dll example c:/temp/regsvr32 /u aneiodbc.dll

第二種方法:使用MTS(Microsoft Transaction Server) MTS是IIS 4新增特色,但是它提供了巨大的改進。MTS允許你指定隻有有特權的使用者才能夠通路元件,大大提高了網站伺服器上的安全性設定。在MTS上注冊元件的步驟如下:

1) 打開IIS管理控制台。

2) 展開transaction server,右鍵單擊"pkgs installed"然後選擇"new package"。

3) 單擊"create an empty package"。

4) 給該包命名。

5) 指定administrator帳号或則使用"interactive"(如果伺服器經常是使用administrator 登陸的話)。

6) 現在使用右鍵單擊你剛建立的那個包下面展開後的"components"。選擇 "new then component"。

7) 選擇 "install new component" [b]。

8) 找到你的.dll檔案然後選擇next到完成。

要删除這個對象,隻要選擇它的圖示,然後選擇delete。

附注:特别要注意第二種方法,它是用來調試自己編寫元件的最好方法,而不必每次都需要重新啟動機器了。

16. ASP與Access資料庫連接配接:

<%@ language=VBs cript%>

<%

dim conn,mdbfile

mdbfile=server.mappath("資料庫名稱.mdb")

set conn=server.createobject("adodb.connection")

conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=資料庫密碼;dbq="&mdbfile

%>

17. ASP與SQL資料庫連接配接:

<%@ language=VBs cript%>

<%

dim conn

set conn=server.createobject("ADODB.connection")

con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL伺服器名稱或IP位址;UID=sa;PWD=資料庫密碼;DATABASE=資料庫名稱

%>

建立記錄集對象:

set rs=server.createobject("adodb.recordset")

rs.open SQL語句,conn,3,2

18. SQL常用指令使用方法:

(1) 資料記錄篩選:

sql="select * from 資料表 where 字段名=字段值 order by 字段名 [desc]"

sql="select * from 資料表 where 字段名 like ''%字段值%'' order by 字段名 [desc]"

sql="select top 10 * from 資料表 where 字段名 order by 字段名 [desc]"

sql="select * from 資料表 where 字段名 in (''值1'',''值2'',''值3'')"

sql="select * from 資料表 where 字段名 between 值1 and 值2"

(2) 更新資料記錄:

sql="update 資料表 set 字段名=字段值 where 條件表達式"

sql="update 資料表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達式"

(3) 删除資料記錄:

sql="delete from 資料表 where 條件表達式"

sql="delete from 資料表" (将資料表所有記錄删除)

(4) 添加資料記錄:

sql="insert into 資料表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"

sql="insert into 目标資料表 select * from 源資料表" (把源資料表的記錄添加到目标資料表)

(5) 資料記錄統計函數:

AVG(字段名) 得出一個表格欄平均值

COUNT(*|字段名) 對資料行數的統計或對某一欄有值的資料行數統計

MAX(字段名) 取得一個表格欄最大的值

MIN(字段名) 取得一個表格欄最小的值

SUM(字段名) 把資料欄的值相加

引用以上函數的方法:

sql="select sum(字段名) as 别名 from 資料表 where 條件表達式"

set rs=conn.excute(sql)

用 rs("别名") 擷取統的計值,其它函數運用同上。

(5) 資料表的建立和删除:

CREATE TABLE 資料表名稱(字段1 類型1(長度),字段2 類型2(長度) …… )

例:CREATE TABLE tab01(name varchar(50),datetime default now())

DROP TABLE 資料表名稱 (永久性删除一個資料表)

19. 記錄集對象的方法:

rs.movenext 将記錄指針從目前的位置向下移一行

rs.moveprevious 将記錄指針從目前的位置向上移一行

rs.movefirst 将記錄指針移到資料表第一行

rs.movelast 将記錄指針移到資料表最後一行

rs.absoluteposition=N 将記錄指針移到資料表第N行

rs.absolutepage=N 将記錄指針移到第N頁的第一行

rs.pagesize=N 設定每頁為N條記錄

rs.pagecount 根據 pagesize 的設定傳回總頁數

rs.recordcount 傳回記錄總數

rs.bof 傳回記錄指針是否超出資料表首端,true表示是,false為否

rs.eof 傳回記錄指針是否超出資料表末端,true表示是,false為否

rs.delete 删除目前記錄,但記錄指針不會向下移動

rs.addnew 添加記錄到資料表末端

rs.update 更新資料表記錄

---------------------------------------

20 Recordset對象方法

Open方法

recordset.Open Source,ActiveConnection,CursorType,LockType,Options

Source

Recordset對象可以通過Source屬性來連接配接Command對象。Source參數可以是一個Command對象名稱、一段SQL指令、一個指 定的資料表名稱或是一個Stored Procedure。假如省略這個參數,系統則采用Recordset對象的Source屬性。

ActiveConnection

Recordset對象可以通過ActiveConnection屬性來連接配接Connection對象。這裡的ActiveConnection可以是一個Connection對象或是一串包含資料庫連接配接資訊(ConnectionString)的字元串參數。

CursorType

Recordset對象Open方法的CursorType參數表示将以什麼樣的遊标類型啟動資料,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:

--------------------------------------------------------------

常數 常數值 說明

-------------------------------------------------------------

adOpenForwardOnly 0 預設值,啟動一個隻能向前移動的遊标(Forward Only)。

adOpenKeyset 1 啟動一個Keyset類型的遊标。

adOpenDynamic 2 啟動一個Dynamic類型的遊标。

adOpenStatic 3 啟動一個Static類型的遊标。

-------------------------------------------------------------

以上幾個遊标類型将直接影響到Recordset對象所有的屬性和方法,以下清單說明他們之間的差別。

-------------------------------------------------------------

Recordset屬性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic

-------------------------------------------------------------

AbsolutePage 不支援 不支援 可讀寫 可讀寫

AbsolutePosition 不支援 不支援 可讀寫 可讀寫

ActiveConnection 可讀寫 可讀寫 可讀寫 可讀寫

BOF 隻讀 隻讀 隻讀 隻讀

Bookmark 不支援 不支援 可讀寫 可讀寫

CacheSize 可讀寫 可讀寫 可讀寫 可讀寫

CursorLocation 可讀寫 可讀寫 可讀寫 可讀寫

CursorType 可讀寫 可讀寫 可讀寫 可讀寫

EditMode 隻讀 隻讀 隻讀 隻讀

EOF 隻讀 隻讀 隻讀 隻讀

Filter 可讀寫 可讀寫 可讀寫 可讀寫

LockType 可讀寫 可讀寫 可讀寫 可讀寫

MarshalOptions 可讀寫 可讀寫 可讀寫 可讀寫

MaxRecords 可讀寫 可讀寫 可讀寫 可讀寫

PageCount 不支援 不支援 隻讀 隻讀

PageSize 可讀寫 可讀寫 可讀寫 可讀寫

RecordCount 不支援 不支援 隻讀 隻讀

Source 可讀寫 可讀寫 可讀寫 可讀寫

State 隻讀 隻讀 隻讀 隻讀

Status 隻讀 隻讀 隻讀 隻讀

AddNew 支援 支援 支援 支援

CancelBatch 支援 支援 支援 支援

CancelUpdate 支援 支援 支援 支援

Clone 不支援 不支援

Close 支援 支援 支援 支援

Delete 支援 支援 支援 支援

GetRows 支援 支援 支援 支援

Move 不支援 支援 支援 支援

MoveFirst 支援 支援 支援 支援

MoveLast 不支援 支援 支援 支援

MoveNext 支援 支援 支援 支援

MovePrevious 不支援 支援 支援 支援

NextRecordset 支援 支援 支援 支援

Open 支援 支援 支援 支援

Requery 支援 支援 支援 支援

Resync 不支援 不支援 支援 支援

Supports 支援 支援 支援 支援

Update 支援 支援 支援 支援

UpdateBatch 支援 支援 支援 支援

--------------------------------------------------------------

其中NextRecordset方法并不适用于Microsoft Access資料庫。

LockType

Recordset對象Open方法的LockType參數表示要采用的Lock類型,如果忽略這個參數,那麼系統會以Recordset對象的 LockType屬性為預設值。LockType參數包含adLockReadOnly、adLockPrssimistic、 adLockOptimistic及adLockBatchOptimistic等,分述如下:

-------------------------------------------------------------

常數 常數值 說明

--------------------------------------------------------------

adLockReadOnly 1 預設值,Recordset對象以隻讀方式啟動,無法運作AddNew、Update及Delete等方法

adLockPrssimistic 2 當資料源正在更新時,系統會暫時鎖住其他使用者的動作,以保持資料一緻性。

adLockOptimistic 3 當資料源正在更新時,系統并不會鎖住其他使用者的動作,其他使用者可以對資料進行增、删、改的操作。

adLockBatchOptimistic 4 當資料源正在更新時,其他使用者必須将CursorLocation屬性改為adUdeClientBatch才能對資料進行增、

删、改的操作。