主頁 > 知識庫 > 超精華的asp代碼大全第1/2頁

超精華的asp代碼大全第1/2頁

熱門標(biāo)簽:團(tuán)購網(wǎng)站 銀行業(yè)務(wù) 電子圍欄 阿里云 Linux服務(wù)器 服務(wù)器配置 科大訊飛語音識別系統(tǒng) Mysql連接數(shù)設(shè)置

顯示頁面加載時間
重復(fù)域中的斑馬線 
顯示字符串前20個字符并在結(jié)尾處添加“……” 
如果動態(tài)圖片為空,使用默認(rèn)圖片代替 
如果數(shù)據(jù)為空,使用默認(rèn)提示信息代替 
顯示頁面加載時間 

頁面頂部添加下面的代碼:

% 
Dim strStartTime 
Dim strEndTime 

strStartTime = Timer '開始時間 
%> 

頁面(同一頁)的末尾添加: 

% 
' 加載完畢的時間 
strEndTime = Timer 

Response.Write ("頁面加載時間: ") 

Response.Write FormatNumber(strEndTime - strStartTime, 4) 
Response.Write (" 秒.") 
%>

重復(fù)域中的斑馬線 

% 
'此模塊放置在重復(fù)域之外 
Dim RecordCounter 
Recordcounter = 0 
%> 

tr class = 
% 
'將重復(fù)域中第一個 tr>標(biāo)簽的CLASS屬性代碼用本模塊替換 
'本模塊基于CSS來改變單元格背景色,你也可以直接設(shè)置背景色來實(shí)現(xiàn)斑馬線 
RecordCounter = Recordcounter + 1 
If RecordCounter Mod 2 = 1 Then 
Response.Write "altRow1" 
Else 
Response.write "altRow2" 
End If 
%> 

顯示字符串前20個字符并在結(jié)尾處添加“……”

% 
Dim CutShort 
CutShort = rsYourRecordset.Fields.Item("YourField").Value 
Response.Write LEFT (CutShort, 20)  "........" 
%> 

如果動態(tài)圖片為空,用默認(rèn)圖片代替

% 
Dim PicShow 
PicShow = rsShowHide.Fields.Item("shMainPix").Value 
IF PicShow >"" THEN %> 
img src="%=rsShowHide.Fields.Item("shMainPix").Value%>"> 
% ELSE %> 
img src="StaticPic.gif"> 
% End If %> 

如果數(shù)據(jù)為空,用默認(rèn)提示信息代替。

% 
Dim strShowHide 
strShowHide = rsYourRecordset.Fields.Item("YourDataField").Value 
IF stShowHide >"" THEN%> 
數(shù)據(jù)為空 
%END IF%> 

純編碼實(shí)現(xiàn)Access數(shù)據(jù)庫的建立或壓縮 

% 
'#######以下是一個類文件,下面的注解是調(diào)用類的方法################################################ 
'# 注意:如果系統(tǒng)不支持建立Scripting.FileSystemObject對象,那么數(shù)據(jù)庫壓縮功能將無法使用 
'# Access 數(shù)據(jù)庫類 
'# CreateDbFile 建立一個Access 數(shù)據(jù)庫文件 
'# CompactDatabase 壓縮一個Access 數(shù)據(jù)庫文件 
'# 建立對象方法: 
'# Set a = New DatabaseTools 
'# by (蕭寒雪) s.f. 
'######################################################################################### 

Class DatabaseTools 

Public function CreateDBfile(byVal dbFileName,byVal DbVer,byVal SavePath) 
'建立數(shù)據(jù)庫文件 
'If DbVer is 0 Then Create Access97 dbFile 
'If DbVer is 1 Then Create Access2000 dbFile 
On error resume Next 
If Right(SavePath,1)>"\" Or Right(SavePath,1)>"/" Then SavePath = Trim(SavePath)  "\" 
If Left(dbFileName,1)="\" Or Left(dbFileName,1)="/" Then dbFileName = Trim(Mid(dbFileName,2,Len(dbFileName))) 
If DbExists(SavePath  dbFileName) Then 
Response.Write ("對不起,該數(shù)據(jù)庫已經(jīng)存在!") 
CreateDBfile = False 
Else 
Dim Ca 
Set Ca = Server.CreateObject("ADOX.Catalog") 
If Err.number>0 Then 
Response.Write ("無法建立,請檢查錯誤信息 
"  Err.number  " 
"  Err.Description) 
Err.Clear 
Exit function 
End If 
If DbVer=0 Then 
call Ca.Create("Provider=Microsoft.Jet.OLEDB.3.51;Data Source="  SavePath  dbFileName) 
Else 
call Ca.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="  SavePath  dbFileName) 
End If 
Set Ca = Nothing 
CreateDBfile = True 
End If 
End function 

Public function CompactDatabase(byVal dbFileName,byVal DbVer,byVal SavePath) 
'壓縮數(shù)據(jù)庫文件 
'0 為access 97 
'1 為access 2000 
On Error resume next 
If Right(SavePath,1)>"\" Or Right(SavePath,1)>"/" Then SavePath = Trim(SavePath)  "\" 
If Left(dbFileName,1)="\" Or Left(dbFileName,1)="/" Then dbFileName = Trim(Mid(dbFileName,2,Len(dbFileName))) 
If DbExists(SavePath  dbFileName) Then 
Response.Write ("對不起,該數(shù)據(jù)庫已經(jīng)存在!") 
CompactDatabase = False 
Else 
Dim Cd 
Set Cd =Server.CreateObject("JRO.JetEngine") 
If Err.number>0 Then 
Response.Write ("無法壓縮,請檢查錯誤信息 
"  Err.number  " 
"  Err.Description) 
Err.Clear 
Exit function 
End If 
If DbVer=0 Then 
call Cd.CompactDatabase("Provider=Microsoft.Jet.OLEDB.3.51;Data Source="  SavePath  dbFileName,"Provider=Microsoft.Jet.OLEDB.3.51;Data 
Source="  SavePath  dbFileName  ".bak.mdb;Jet OLEDB;Encrypt Database=True") 
Else 
call Cd.CompactDatabase("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="  
SavePath  dbFileName,"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="  
SavePath  dbFileName  ".bak.mdb;Jet OLEDB;Encrypt Database=True") 
End If 
'刪除舊的數(shù)據(jù)庫文件 
call DeleteFile(SavePath  dbFileName) 
'將壓縮后的數(shù)據(jù)庫文件還原 
call RenameFile(SavePath  dbFileName  ".bak.mdb",SavePath  dbFileName) 
Set Cd = False 
CompactDatabase = True 
End If 
end function 

Public function DbExists(byVal dbPath) 
'查找數(shù)據(jù)庫文件是否存在 
On Error resume Next 
Dim c 
Set c = Server.CreateObject("ADODB.Connection") 
c.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="  dbPath 
If Err.number>0 Then 
Err.Clear 
DbExists = false 
else 
DbExists = True 
End If 
set c = nothing 
End function 

Public function AppPath() 
'取當(dāng)前真實(shí)路徑 
AppPath = Server.MapPath("./") 
End function 

Public function AppName() 
'取當(dāng)前程序名稱 
AppName = Mid(Request.ServerVariables("SCRIPT_NAME"),(InStrRev(Request.ServerVariables("SCRIPT_NAME") ,"/",-1,1))+1,Len(Request.ServerVariables("SCRIPT_NAME"))) 
End Function 

Public function DeleteFile(filespec) 
'刪除一個文件 
Dim fso 
Set fso = CreateObject("Scripting.FileSystemObject") 
If Err.number>0 Then 
Response.Write("刪除文件發(fā)生錯誤!請查看錯誤信息 
"  Err.number  " 
"  Err.Description) 
Err.Clear 
DeleteFile = False 
End If 
call fso.DeleteFile(filespec) 
Set fso = Nothing 
DeleteFile = True 
End function 

Public function RenameFile(filespec1,filespec2) 
'修改一個文件 
Dim fso 
Set fso = CreateObject("Scripting.FileSystemObject") 
If Err.number>0 Then 
Response.Write("修改文件名時發(fā)生錯誤!請查看錯誤信息 
"  Err.number  " 
"  Err.Description) 
Err.Clear 
RenameFile = False 
End If 
call fso.CopyFile(filespec1,filespec2,True) 
call fso.DeleteFile(filespec1) 
Set fso = Nothing 
RenameFile = True 
End function 

End Class 
%> 

現(xiàn)在已可以壓縮有密碼的數(shù)據(jù)庫,代碼如下,但是壓縮之后的數(shù)據(jù)庫密碼就沒有了!如何解決? 

% 
Const JET_3X = 4 

Function CompactDB(dbPath, boolIs97) 
Dim fso, Engine, strDBPath 
strDBPath = left(dbPath,instrrev(DBPath,"\")) 
Set fso = CreateObject("Scripting.FileSystemObject") 

If fso.FileExists(dbPath) Then 
Set Engine = CreateObject("JRO.JetEngine") 

If boolIs97 = "True" Then 
Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="  dbpath, _ 
"Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password='XXXXXXXX';Data Source="  strDBPath  "temp.mdb;" _ 
 "Jet OLEDB:Engine Type="  JET_3X 
Else 
Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password='XXXXXXXX';Data Source="  dbpath, _ 
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="  strDBPath  "temp.mdb" 
End If 

fso.CopyFile strDBPath  "temp.mdb",dbpath 
fso.DeleteFile(strDBPath  "temp.mdb") 
Set fso = nothing 
Set Engine = nothing 

CompactDB = "你的數(shù)據(jù)庫, "  dbpath  ", 已經(jīng)壓縮成功!"  vbCrLf 

Else 
CompactDB = "數(shù)據(jù)庫名稱或路徑不正確. 請重試!"  vbCrLf 
End If 

End Function 
%> 

asp編程有用的例子(一) 

1.如何用Asp判斷你的網(wǎng)站的虛擬物理路徑 
答:使用Mappath方法 

 p align="center" > font size="4" face="Arial" > b > 
The Physical path to this virtual website is: 
 /b > /font > 
 font color="#FF0000" size="6" face="Arial" > 
 %= 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.如何計(jì)算每天的平均反復(fù)訪問人數(shù) 
答:解決方法 

 % startdate=DateDiff("d",Now,"01/01/1990") 
if strdate 0 then startdate=startdate*-1 
avgvpd=Int((usercnt)/startdate) % > 
顯示結(jié)果 
 % response.write(avgvpd) % > 
that is it.this page have been viewed since November 10,1998 

4.如何顯示隨機(jī)圖象 
 % 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("Http_REFERER")% >" >preivous page /a > 
或用圖片如: img src="arrowback.gif" alt=" %=request.serverVariables("HTTP_REFERER")% >" > 

6.如何確定對方的IP地址 
答: %=Request.serverVariables("REMOTE_ADDR)% > 

7.如何鏈結(jié)到一副圖片上 
答: % @Languages=vbs cript % > 
 % response.expires=0 
strimagename="graphix/errors/erroriamge.gif" 
response.redirect(strimagename) 
% > 

8.強(qiáng)迫輸入密碼對話框 
答:把這句話放載頁面的開頭 
 % 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 程序內(nèi)使用 msgbox,程序出錯說沒有權(quán)限 
答:由于 asp 是服務(wù)器運(yùn)行的,如果可以在服務(wù)器顯示一個對話框,那么你只好等有人按了確定之后,你的程序才能繼續(xù)執(zhí)行,而一般服務(wù)器不會有人守著,所以微軟不得不禁止這個函數(shù),并胡亂告訴你 ( 呵呵) 沒有權(quán)限。但是ASP和客戶端腳本結(jié)合倒可以顯示一個對話框,as follows: 
 % yourVar="測試對話框"% > 
 % s cript language='javas cript' > 
alert(" %=yourvar% >") 
 /s cript > 

11.有沒有辦法保護(hù)自己的源代碼,不給人看到 
答:可以去下載一個微軟的Windows s cript Encoder,它可以對asp的腳本和客戶端javas cript/vbs cript腳本進(jìn)行加密。。。不過客戶端加密后,只有ie5才能執(zhí)行,服務(wù)器端腳本加密后,只有服務(wù)器上安裝有s cript engine 5(裝一個ie5就有了)才能執(zhí)行。 

12.怎樣才能將 query string 從一個 asp 文件傳送到另一個? 
答:前者文件加入下句: Response.Redirect("second.asp?"  Request.ServerVariables("QUERY_STRING")) 

13.global.asa文件總是不起作用? 
答:只有web目錄設(shè)置為web application, global.asa才有效,并且一個web application的根目錄下 global.asa才有效。IIS4可以使用Internet Service Manager設(shè)置application setting 怎樣才能使得htm文件如同asp文件一樣可以執(zhí)行腳本代碼? 

14.怎樣才能使得htm文件如同asp文件一樣可以執(zhí)行腳本代碼? 
答:Internet Sevices Manager - > 選擇default web site - >右鼠鍵- >菜單屬性->主目錄- > 應(yīng)用程序設(shè)置(Application Setting)- > 點(diǎn)擊按鈕 "配置"- > app mapping - >點(diǎn)擊按鈕"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。它需要你在命令行方式下來執(zhí)行,進(jìn)入到包含有DLL的目錄,并輸入:regsvr32 component_name.dll 例如 c:\temp\regsvr32 AspEmail.dll 它會把dll的特定信息注冊入服務(wù)器中的注冊表中。然后這個組件就可以在服務(wù)器上使用了,但是這個方法有一個缺陷。當(dāng)使用這種方法注冊完畢組件后,該組件必須要相應(yīng)的設(shè)置NT的匿名帳號有權(quán)限執(zhí)行這個dll。特別是一些組件需要讀取注冊表,所以,這個注冊組件的方法僅僅是使用在服務(wù)器上沒有MTS的情況下,要取消注冊這個dll,使用:regsvr32 /u aspobject.dll example c:\temp\regsvr32 /u aneiodbc.dll 

第二種方法:使用MTS(Microsoft Transaction Server) MTS是IIS 4新增特色,但是它提供了巨大的改進(jìn)。MTS允許你指定只有有特權(quán)的用戶才能夠訪問組件,大大提高了網(wǎng)站服務(wù)器上的安全性設(shè)置。在MTS上注冊組件的步驟如下: 
1) 打開IIS管理控制臺。 
2) 展開transaction server,右鍵單擊"pkgs installed"然后選擇"new package"。 
3) 單擊"create an empty package"。 
4) 給該包命名。 
5) 指定administrator帳號或則使用"interactive"(如果服務(wù)器經(jīng)常是使用administrator 登陸的話)。 
6) 現(xiàn)在使用右鍵單擊你剛建立的那個包下面展開后的"components"。選擇 "new then component"。 
7) 選擇 "install new component" 。 
8) 找到你的.dll文件然后選擇next到完成。 
要刪除這個對象,只要選擇它的圖標(biāo),然后選擇delete。 
附注:特別要注意第二種方法,它是用來調(diào)試自己編寫組件的最好方法,而不必每次都需要重新啟動機(jī)器了。 

16. ASP與Access數(shù)據(jù)庫連接: 

%@ language=VBs cript%> 

dim conn,mdbfile 
mdbfile=server.mappath("數(shù)據(jù)庫名稱.mdb") 
set conn=server.createobject("adodb.connection") 
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=數(shù)據(jù)庫密碼;dbq="mdbfile 

%> 
接著來,希望大家也參與近來 
------------------------------- 
asp編程有用的例子(二) 
17. ASP與SQL數(shù)據(jù)庫連接: 

%@ language=VBs cript%> 

dim conn 
set conn=server.createobject("ADODB.connection") 
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服務(wù)器名稱或IP地址;UID=sa;PWD=數(shù)據(jù)庫密碼;DATABASE=數(shù)據(jù)庫名稱 
%> 

建立記錄集對象: 

set rs=server.createobject("adodb.recordset") 
rs.open SQL語句,conn,3,2 

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

(1) 數(shù)據(jù)記錄篩選: 

sql="select * from 數(shù)據(jù)表 where 字段名=字段值 order by 字段名 [desc]" 

sql="select * from 數(shù)據(jù)表 where 字段名 like '%字段值%' order by 字段名 [desc]" 

sql="select top 10 * from 數(shù)據(jù)表 where 字段名 order by 字段名 [desc]" 

sql="select * from 數(shù)據(jù)表 where 字段名 in ('值1','值2','值3')" 

sql="select * from 數(shù)據(jù)表 where 字段名 between 值1 and 值2" 

(2) 更新數(shù)據(jù)記錄: 

sql="update 數(shù)據(jù)表 set 字段名=字段值 where 條件表達(dá)式" 

sql="update 數(shù)據(jù)表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達(dá)式" 

(3) 刪除數(shù)據(jù)記錄: 

sql="delete from 數(shù)據(jù)表 where 條件表達(dá)式" 

sql="delete from 數(shù)據(jù)表" (將數(shù)據(jù)表所有記錄刪除) 

(4) 添加數(shù)據(jù)記錄: 

sql="insert into 數(shù)據(jù)表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)" 

sql="insert into 目標(biāo)數(shù)據(jù)表 select * from 源數(shù)據(jù)表" (把源數(shù)據(jù)表的記錄添加到目標(biāo)數(shù)據(jù)表) 

(5) 數(shù)據(jù)記錄統(tǒng)計(jì)函數(shù): 

AVG(字段名) 得出一個表格欄平均值 
COUNT(*字段名) 對數(shù)據(jù)行數(shù)的統(tǒng)計(jì)或?qū)δ骋粰谟兄档臄?shù)據(jù)行數(shù)統(tǒng)計(jì) 
MAX(字段名) 取得一個表格欄最大的值 
MIN(字段名) 取得一個表格欄最小的值 
SUM(字段名) 把數(shù)據(jù)欄的值相加 

引用以上函數(shù)的方法: 

sql="select sum(字段名) as 別名 from 數(shù)據(jù)表 where 條件表達(dá)式" 
set rs=conn.excute(sql) 

用 rs("別名") 獲取統(tǒng)的計(jì)值,其它函數(shù)運(yùn)用同上。 

(5) 數(shù)據(jù)表的建立和刪除: 

CREATE TABLE 數(shù)據(jù)表名稱(字段1 類型1(長度),字段2 類型2(長度) …… ) 

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

DROP TABLE 數(shù)據(jù)表名稱 (永久性刪除一個數(shù)據(jù)表) 

19. 記錄集對象的方法: 

rs.movenext 將記錄指針從當(dāng)前的位置向下移一行 
rs.moveprevious 將記錄指針從當(dāng)前的位置向上移一行 
rs.movefirst 將記錄指針移到數(shù)據(jù)表第一行 
rs.movelast 將記錄指針移到數(shù)據(jù)表最后一行 
rs.absoluteposition=N 將記錄指針移到數(shù)據(jù)表第N行 
rs.absolutepage=N 將記錄指針移到第N頁的第一行 
rs.pagesize=N 設(shè)置每頁為N條記錄 
rs.pagecount 根據(jù) pagesize 的設(shè)置返回總頁數(shù) 
rs.recordcount 返回記錄總數(shù) 
rs.bof 返回記錄指針是否超出數(shù)據(jù)表首端,true表示是,false為否 
rs.eof 返回記錄指針是否超出數(shù)據(jù)表末端,true表示是,false為否 
rs.delete 刪除當(dāng)前記錄,但記錄指針不會向下移動 
rs.addnew 添加記錄到數(shù)據(jù)表末端 
rs.update 更新數(shù)據(jù)表記錄 

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

20 Recordset對象方法 

Open方法 

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

Source 
Recordset對象可以通過Source屬性來連接Command對象。Source參數(shù)可以是一個Command對象名稱、一段SQL命令、一個指定的數(shù)據(jù)表名稱或是一個Stored Procedure。假如省略這個參數(shù),系統(tǒng)則采用Recordset對象的Source屬性。 

ActiveConnection 
Recordset對象可以通過ActiveConnection屬性來連接Connection對象。這里的ActiveConnection可以是一個Connection對象或是一串包含數(shù)據(jù)庫連接信息(ConnectionString)的字符串參數(shù)。 

CursorType 
Recordset對象Open方法的CursorType參數(shù)表示將以什么樣的游標(biāo)類型啟動數(shù)據(jù),包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下: 
-------------------------------------------------------------- 
常數(shù) 常數(shù)值 說明 
------------------------------------------------------------- 
adOpenForwardOnly 0 缺省值,啟動一個只能向前移動的游標(biāo)(Forward Only)。 
adOpenKeyset 1 啟動一個Keyset類型的游標(biāo)。 
adOpenDynamic 2 啟動一個Dynamic類型的游標(biāo)。 
adOpenStatic 3 啟動一個Static類型的游標(biāo)。 
------------------------------------------------------------- 
以上幾個游標(biāo)類型將直接影響到Recordset對象所有的屬性和方法,以下列表說明他們之間的區(qū)別。 

------------------------------------------------------------- 
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數(shù)據(jù)庫。 

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

------------------------------------------------------------- 
常數(shù) 常數(shù)值 說明 
-------------------------------------------------------------- 
adLockReadOnly 1 缺省值,Recordset對象以只讀方式啟動,無法運(yùn)行AddNew、Update及Delete等方法 
adLockPrssimistic 2 當(dāng)數(shù)據(jù)源正在更新時,系統(tǒng)會暫時鎖住其他用戶的動作,以保持?jǐn)?shù)據(jù)一致性。 
adLockOptimistic 3 當(dāng)數(shù)據(jù)源正在更新時,系統(tǒng)并不會鎖住其他用戶的動作,其他用戶可以對數(shù)據(jù)進(jìn)行增、刪、改的操作。 
adLockBatchOptimistic 4 當(dāng)數(shù)據(jù)源正在更新時,其他用戶必須將CursorLocation屬性改為adUdeClientBatch才能對數(shù)據(jù)進(jìn)行增、 
刪、改的操作。 
將你的網(wǎng)站設(shè)置為客戶的信任站點(diǎn)--WSH方案 

ar SiteName="Acmnet" 
SetTrustSite(SiteName); 
WScript.Echo("You have accept 'http://acmnet/' as your Trusted Site"); 


function SetTrustSite(StrSiteName) 

var WshShell=WScript.CreateObject("WScript.Shell"); 
WshShell.RegWrite("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Domains\\"+StrSiteName+"\\http", 2 ,"REG_DWORD"); 
TrustedSite_Value=WshShell.RegRead("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Domains\\"+StrSiteName+"\\http"); 
delete WshShell; 

如何在服務(wù)器端調(diào)用winzip命令行對上傳的多個文件打包壓縮 
------------------------------------------- 
如何在服務(wù)器端調(diào)用winzip命令行對上傳的多個文件打包壓縮? 

要解決這個問題,首先要了解一下Windows Scripting Host,簡稱為WSH!下面引用一下微軟給的解釋: 
************************************************************************ 
* WSH是微軟腳本技術(shù)系列中的一種,簡單講,就是提供了一種腳本環(huán)境, * 
* 在這個環(huán)境中,預(yù)定義了一些對象,同時也可以使用COM里的其他對象。 * 
* 他使用一種腳本引擎來對腳本解釋執(zhí)行,微軟自己支持VBSCRIPT和JSCRIPT, * 
* 第三方也可以開發(fā)自己的腳本引擎。 * 
************************************************************************ 
具體點(diǎn),就是你先編好一些腳本文件(微軟自帶例子若干,后綴.vbs或 .js), 
然后用一個程序?qū)λ忉寛?zhí)行,這個程序就叫Windows Scripting Host,程序 
的名字是Wscript.exe(或者命令行的Cscript.exe),你可以查看一下你的機(jī)器 
里有沒有這兩個文件,就知道有沒有WSH了。(win2000是在winnt/system32/下) 
這非常像批處理文件,只不過文件里不是命令行,而是腳本語言寫的腳本。 

再來簡單介紹一下WSH自帶的幾個內(nèi)置對象包括: 

1.由 Wscript.exe 提供的對象 
Wscript 作為 Wscript 公開給腳本引擎。 
WshArguments 未公開;通過 Wscript.Arguments 屬性訪問。 入 

2.由 WSHom.Ocx 提供的對象。 
WshShell 自動對象。ProgID 是 Wscript.WshShell。 
(注:這個就是我們要用到的,可以執(zhí)行dos命令) 
WshNetwork 自動對象。ProgID 是 Wscript.WshNetwork。 
WshShortcut 未公開;通過 WshShell.CreateShortcut 方法訪問。 
WshUrlShortcut 未公開;通過 WshShell.CreateShortcut 方法訪問。 
WshCollection 未公開;通過 WshNetwork.EnumNetworkDrives 或 WshNetwork.EnumPrinterConnection 方法訪問。 
WshEnvironment 未公開;通過 WshShell.Environment 屬性訪問。 
WshSpecialFolders 未公開;通過 WshShell.Folder 屬性訪問。 

他們主要可以完成環(huán)境變量的獲取,網(wǎng)絡(luò)登陸,驅(qū)動器映射,快截方式創(chuàng)建, 
程序加載,特殊文件夾(如系統(tǒng)文件夾)信息獲取等功能。 

如果你的系統(tǒng)里支持ADO等COM部件,你同樣可以使用, 
下面這個例子演示打開寫字板查看文本文件,同時創(chuàng)建一個文本文件并寫入一 
段話,你可以把他拷貝到寫字板中,然后以.vbs為后綴存盤,之后雙擊他, 

'test.vbs 
'********************* 
'下面用SHELL對象啟動程序 
'********************* 
Set WshShell = Wscript.CreateObject("Wscript.Shell") 
WshShell.Run ("notepad "  Wscript.ScriptFullName) 


'*********************************************** 
'用COM對象Scripting.FileSystemObject操作文本文件 
'*********************************************** 
Set fs = Wscript.CreateObject("Scripting.FileSystemObject") 
Set a = fs.CreateTextFile("c:\testfile.txt", True) 
a.WriteLine("這是一個測試。") 
a.Close 

也可以在asp等web編程語言中應(yīng)用 
script language="VBScript.Encode" runat=server> 
'上面用SHELL對象啟動程序 
Set WshShell = server.CreateObject("Wscript.Shell") 
IsSuccess = WshShell.Run ("D:\winnt\system32\cmd.exe" ,1, true) 
if IsSuccess = 0 Then 
Response.write " 命令成功執(zhí)行!" 
else 
Response.write " 命令執(zhí)行失敗!權(quán)限不夠或者該程序無法在DOS狀態(tài)下運(yùn)行" 
end if 
/script> 
注: 
1.其中runat=server必須要有 
2.Set WshShell = Wscript.CreateObject("Wscript.Shell") 
要改為Set WshShell = server.CreateObject("Wscript.Shell"), 
3.參數(shù)1代表SW_SHOWNORMAL, 激活并顯示一個窗口。若窗口是最小化或最大化,則恢復(fù)到其原來的大小和位置。 
4.TRUE代表返回執(zhí)行的錯誤,F(xiàn)alse或者為指定代表腳本繼續(xù)執(zhí)行而不等待進(jìn)程結(jié)束。 
5.調(diào)用WSH的內(nèi)置對象了,可以象調(diào)用函數(shù)和過程一樣。 
如call WshShell.Run ("D:\winnt\system32\cmd.exe" ,1, true) 

如果你對WSH感興趣,想了解更多的話,請察看 
http://msdn.microsoft.com/library/default....onwshbasics.asp 
http://www.dev-club.com/club/bbs/showEssence.asp?id=11136 

現(xiàn)在我們言歸正傳來看看如何對文件進(jìn)行壓縮和解壓! 
大家都知道winzip對文件解壓和壓縮都易如反掌,但是如何通過程序和命令行對其調(diào)用呢? 
當(dāng)然winzip的作者已經(jīng)開發(fā)出 
WinZip Command Line Support Add-On Version 1.0 
大家去可以去http://www.winzip.com/wzcline.htm 下載wzcline.exe! 
前提是本機(jī)須安裝winzip8.0或更高版本的支持,如果你不是winzip8.0,去 
http://www.winzip.com/download.htm 下載! 

下載后,直接安裝就可以! 
就會在winzip的目錄中產(chǎn)生winzip命令行幫助文件和程序WZZIP.exe,WZUNZIP.EXE。 
你可以開始運(yùn)行里調(diào)用: 
如:"c:\program files\winzip\wzzip" myfile.zip 
也可以拷貝這里兩個文件到任意目錄下,直接在dos窗口下運(yùn)行 
如:wzzip.exe myfile.zip 
你可以在系統(tǒng)的環(huán)境變量里加入set path=c:\windows;c:\program files\winzip; 
就可以在任何地方不用加入路經(jīng)調(diào)用了! 

現(xiàn)在來簡單的了解一下幫助中兩個命令的基本用法 
壓縮文件用 WZZIP.exe : 
通用格式:wzzip [options] zipfile [@listfile] [files...] 
[options]包括: 
-a 默認(rèn)的操作,壓縮文件 
-a+ 壓縮文件,并刪除要壓縮的文件 
-b[drivepath] 是在另外的驅(qū)動器上創(chuàng)建臨時壓縮文件 
-d 刪除zip文件中指定的目標(biāo)文件 
-exnfs0> 是設(shè)置壓縮比率,x最大,0最小 
-f 替換zip文件中存在的文件 
-h-? 察看幫助 
-v 創(chuàng)建一個壓縮文件的列表信息 
-@list 先創(chuàng)建一個包含所有要解壓的文件的文件,然后按所包含的的文件名壓縮 
...............(其他具體看幫助文件) 
[@listfile] 是壓縮文件的列表信息紀(jì)錄 
[files...] 則是要壓縮的多個文件,用空格隔開,也可以用通配符 

例: 
壓縮當(dāng)前目錄的所有文件 
wzzip test.zip *.* 
壓縮類型為txt的所有文件 
wzzip test.zip *.txt 
壓縮兩個文件 
wzzip test.zip abc.txt def.txt 
壓縮類型為txt的所有文件除了abc.txt 
wzzip -xABC.TXT test.zip *.txt 
壓縮D:\docs下的所有類型為txt的文件及子目錄 
wzzip -rp test.zip d:\docs\*.txt 
把zipit.1st里的文件更新到test.zip 
wzzip -u test.zip @Zipit.lst 
列出一個壓縮文件的列表內(nèi)容 
wzzip -v test.zip 


解壓文件用WZUNZIP.exe : 
通過格式:wzunzip [options] zipfile [@listfile] [path] [files...] 
[options]包括: 
-c[m] 解壓是顯示文件列表在dos屏幕中 
-d 重建zip文件中的目錄結(jié)構(gòu) 
-f 只解壓在zip文件里同目前文件夾存在的同名的文件,如果沒有則不解壓 
-jhrs 忽視zip文件里的文件的隱藏、只讀、系統(tǒng)屬性 
-Jhrs 只解壓帶有隱藏、只讀、系統(tǒng)屬性的文件 
-n 只解壓叫新的文件,如果要解壓的文件比已存在的新則替換。 
-o 不用通過yes來確定是否要替換文件 
-v 創(chuàng)建一個壓縮文件的列表信息 
-@list 先創(chuàng)建一個包含所有要解壓的文件的文件,然后按所包含的的文件名解壓 
...............(其他具體看幫助文件) 
例如: 
創(chuàng)建所有文件到當(dāng)前目錄下 
wzunzip test.zip 
從test.zip中創(chuàng)建abc.txt到當(dāng)前目錄下 
wzunzip test.zip abc.txt 
創(chuàng)建在test.zip中的目錄結(jié)構(gòu)及文件到當(dāng)前目錄下 
wzunzip -d test.zip 
創(chuàng)建在test.zip中的目錄結(jié)構(gòu)及文件到c:\docs下 
wzunzip -d test.zip c:\docs從test.zip中創(chuàng)建包含在files.ist中的文件名的文件 
wzunzip test.zip @files.lst 
顯示test.zip的文件列表內(nèi)容 
wzunzip -v test.zip 
顯示壓縮文件中所有類型為txt的文件列表內(nèi)容 
wzunzip -v test.zip *.txt 


有了以上的準(zhǔn)備,那么我們現(xiàn)在來編寫VBS來執(zhí)行文件解壓和壓縮就易如反掌了: 
'test.vbs 
'********************* 
'上面用SHELL對象啟動程序 
'********************* 
Set WshShell = Wscript.CreateObject("Wscript.Shell") 
WshShell.Run ("c:\wzzip.exe c:\test.zip c:\a.txt c:\b.txt") 


'test.asp 
'********************* 
'上面用SHELL對象啟動程序 
'********************* 
script language="VBScript.Encode" runat=server> 
'上面用SHELL對象啟動程序 
Set WshShell = server.CreateObject("Wscript.Shell") 
IsSuccess = WshShell.Run (" c:\wzzip.exe c:\test.zip c:\a.txt c:\b.txt" ,1, true) 
if IsSuccess = 0 Then 
Response.write " 命令成功執(zhí)行!" 
else 
Response.write " 命令執(zhí)行失敗!權(quán)限不夠或者該程序無法在DOS狀態(tài)下運(yùn)行" 
end if 
/script> 
利用ASP遠(yuǎn)程注冊DLL的方法 
-------------------------- 
% Response.Buffer = True %> 
% Server.ScriptTimeout = 500 
Dim frmFolderPath, frmFilePath 

frmFolderPath = Request.Form("frmFolderPath") 
frmFilePath = Request.Form("frmDllPath") 
frmMethod = Request.Form("frmMethod") 
btnREG = Request.Form("btnREG") 
%> 

HTML> 
HEAD> 
TITLE>Regsvr32.asp/TITLE> 
STYLE TYPE="TEXT/CSS"> 
.Legend {FONT-FAMILY: veranda; FONT-SIZE: 14px; FONT-WEIGHT: bold; COLOR: blue} 
.FS {FONT-FAMILY: veranda; FONT-SIZE: 12px; BORDER-WIDTH: 4px; BORDER-COLOR: green; 
MARGIN-LEFT:2px; MARGIN-RIGHT:2px} 
TD {MARGIN-LEFT:6px; MARGIN-RIGHT:6px; PADDING-LEFT:12px; PADDING-RIGHT:12px} 
/STYLE> 
/HEAD> 

BODY> 
FORM NAME="regForm" METHOD="POST"> 
TABLE BORDER=0 CELLSPACING=6 CELLPADDING=6 MARGINWIDTH=6> 
TR> 
TD VALIGN=TOP> 
FIELDSET ID=FS1 NAME=FS1 CLASS=FS> 
LEGEND CLASS=Legend>Regsvr Functions/LEGEND> 
Insert Path to DLL DirectoryBR> 
INPUT TYPE=TEXT NAME="frmFolderPath" VALUE="%=frmFolderPath%>">BR> 
INPUT TYPE=SUBMIT NAME=btnFileList VALUE="Build File List">BR> 

IF Request.Form("btnFileList") > "" OR btnREG > "" Then 
Set RegisterFiles = New clsRegister 
RegisterFiles.EchoB("B>Select File/B>") 
Call RegisterFiles.init(frmFolderPath) 
RegisterFiles.EchoB("BR>INPUT TYPE=SUBMIT NAME=btnREG VALUE="  Chr(34) _ 
 "REG/UNREG"  Chr(34)  ">") 
IF Request.Form("btnREG") > "" Then 
Call RegisterFiles.Register(frmFilePath, frmMethod) 
End IF 
Set RegisterFiles = Nothing 
End IF 
%> 
/FIELDSET> 
/TD> 
/TR> 
/TABLE> 
/FORM> 
/BODY> 
/HTML> 

Class clsRegister 

Private m_oFS 

Public Property Let oFS(objOFS) 
m_oFS = objOFS 
End Property 

Public Property Get oFS() 
Set oFS = Server.CreateObject("Scripting.FileSystemObject") 
End Property 


Sub init(strRoot) 'Root to Search (c:, d:, e:) 
Dim oDrive, oRootDir 
IF oFS.FolderExists(strRoot) Then 
IF Len(strRoot)  3 Then 'Must Be a Drive 
Set oDrive = oFS.GetDrive(strRoot) 
Set oRootDir = oDrive.RootFolder 
Else 
Set oRootDir = oFS.GetFolder(strRoot) 
End IF 
Else 
EchoB("B>Folder ( "  strRoot  " ) Not Found.") 
Exit Sub 
End IF 
setRoot = oRootDir 

Echo("SELECT NAME="  Chr(34)  "frmDllPath"  Chr(34)  ">") 
Call getAllDlls(oRootDir) 
EchoB("/SELECT>") 
BuildOptions 
End Sub 

Sub getAllDlls(oParentFolder) 
Dim oSubFolders, oFile, oFiles 
Set oSubFolders = oParentFolder.SubFolders 
Set opFiles = oParentFolder.Files 

For Each oFile in opFiles 
IF Right(lCase(oFile.Name), 4) = ".dll" OR Right(lCase(oFile.Name), 4) = ".ocx" Then 
Echo("OPTION VALUE="  Chr(34)  oFile.Path  Chr(34)  ">" _ 
 oFile.Name  "/Option>") 
End IF 
Next 

On Error Resume Next 
For Each oFolder In oSubFolders 'Iterate All Folders in Drive 
Set oFiles = oFolder.Files 
For Each oFile in oFiles 
IF Right(lCase(oFile.Name), 4) = ".dll" OR Right(lCase(oFile.Name), 4) = ".ocx" Then 
Echo("OPTION VALUE="  Chr(34)  oFile.Path  Chr(34)  ">" _ 
 oFile.Name  "/Option>") 
End IF 
Next 
Call getAllDlls(oFolder) 
Next 
On Error GoTo 0 
End Sub 

Sub Register(strFilePath, regMethod) 
Dim theFile, strFile, oShell, exitcode 
Set theFile = oFS.GetFile(strFilePath) 
strFile = theFile.Path 

Set oShell = CreateObject ("WScript.Shell") 

IF regMethod = "REG" Then 'Register 
oShell.Run "c:\WINNT\system32\regsvr32.exe /s "  strFile, 0, False 
exitcode = oShell.Run("c:\WINNT\system32\regsvr32.exe /s "  strFile, 0, False) 
EchoB("regsvr32.exe exitcode = "  exitcode) 
Else 'unRegister 
oShell.Run "c:\WINNT\system32\regsvr32.exe /u/s "  strFile, 0, False 
exitcode = oShell.Run("c:\WINNT\system32\regsvr32.exe /u/s "  strFile, 0, False) 
EchoB("regsvr32.exe exitcode = "  exitcode) 
End IF 

Cleanup oShell 
End Sub 

Sub BuildOptions 
EchoB("Register: INPUT TYPE=RADIO NAME=frmMethod VALUE=REG CHECKED>") 
EchoB("unRegister: INPUT TYPE=RADIO NAME=frmMethod VALUE=UNREG>") 
End Sub 

Function Echo(str) 
Echo = Response.Write(str  vbCrLf) 
End Function 

Function EchoB(str) 
EchoB = Response.Write(str  "BR>"  vbCrLf) 
End Function 

Sub Cleanup(obj) 
If isObject(obj) Then 
Set obj = Nothing 
End IF 
End Sub 

Sub Class_Terminate() 
Cleanup oFS 
End Sub 
End Class 
%> 

12下一頁閱讀全文

標(biāo)簽:萍鄉(xiāng) 廣元 大理 蚌埠 棗莊 江蘇 衢州 衡水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《超精華的asp代碼大全第1/2頁》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266