1. oncontextmenu="window.event.returnvalue=false" 將徹底屏蔽鼠標右鍵
<table border oncontextmenu=return(false)><td>no</table> 可用于Table
2. <body onselectstart="return false"> 取消選取、防止復制
3. onpaste="return false" 不準粘貼
4. oncopy="return false;" oncut="return false;" 防止復制
5. <link rel="Shortcut Icon" href="favicon.ico"> IE地址欄前換成自己的圖標
6. <link rel="Bookmark" href="favicon.ico"> 可以在收藏夾中顯示出你的圖標
7. <input style="ime-mode:disabled"> 關(guān)閉輸入法
8. 永遠都會(huì )帶著(zhù)框架
<script language="javascript"><!--
if (window == top)top.location.href = "frames.htm"; //frames.htm為框架網(wǎng)頁(yè)
// --></script>
9. 防止被人frame
<SCRIPT LANGUAGE=javascript><!--
if (top.location != self.location)top.location=self.location;
// --></SCRIPT>
10. <noscript><iframe src=*.html></iframe></noscript> 網(wǎng)頁(yè)將不能被另存為
11. <input type=button value=查看網(wǎng)頁(yè)源代碼
onclick="window.location = ‘view-source:‘+ ‘http://www.csdn.net/‘">
12. 怎樣通過(guò)asp的手段來(lái)檢查來(lái)訪(fǎng)者是否用了代理
<% if Request.ServerVariables("HTTP_X_FORWARDED_FOR")<>"" then
response.write "<font color=#FF0000>您通過(guò)了代理服務(wù)器,"& _
"真實(shí)的IP為"&Request.ServerVariables("HTTP_X_FORWARDED_FOR")
end if
%>
13. 取得控件的絕對位置
//javascript
<script language="javascript">
function getIE(e){
var t=e.offsetTop;
var l=e.offsetLeft;
while(e=e.offsetParent){
t+=e.offsetTop;
l+=e.offsetLeft;
}
alert("top="+t+"\nleft="+l);
}
</script>
//VBScript
<script language="VBScript"><!--
function getIE()
dim t,l,a,b
set a=document.all.img1
t=document.all.img1.offsetTop
l=document.all.img1.offsetLeft
while a.tagName<>"BODY"
set a = a.offsetParent
t=t+a.offsetTop
l=l+a.offsetLeft
wend
msgbox "top="&t&chr(13)&"left="&l,64,"得到控件的位置"
end function
--></script>
14. 光標是停在文本框文字的最后
<script language="javascript">
function cc()
{
var e = event.srcElement;
var r =e.createTextRange();
r.moveStart(‘character‘,e.value.length);
r.collapse(true);
r.select();
}
</script>
<input type=text name=text1 value="123" onfocus="cc()">
15. 判斷上一頁(yè)的來(lái)源
asp:
request.servervariables("HTTP_REFERER")
javascript:
document.referrer
16. 最小化、最大化、關(guān)閉窗口
<object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Minimize"></object>
<object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">
<param name="Command" value="Maximize"></object>
<OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM NAME="Command" value="Close"></OBJECT>
<input type=button value=最小化 onclick=hh1.Click()>
<input type=button value=最大化 onclick=hh2.Click()>
<input type=button value=關(guān)閉 onclick=hh3.Click()>
本例適用于IE
17.
<%
‘定義數據庫連接的一些常量
Const adOpenForwardOnly = 0 ‘游標只向前瀏覽記錄,不支持分頁(yè)、Recordset、BookMark
Const adOpenKeyset = 1 ‘鍵集游標,其他用戶(hù)對記錄說(shuō)做的修改將反映到記錄集中,但其他用戶(hù)增加或刪除記錄不會(huì )反映到記錄集中。支持分頁(yè)、Recordset、BookMark
Const adOpenDynamic = 2 ‘動(dòng)態(tài)游標功能最強,但耗資源也最多。用戶(hù)對記錄說(shuō)做的修改,增加或刪除記錄都將反映到記錄集中。支持全功能瀏覽(ACCESS不支持)。
Const adOpenStatic = 3 ‘靜態(tài)游標,只是數據的一個(gè)快照,用戶(hù)對記錄說(shuō)做的修改,增加或刪除記錄都不會(huì )反映到記錄集中。支持向前或向后移動(dòng)
Const adLockReadOnly = 1 ‘鎖定類(lèi)型,默認的,只讀,不能作任何修改
Const adLockPessimistic = 2 ‘當編輯時(shí)立即鎖定記錄,最安全的方式
Const adLockOptimistic = 3 ‘只有在調用Update方法時(shí)才鎖定記錄集,而在此前的其他操作仍可對當前記錄進(jìn)行更改、插入和刪除等
Const adLockBatchOptimistic = 4 ‘當編輯時(shí)記錄不會(huì )被鎖定,而更改、插入和刪除是在批處理方式下完成的
Const adCmdText = &H0001
Const adCmdTable = &H0002
%>
18. 網(wǎng)頁(yè)不會(huì )被緩存
HTM網(wǎng)頁(yè)
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
或者<META HTTP-EQUIV="expires" CONTENT="0">
ASP網(wǎng)頁(yè)
Response.Expires = -1
Response.ExpiresAbsolute = Now() - 1
Response.cachecontrol = "no-cache"
PHP網(wǎng)頁(yè)
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
19. 檢查一段字符串是否全由數字組成
<script language="javascript"><!--
function checkNum(str){return str.match(/\D/)==null}
alert(checkNum("1232142141"))
alert(checkNum("123214214a1"))
// --></script>
20. 獲得一個(gè)窗口的大小
document.body.clientWidth,document.body.clientHeight
21. 怎么判斷是否是字符
if (/[^\x00-\xff]/g.test(s)) alert("含有漢字");
else alert("全是字符");
22.TEXTAREA自適應文字行數的多少
<textarea rows=1 name=s1 cols=27 onpropertychange="this.style.posHeight=this.scrollHeight">
</textarea>
23. 日期減去天數等于第二個(gè)日期
<script language=javascript>
function cc(dd,dadd)
{
//可以加上錯誤處理
var a = new Date(dd)
a = a.valueOf()
a = a - dadd * 24 * 60 * 60 * 1000
a = new Date(a)
alert(a.getFullYear() + "年" + (a.getMonth() + 1) + "月" + a.getDate() + "日")
}
cc("12/23/2002",2)
</script>
24. 選擇了哪一個(gè)Radio
<HTML><script language="vbscript">
function checkme()
for each ob in radio1
if ob.checked then window.alert ob.value
next
end function
</script><BODY>
<INPUT name="radio1" type="radio" value="style" checked>Style
<INPUT name="radio1" type="radio" value="barcode">Barcode
<INPUT type="button" value="check" onclick="checkme()">
</BODY></HTML>
25.獲得本頁(yè)url的request.servervariables("")集合
Response.Write "<TABLE border=1><!-- Table Header --><TR><TD><B>Variables</B></TD><TD><B>value</B></TD></TR>"
for each ob in Request.ServerVariables
Response.Write "<TR><TD>"&ob&"</TD><TD>"&Request.ServerVariables(ob)&"</TD></TR>"
next
Response.Write "</TABLE>"
26.
本機ip<%=request.servervariables("remote_addr")%>
服務(wù)器名<%=Request.ServerVariables("SERVER_NAME")%>
服務(wù)器IP<%=Request.ServerVariables("LOCAL_ADDR")%>
服務(wù)器端口<%=Request.ServerVariables("SERVER_PORT")%>
服務(wù)器時(shí)間<%=now%>
IIS版本<%=Request.ServerVariables"SERVER_SOFTWARE")%>
腳本超時(shí)時(shí)間<%=Server.ScriptTimeout%>
本文件路徑<%=server.mappath(Request.ServerVariables("SCRIPT_NAME"))%>
服務(wù)器CPU數量<%=Request.ServerVariables("NUMBER_OF_PROCESSORS")%>
服務(wù)器解譯引擎<%=ScriptEngine & "/"& ScriptEngineMajorVersion &"."&ScriptEngineMinorVersion&"."& ScriptEngineBuildVersion %>
服務(wù)器操作系統<%=Request.ServerVariables("OS")%>
27.ENTER鍵可以讓光標移到下一個(gè)輸入框
<input onkeydown="if(event.keyCode==13)event.keyCode=9">
28. 檢測某個(gè)網(wǎng)站的鏈接速度:
把如下代碼加入<body>區域中:
<script language=javascript>
tim=1
setInterval("tim++",100)
b=1
var autourl=new Array() function butt(){ 29. 各種樣式的光標 2.修改contentType并下載gif等格式 set s=CreateObject(Adodb.Stream) call dl(012922501.gif,t1.gif) 3.如何計算每天的平均反復訪(fǎng)問(wèn)人數 4.如何顯示隨機圖象 5.如何回到先前的頁(yè)面 6.如何確定對方的IP地址 7.如何鏈結到一副圖片上 8.強迫輸入密碼對話(huà)框 9.如何傳遞變量從一頁(yè)到另一頁(yè) 10.為何我在 asp 程序內使用 msgbox,程序出錯說(shuō)沒(méi)有權限 11.有沒(méi)有辦法保護自己的源代碼,不給人看到 12.怎樣才能將 query string 從一個(gè) asp 文件傳送到另一個(gè)? 13.global.asa文件總是不起作用? 14.怎樣才能使得htm文件如同asp文件一樣可以執行腳本代碼? 15.如何注冊組件 第二種方法:使用MTS(Microsoft Transaction Server) MTS是IIS 4新增特色,但是它提供了巨大的改進(jìn)。MTS允許你指定只有有特權的用戶(hù)才能夠訪(fǎng)問(wèn)組件,大大提高了網(wǎng)站服務(wù)器上的安全性設置。在MTS上注冊組件的步驟如下: 16. ASP與Access數據庫連接: <%@ language=vb-script%> %> 17. ASP與SQL數據庫連接: <%@ language=vb-script%> 建立記錄集對象: set rs=server.createobject("adodb.recordset") (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(字段名) 得出一個(gè)表格欄平均值 引用以上函數的方法: sql="select sum(字段名) as 別名 from 數據表 where 條件表達式" 用 rs("別名") 獲取統的計值,其它函數運用同上。 (5) 數據表的建立和刪除: CREATE TABLE 數據表名稱(chēng)(字段1 類(lèi)型1(長(cháng)度),字段2 類(lèi)型2(長(cháng)度) …… ) 例:CREATE TABLE tab01(name varchar(50),datetime default now()) DROP TABLE 數據表名稱(chēng) (永久性刪除一個(gè)數據表) 19. 記錄集對象的方法: rs.movenext 將記錄指針從當前的位置向下移一行 --------------------------------------- 20 Recordset對象方法 Open方法 recordset.Open Source,ActiveConnection,CursorType,LockType,Options Source ActiveConnection CursorType ------------------------------------------------------------- LockType ------------------------------------------------------------- checkbox全選 轉貼經(jīng)典實(shí)用的代碼: 2、用JScript彈出提示框然后跳轉到指定頁(yè)面 3、頁(yè)面摘入等待。。。。腳本說(shuō)明: 4、在Text直接修改記錄,然后點(diǎn)修改保存記錄 5、自動(dòng)計算問(wèn)題: 2,用SQL關(guān)鍵字做表名或字段名 4,在查詢(xún)語(yǔ)句中采用的對比字段值與字段類(lèi)型不符 5,未檢查變量值而出錯 6,未檢查變量值類(lèi)型而出錯 這也可以有效防止 sql injection 漏洞攻擊。 7,由于數據庫文件所在目錄的NTFS權限而引起的 不能更新。數據庫或對象為只讀"錯誤。 <% wek= Weekday(date()) yue=month(date()) ‘response.write "本月共"&tiancount&"天,今天是"&wekday&" ’去掉字符串頭尾的連續的回車(chē)和空格 ’去掉字符串開(kāi)頭的連續的回車(chē)和空格 ’去掉字符串末尾的連續的回車(chē)和空格 ’判斷Email是否有效,返回1表示正確 ’測試用:顯示服務(wù)器信息 ’測試用:顯示Rs結果集以及字段名稱(chēng) ’用HTML格式顯示文本 ’測試用:顯示調試錯誤信息 ’顯示文字計數器 <script language=Javascript> 只能輸漢字:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,‘‘)" onbeforepaste="clipboardData.setData(‘text‘,clipboardData.getData(‘text‘).replace(/[^\u4E00-\u9FA5]/g,‘‘))" 只能輸入數字:onkeyup="value=value.replace(/[^\d]/g,‘‘) "onbeforepaste="clipboardData.setData(‘text‘,clipboardData.getData(‘text‘).replace(/[^\d]/g,‘‘))" 數字和英文:onkeyup="value=value.replace(/[\W]/g,‘‘) "onbeforepaste="clipboardData.setData(‘text‘,clipboardData.getData(‘text‘).replace(/[^\d]/g,‘‘))" OLEDB鏈接 而我們在一般情況下使用Access的數據庫比較多,在這里我建議大家連接Access數據庫使用下面的方法: height: 150%; font-style:italic; font-weight:bold" scrollamount="2" width="206" height="207" bgcolor="#FFFF00">hhhhhhhhhhhhhhhhhhh</marquee> 可以修改數字,限制調用個(gè)數,我這里是60個(gè). var limit="0:10" if (document.images){ window.onload=beginrefresh 11.ACCESS數據庫連接: 這里是Ctrl+Enter和Alt+S的代碼 自己查下鍵盤(pán)的ASCII碼再換就行! 14.讓層不被控件復蓋代碼: index:2"><table height=100% width=100% bgcolor="#ff0000"><tr><td height=100% width=100% ></td></tr></table><iframe width=0 height=0></iframe></div> index:1"><iframe height=100% width=100%></iframe></div> codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0 ,0" width="468" height="60"><param name=movie value="images/yj16d.swf"><param name=quality value=high><embed src="images/dvbanner.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi? P1_Prod_Version=ShockwaveFlash"; type="application/x-shockwave-flash" width="468" height="60"></embed></object> 語(yǔ)法 參數 CERT_ISSUER 用戶(hù)驗證中的頒布者字段(O=MS,OU=IAS,CN=user name,C=USA)。 HTTPS 如果請求穿過(guò)安全通道(SSL),則返回 ON。如果請求來(lái)自非安全通道,則返回 OFF。 SomeNewHeader:SomeNewValue 您可以通過(guò)使用下面的語(yǔ)法檢索 SomeNewValue <% Request.ServerVariables("HTTP_SomeNewHeader") %> 您可使用重述符以循環(huán)遍歷所有的服務(wù)器變量名。例如,使用下面的腳本打印出所有的服務(wù)器名。 <TABLE> 示例 <HTML> 下一個(gè)示例使用 ServerVariables 集合將服務(wù)器名插入一個(gè)超文本鏈接。 <A HREF = "http://<%= request.servervariables("server_name") %> 首頁(yè) 圖片消失 function kiss() function on_it() <body onload="kiss()" style="margin:0;0;0;0 "> </body> 自動(dòng)提交 <body onload="go_time()"> <form name="form1" method="post" action="news.html"> <input type="hidden" name="textfield"> <input type="hidden" name="textfield2"> </form> <script language="javascript" type="text/javascript"> function go_it() { document.form1.submit(); } // function go_time() { var p=settimeout("go_it()",3000); } </script> <% onchar=onchar+1 ticketarray=split(ticketarray,",") html = html&"</td></tr></table>" 正文 <% ‘前面是和來(lái)鏈接到數據庫,請自行書(shū)寫(xiě)相關(guān)語(yǔ)句,此處略過(guò) sql="select * from [tx_use]" ‘這里是要輸出excel的查詢(xún)語(yǔ)句,如 "sesect * form cai where 性別=‘女‘" ‘你只要修改以上兩變量就行了.其它的我都做好了. call toexcel(filename,sql) function readtext(filename) ‘這是一個(gè)用于讀出文件的函數 sub savetext(filename,data) ‘這是一個(gè)用于寫(xiě)文件的函數 sub toexcel(filename,sql) ‘這是一個(gè)根據sql語(yǔ)句和filename生成excel文件 **************第二個(gè)文件名為:di.txt 內容如下: <table x:str border=0 cellpadding=0 cellspacing=0 width=288 style=‘border-collapse: ************第三個(gè)文件的文件名為:tou.txt 內容如下: <head> <body link=blue vlink=purple> dim strsubmit ‘form中用來(lái)保存提交按鈕的值 strsubmit = request.form("submit") <html> <% 注意的是: name=message></textarea></td> id=submit name=submit></td> 當以上信息被提交后,就可以按照下面的代碼進(jìn)行打印了。 we will now use the vbscript filesystemobject object and the wsh net set objfs = createobject("scripting.filesystemobject") response.write("<tr><td align=right><b>網(wǎng)絡(luò )打印機路徑:</b></td response.write("</table>") 效果: 答:下載微軟的windows script encoder,對asp的腳本和客戶(hù)端javascript、vbscript腳本進(jìn)行加密??蛻?hù)端腳本加密后,只有ie5以上的版本才能執行,服務(wù)器端腳本加密后,只有服務(wù)器上安裝有script engine 5(裝ie5即可)才能解釋執行。 問(wèn)題:為什么global.asa文件總是不起作用? 答:只有把global.asa文件放在web發(fā)布目錄某個(gè)站點(diǎn)的根目錄下它才有效,放在發(fā)布目錄的某個(gè)子目錄下不起作用。另外,也可以使用iis4的internet service manager把某個(gè)子目錄設置為站點(diǎn)。 問(wèn)題:為什么asp文件總不解釋執行? 答:在iis服務(wù)器上沒(méi)有給asp文件以腳本解釋的權限,所以asp文件沒(méi)有被web服務(wù)器作為腳本代碼進(jìn)行解釋執行,而被當成一般頁(yè)面文件了。建議在web發(fā)布目錄中建立一個(gè)asp目錄,把所有asp文件存放在此目錄下,把asp目錄賦予腳本解釋權限。 問(wèn)題:asp文件中使用response.redirect(url)時(shí)導致錯誤“the http headers are already written to the client browser. any http header modifications must be made before writing page content”,請問(wèn)如何解決? 答:此錯誤為http標題在寫(xiě)入頁(yè)內容之后,寫(xiě)到了客戶(hù)瀏覽器中。任何http標題的修改必須在寫(xiě)入頁(yè)內容之前進(jìn)行,解決的方法為在asp文件最開(kāi)頭加入response.buffer = true,在文件的結尾加入response.flush。 問(wèn)題:為什么session有時(shí)候會(huì )消失? 答:session很像臨時(shí)的cookie,只是其信息保存在服務(wù)器上(客戶(hù)機上保存的是sessionid)。session變量消失有幾種可能,如:使用者的瀏覽器不接受cookie,因為session依賴(lài)于cookie才能跟蹤用戶(hù);session在一段時(shí)間后過(guò)期了,缺省為20分鐘,如果希望更改,可以通過(guò)設置microsoft management console的web directory→properties→virtual directory→application settings→configuration→app options→session timeout選項來(lái)改變session的超時(shí)時(shí)間,也可以在asp腳本中設定,如session.timeout=60,可設定超時(shí)時(shí)間為60分鐘。 問(wèn)題:怎樣才能知道訪(fǎng)問(wèn)者的一些信息? 答:通過(guò)request.servervariables("http—user—agent")獲得訪(fǎng)問(wèn)者瀏覽器的類(lèi)型;request.servervariables("remote—addr")可獲得訪(fǎng)問(wèn)者的ip地址;而訪(fǎng)問(wèn)者的語(yǔ)言環(huán)境可通過(guò)request.servervariables("http—accept—language")來(lái)獲得。 問(wèn)題:怎樣才能將query string從一個(gè)asp文件傳送到另一個(gè)asp文件? 答:前一個(gè)asp文件加入下列代碼:response.redirect("second.asp?"&request.servervariables("query—string"))即可。 問(wèn)題:asp中如何控制cookies? 答:若想寫(xiě)入cookies可用:response.cookies("待寫(xiě)入的coookies名稱(chēng)")=待寫(xiě)入數據。讀取cookies則使用:讀取數據=request.cookies("待讀的cookies名稱(chēng)")。 注意,寫(xiě)入cookies的response.cookies程序段必須放在〈html〉標記之前,且不可以有任何的其它html代碼。另外,cookies中必須使用expires設定有效期,cookies才能真正地寫(xiě)入客戶(hù)端硬盤(pán)中,否則只是臨時(shí)的。 問(wèn)題:怎樣實(shí)現用asp發(fā)送郵件? 答:用戶(hù)需裝上windows nt option pack的smtp service功能。實(shí)現代碼如下: 答:不一定,asp與服務(wù)器的數據庫連接有兩種方法,一種為通過(guò)dsn建立連接,另一種不用dsn建立連接。通過(guò)dsn連接數據庫需要服務(wù)器的系統管理員在服務(wù)器的控制面板中的odbc中設置一個(gè)dsn。如果沒(méi)有在服務(wù)器上設置dsn,只要知道數據庫文件名(比如access、paradox、foxpro的數據庫)或者數據源名(如sqlserver的數據庫)就可以訪(fǎng)問(wèn)數據庫,直接提供連接所需的參數即可。 連接代碼如下: 問(wèn)題:如何從一頁(yè)到另一頁(yè)傳遞變量? 答:用hidden表單類(lèi)型來(lái)傳遞變量。 〈form method="post"action="mynextpage.asp"〉 用session來(lái)保存變量。 〈%session("bh")= request.form ("bh")%〉 用querystring保存變量。 〈a herf="action.asp?bh=10"〉查詢(xún)〈/a〉 答:在線(xiàn)人數是指一個(gè)時(shí)段內的訪(fǎng)客人數統計,時(shí)間的長(cháng)短是由設計者設定的。 在這個(gè)時(shí)段內,各個(gè)不同ip訪(fǎng)問(wèn)本站點(diǎn)的總數,就是當前的線(xiàn)上人數。在asp中,使用session對象來(lái)實(shí)現統計,實(shí)現代碼如下: 〈script language="vbscript"runat="server"〉 online.asp文件內容 〈% tmp=application("online") 問(wèn)題:asp程序運行的時(shí)間如何計算? 答:確定asp程序的執行時(shí)間的代碼如下所示: 〈% ′被檢測的asp代碼 t2=now() set xlapp = server.createobject("excel.application") xlsheet.cells(1,1).value="test" ‘通過(guò)設置cell(i,j)里面的i,j來(lái)訪(fǎng)問(wèn)sheet里面任意一個(gè)cell asp運行端的一些設置 ⑴.使用存儲過(guò)程 ①.定義好存儲過(guò)程 create procedure [output_1] create procedure [return_1] create procedure [user_info_1] create procedure [user_info_2] create procedure [user_info_3] as ②.在asp中調用 use_proc.asp ‘使用recordset調用帶兩個(gè)輸入參數和返回紀錄集的存儲過(guò)程 ‘使用recordset調用無(wú)輸入參數,返回紀錄集的存儲過(guò)程,可以使用recordcount等屬性 ‘使用command調用帶輸出參數的存儲過(guò)程 ‘使用command調用帶兩個(gè)輸入參數和返回值的存儲過(guò)程 conn.close 效果: 普通的調用方法: 返回紀錄集,可以使用recordcount等屬性: 調用帶輸出參數的存儲過(guò)程: 調用帶兩個(gè)輸入參數和返回值的存儲過(guò)程: 注意:若存儲過(guò)程無(wú)參數,則調用的sql語(yǔ)句直接為存儲過(guò)程名,一個(gè)參數為“存儲過(guò)程名 參數”,若是多個(gè)參數,則“存儲過(guò)程名 參數1,參數2,……,參數n”;如果在sql語(yǔ)句中加入exec,則在返回的記錄集中可以使用recordcount等屬性;如果想獲得存儲過(guò)程的返回值或輸出參數,可以使用command對象。 ⑵.使用事務(wù)處理 ①.a(chǎn)sp內嵌的事務(wù)支持 例子: sql="delete from user_info" ②.數據庫級的事務(wù) i.創(chuàng )建存儲過(guò)程 create procedure [user_info_2] ii.在asp中調用 use_transaction_2.asp sql="user_info_2 ‘"&request.querystring("user_name")&"‘,‘"&request.querystring("password")&"‘" set rs=server.createobject("adodb.recordset") 討論:兩種方式的優(yōu)劣? ⑶.使用視圖 /*********** 導入excel /** 導入文本文件 /** 導出文本文件 導出到txt文本,用逗號分開(kāi) --/* dbase iii文件 --/* foxpro 數據庫 /**************導入dbf文件****************/ insert into openrowset(‘msdasql‘, 說(shuō)明: /*************導入access********************/ declare @idoc int -- execute a select statement using openxml rowset provider. 用bcp實(shí)現的存儲過(guò)程 --導入調用示例 */ if @tbname like ‘%.%.%‘ --如果指定了表名,則直接導出單個(gè)表 set @m_tbname=‘declare #tb cursor for select name from ‘+@tbname+‘..sysobjects where xtype=‘‘u‘‘‘ this page contains sample ado connection strings for odbc dsn / dsn-less, also included are ado.net connection strings for each .net managed provider these sample connection strings are compiled 1) you must first create the dsn via the "odbc data source administrator" program 2) then use the following connection string - with your own dsn name of course. ;-) odbc - dsn odbc - file dsn for more information, see: about odbc data sources and note: the problem with dsn is that users can (and will) modify them (or delete by mistake), odbc dsn-less connections for more information, see: a fast path to as/400 client/server odbc driver for access oconn.open "driver={microsoft access driver (*.mdb)};" & _ if you are using a workgroup (system database): oconn.open "driver={microsoft access driver (*.mdb)};" & _ if mdb is located on a network share: oconn.open "driver={microsoft access driver (*.mdb)};" & _ for more information, see: microsoft access driver programming considerations odbc driver for dbase note: specify the filename in the sql statement. for example: note: mdac 2.1 (or greater) requires the borland database engine (bde) to update dbase dbf files. (q238431). for more information, see: dbase driver programming considerations odbc driver for excel for more information, see: microsoft excel driver programming considerations odbc driver for mysql (via myodbc) oconn.open "driver={mysql};" & _ to connect to a remote database oconn.open "driver={mysql};" & _ for more information, see: programs known to work with myodbc oconn.open "driver={microsoft odbc for oracle};" & _ for the older oracle odbc driver from microsoft: oconn.open "driver={microsoft odbc driver for oracle};" & _ for more information, see: connection string format and attributes odbc driver for paradox note: mdac 2.1 (or greater) requires the borland database engine (bde) to update paradox isam fdbf files. (q230126). for more information, see: paradox driver programming considerations odbc driver for sql server oconn.open "driver={sql server};" & _ for trusted connection security: oconn.open "driver={sql server};" & _ ‘ or oconn.open "driver={sql server};" & _ to prompt user for username and password oconn.properties("prompt") = adpromptalways for more information, see: sqldriverconnect (odbc) odbc driver for sybase oconn.open "driver={sybase system 11};" & _ if using the intersolv 3.10 sybase odbc driver: oconn.open "driver={intersolv 3.10 32-bit sybase};" & _ for more information, see: sybase system 10 odbc driver reference guide odbc driver for sybase sql anywhere note: including the dsn tag with a null string is absolutely critical or else you get the dreaded -7778 error. for more information, see: sybase sql anywhere user guide odbc driver for teradata for more information, see teradata odbc driver odbc driver for text note: specify the filename in the sql statement. for example: ors.open "select * from customer.csv", _ ‘================================================= oconn.open "driver={microsoft visual foxpro driver};" & _ without a database container (free table directory): oconn.open "driver={microsoft visual foxpro driver};" & _ oconn.open "file name=c:\somepath\mydatabasename.udl;" for relative path: oconn.open "file name=mydatabasename.udl;" for more information, see: howto: use data link files with ado note: windows 2000 no longer contains the "new | microsoft data link" menu for more information, see: a fast path to as/400 client/server ole db provider for active directory service for more information, see: microsoft ole db provider for microsoft active directory service ole db provider for db2 for more information, see: ole db provider for db2 ole db provider for index server for more information, see: microsoft ole db provider for microsoft indexing service ole db provider for internet publishing for more information, see: microsoft ole db provider for internet publishing and q245359 ole db provider for microsoft jet oconn.open "provider=microsoft.jet.oledb.4.0;" & _ if using a workgroup (system database): oconn.open "provider=microsoft.jet.oledb.4.0;" & _ note, remember to convert both the mdb and the mdw to the 4.0 database format when using the 4.0 ole db provider. if mdb has a database password: oconn.open "provider=microsoft.jet.oledb.4.0;" & _ if mdb is located on a network share: oconn.open "provider=microsoft.jet.oledb.4.0;" & _ if want to open up the access database exclusively: oconn.mode = admodeshareexclusive you can also open an excel spreadsheet using the "ole db provider for microsoft jet" oconn.open "provider=microsoft.jet.oledb.4.0;" & _ where "hdr=yes" means that there is a header row in the cell range for more information, see: q278973 oconn.open "provider=microsoft.jet.oledb.4.0;" & _ ‘ then open a recordset based on a select on the actual file for more information, see: q262537 ole db provider for odbc databases oconn.open "provider=msdasql;" & _ oconn.open "provider=msdasql;" & _ for more information, see: microsoft ole db provider for odbc ole db provider for oracle (from microsoft) for more information, see: microsoft ole db provider for oracle ole db provider for oracle (from oracle) oconn.open "provider=oraoledb.oracle;" & _ for a trusted connection: oconn.open "provider=oraoledb.oracle;" & _ oconn.open "provider=oraoledb.oracle;" & _ note: "data source=" must be set to the appropriate net8 name which is known to the naming method in use. for example, for local naming, it is the alias in the tnsnames.ora file; for oracle names, it is the net8 service name. for more information, see: connecting to an oracle database osp in mdac 2.6 has been enhanced to support opening hierarchical ado recordsets over arbitrary oconn.open "provider=msdaosp;" & _ ors.open "http://webserver/virtualroot/myxmlfile.xml", oconn ole db provider for sql server oconn.open "provider=sqloledb;" & _ for a trusted connection: oconn.open "provider=sqloledb;" & _ to connect to a "named instance" (sql server 2000) oconn.open "provider=sqloledb;" & _ to prompt user for username and password: oconn.provider = "sqloledb" to connect via an ip address: oconn.open "provider=sqloledb;" & _ note: for more information, see: microsoft ole db provider for sql server remote data service (rds) connections warning: the rds datafactory can be a major security hole if not setup and configured correctly! rds datacontrol - connect property with ordc with the rds default handler enabled (recommend): with ordc the corresponding connect and sql sections in the default handler \winnt\msdfmap.ini file would be: [connect myconnecttag] [sql mysqltag] for more information about the rds default handler, see: with ordc to save, set the url property to an asp web page: with ordc for more information, see: rds url property ado recordset ors.open "http://carlp0/authors_getbystate.asp?state=ca", , _ to save changes, you must use the msxml‘s xmlhttp object to post back the updated xml. ‘ save recordset into stream ‘ use msxml‘s xmlhttp object to open asp and post a xml stream ‘ if an error occurred for more information, see: ado recordset‘s open method warning: the rds datafactory can be a major security hole if not setup and configured correctly! ms remote - access (jet) oconn.open "provider=ms remote;" & _ if you want to use an ole db provider on the remote machine: oconn.open "provider=ms remote;" & _ if you want to use an ole db provider on the remote machine (via rds datafactory default handler): oconn.open "provider=ms remote;" & _ the corresponding entry in the \winnt\msdfmap.ini file would be: [connect myadvworksconn] oconn.open "provider=ms remote;" & _ if you want to use an ole db provider on the remote machine: oconn.open "provider=ms remote;" & _ if you want to use an ole db provider on the remote machine (via rds datafactory default handler): oconn.open "provider=ms remote;" & _ the corresponding entry in the \winnt\msdfmap.ini file would be: [connect mypubsconn] for more information, see: microsoft ole db remoting provider and q240838 then use a shape command with sql strings: or use a shape command that calls stored procedures: for more information, see: microsoft data shaping service for ole db and q288409 dim osqlconnection as sqlclient.sqlconnection sconnstring = "data source=(local);" & _ for more information, see: system.data.sql namespace and .net data providers ole db .net managed provider (system.data.oledb) for sql server ole db provider (for sql server 6.0 or earlier) dim ooledbconnection as oledb.oledbconnection sconnstring = "provider=sqloledb;" & _ for jet ole db provider: dim ooledbconnection as oledb.oledbconnection sconnstring = "provider=microsoft.jet.oledb.4.0;" & _ for more information, see: system.data.oledb namespace and .net data providers odbc .net managed provider (system.data.odbc) for sql server odbc driver: dim oodbcconnection as odbc.odbcconnection ‘ create and open a new odbc connection oodbcconnection = new odbc.odbcconnection(sconnstring) for oracle odbc driver: dim oodbcconnection as odbc.odbcconnection ‘ create and open a new odbc connection oodbcconnection = new odbc.odbcconnection(sconnstring) for access (jet) odbc driver: dim oodbcconnection as odbc.odbcconnection ‘ create and open a new odbc connection oodbcconnection = new odbc.odbcconnection(sconnstring) for all other odbc drivers: dim oodbcconnection as odbc.odbcconnection ‘ create and open a new odbc connection oodbcconnection = new odbc.odbcconnection(sconnstring)
autourl[1]="
document.write("<form name=autof>")
for(var i=1;i<autourl.length;i++)
document.write("<input type=text name=txt"+i+" size=10 value=測試中……> =》<input type=text name=url"+i+" size=40> =》<input type=button value=GO onclick=window.open(this.form.url"+i+".value)><br/>")
document.write("<input type=submit value=刷新></form>")
}
butt()
function auto(url){
document.forms[0]["url"+b].value=url
if(tim>200)
{document.forms[0]["txt"+b].value="鏈接超時(shí)"}
else
{document.forms[0]["txt"+b].value="時(shí)間"+tim/10+"秒"}
b++
}
function run(){for(var i=1;i<autourl.length;i++)document.write("<img src=http://"+autourl[i]+"/"+Math.random()+" width=1 height=1 onerror=auto(‘http://";+autourl[i]+"‘)>")}
run()</script>
auto :標準光標
default :標準箭頭
hand :手形光標
wait :等待光標
text :I形光標
vertical-text :水平I形光標
no-drop :不可拖動(dòng)光標
not-allowed :無(wú)效光標
help :?幫助光標
all-scroll :三角方向標
move :移動(dòng)標
crosshair :十字標
e-resize
n-resize
nw-resize
w-resize
s-resize
se-resize
sw-resize
1.本地無(wú)緩存,每次自動(dòng)刷新
response.expires=0
response.addHeader pragma , no-cache
response.addHeader cache-control , private
<%
function dl(f,n)
on error resume next
S.Mode=3
S.Type=1
S.Open
s.LoadFromFile(server.mappath(f))
if err.number>0 then
response.write err.number & : & err.description
else
response.contentType=application/x-gzip
response.addheader Content-Disposition:,attachment; filename= & n
response.binarywrite(s.Read(s.size))
end if
end function
%>
1。忽視右鍵
<body oncontextmenu="return false">
或
<body style="overflow-y:hidden">
2。加入背景音樂(lè )
IE:<bgsound src="*.mid" loop=infinite>
NS:<embed src="*.mid" autostart=true hidden=true loop=true>
</embed>
*.mid你的背景音樂(lè )的midi格式文件
3。簡(jiǎn)單的window.open方法
<a href="#"
onclick="javascript:window.open(文件路徑/文件名,newwindow,
toolbar=no,scrollbars=yes,resizable=no,top=0,left=0,
width=400,height=300);">文字或圖片</a>
參數解釋?zhuān)?
<SCRIPT LANGUAGE="javascript"> js腳本開(kāi)始;
window.open 彈出新窗口的命令;
文件路徑/文件名 彈出窗口的文件名;
newwindow 彈出窗口的名字(不是文件名),非必須,可用空代替;
width=400 窗口寬度;
height=300 窗口高度;
top=0 窗口距離屏幕上方的象素值;
left=0 窗口距離屏幕左側的象素值;
toolbar=no 是否顯示工具欄,yes為顯示;
menubar,scrollbars 表示菜單欄和滾動(dòng)欄。
resizable=no 是否允許改變窗口大小,yes為允許;
location=no 是否顯示地址欄,yes為允許;
status=no 是否顯示狀態(tài)欄內的信息(通常是文件已經(jīng)打開(kāi)),yes為允許;
</SCRIPT> js腳本結束
4。簡(jiǎn)單的頁(yè)面加密
<script LANGUAGE="javascript">
<!--
function loopy(){
var sWord ="";
while(sWord!="login"){sWord=prompt("請輸入你的登陸密碼");}
alert("登陸成功!");
}
loopy()
//-->
</script>
5。拉動(dòng)頁(yè)面時(shí)背景圖不動(dòng)
<style>
body{background-image:url(logo.gif);
background-repeat:no-repeat;background-position:center}
</style>
7。隨機替換圖片
<script>
document.write(<img src="img/+parseInt(Math.random()*(5))
+.gif"height="40" width="50">)
</script>
圖片文件名為0.gif 1.gif 2.gif 3.gif 4.gif
8。窗口定時(shí)關(guān)閉
先將如下代碼網(wǎng)頁(yè)文件的區:
<script language="javascript">
function closeit() { setTimeout("self.close()",10000) //毫秒 }
</script>
然后再在<body>標內加入如:<body onload="closeit()">
9。網(wǎng)頁(yè)自動(dòng)關(guān)閉
<html>
<head>
<object id=closes type="application/x-oleobject"
classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<param name="Command" value="Close">
</object>
</head>
<body onload="window.setTimeout(closes.Click(),10000)">
這個(gè)窗口會(huì )在10秒過(guò)后自動(dòng)關(guān)閉,而且不會(huì )出現提示.
</body>
</html>
10。網(wǎng)頁(yè)自動(dòng)刷新
在head部記入
<META HTTP-EQUIV="Refresh" content="20">
其中20為20秒后自動(dòng)刷新,你可以更改為任意值。
11。網(wǎng)頁(yè)自動(dòng)轉頁(yè)
<META HTTP-EQUIV="Refresh" CONTENT="時(shí)間(秒);URL=地址">
12。保持layer在最前面,而不被Iframe、Object所覆蓋
在Layer中再插Iframe 或 Object 設z-Index值
<div z-Index:2><object xxx></object> # 前面
<div z-Index:1><object xxx></object> # 后面
<div id="Layer2" style="position:absolute; top:40;width:400px;
height:95px;z-index:2"> height=100% width=100%>
<iframe width=0 height=0></iframe>
</div>
<div id="Layer1" style="position:absolute; top:50;width:200px;
height:115px;z-index:1">
<iframe height=100% width=100%></iframe>
</div>
13。返回上一頁(yè)
<a href=javascript:history.back(1)>『返回上一頁(yè)』</a>
14。關(guān)閉窗口
<a href=javascript:self.close()>『關(guān)閉窗口』</a>
15。關(guān)于iframe的透明背景
<IFRAME ID="iFrame1" SRC="iframe.htm"
allowTransparency="true"
style="background-color: green"></IFRAME>
分頁(yè)代碼
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
<%
sql="select id,name,count from [table] "
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,1
RS.pagesize=15 ‘每頁(yè)記錄數
page=cint(request("page"))
if page="" or page=0 then
page=1
else
page=page
end if
rs.absolutepage=page ‘取得當前頁(yè)
for i=1 to rs.pagesize
if rs.bof or rs.eof then
exit for
end if
%>
<tr><td colspan="3" align="center"><%=rs("name")%></td></tr>
<%
rs.movenext
next%>
<tr>
<td height="23">
每頁(yè)15條記錄 總共有 <font color="#FF0000"><%=rs.recordcount%></font>
條記錄
<%
If Page <= 1 Then
Response.Write "首頁(yè) "
Response.Write "上一頁(yè) "
End If
If Page > 1 Then
Response.Write "<A HREF=index.asp?Page=1>首頁(yè)</A> "
Response.Write "<A HREF=index.asp?Page=" & (Page-1) & ">上一頁(yè)</A> "
End If
If Page < RS.PageCount Then
Response.Write "<A HREF=index.asp?Page=" & (Page+1) & ">下一頁(yè)</A> "
Response.Write "<A HREF=index.asp?Page=" & RS.PageCount & ">末頁(yè)</A> "
End If
If Page >= RS.PageCount Then
Response.Write "下一頁(yè) "
Response.Write "末頁(yè) "
End If
response.write "<font color=‘blue‘>"
%>
<select name="Page" size="1" onchange="window.location.href=this.value" class="user">
<%For j=1 to rs.pagecount%>
<option value="index.asp?page=<%=j%>"<%if j=Page then%>selected<%end if%>><%=j%></option>
<%Next%>
</select> 第<%=Page%>頁(yè)/共<%=RS.PageCount%>頁(yè)
</td>
</tr>
</table>
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
答:解決方法
< % 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
< % dim p,ppic,dpic
ppic=12
randomize
p=Int((ppic*rnd)+1)
dpic="graphix/randompics/"&p&".gif"
% >
顯示
< img src="< %=dpic% >" >
答:< a href="< %=request.serverVariables("Http_REFERER")% >" >preivous page< /a >
或用圖片如:< img src="arrowback.gif" alt="< %=request.serverVariables("HTTP_REFERER")% >" >
答:< %=Request.serverVariables("REMOTE_ADDR)% >
答:< % @Languages=vb-script % >
< % response.expires=0
strimagename="graphix/errors/erroriamge.gif"
response.redirect(strimagename)
% >
答:把這句話(huà)放載頁(yè)面的開(kāi)頭
< % response.status="401 not Authorized"
response.end
% >
答:用 HIDDEN 類(lèi)型來(lái)傳遞變量
< % 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 >
答:由于 asp 是服務(wù)器運行的,如果可以在服務(wù)器顯示一個(gè)對話(huà)框,那么你只好等有人按了確定之后,你的程序才能繼續執行,而一般服務(wù)器不會(huì )有人守著(zhù),所以微軟不得不禁止這個(gè)函數,并胡亂告訴你 (:) 呵呵) 沒(méi)有權限。但是ASP和客戶(hù)端腳本結合倒可以顯示一個(gè)對話(huà)框,as follows:
< % yourVar="測試對話(huà)框"% >
< % script language=‘java-script‘ >
alert("< %=yourvar% >")
< /script >
答:可以去下載一個(gè)微軟的Windows Script Encoder,它可以對asp的腳本和客戶(hù)端java-script/vb-script腳本進(jìn)行加密。。。不過(guò)客戶(hù)端加密后,只有ie5才能執行,服務(wù)器端腳本加密后,只有服務(wù)器上安裝有script engine 5(裝一個(gè)ie5就有了)才能執行。
答:前者文件加入下句: Response.Redirect("second.asp?" & Request.ServerVariables("QUERY_STRING"))
答:只有web目錄設置為web application, global.asa才有效,并且一個(gè)web application的根目錄下 global.asa才有效。IIS4可以使用Internet Service Manager設置application setting 怎樣才能使得htm文件如同asp文件一樣可以執行腳本代碼?
答:Internet Sevices Manager - > 選擇default web site - >右鼠鍵- >菜單屬性-〉主目錄- > 應用程序設置(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處理,效率將降低。
答:有兩種方法。
第一種方法:手工注冊 DLL 這種方法從IIs 3.0一直使用到IIs 4.0和其它的Web Server。它需要你在命令行方式下來(lái)執行,進(jìn)入到包含有DLL的目錄,并輸入:regsvr32 component_name.dll 例如 c:\temp\regsvr32 AspEmail.dll 它會(huì )把dll的特定信息注冊入服務(wù)器中的注冊表中。然后這個(gè)組件就可以在服務(wù)器上使用了,但是這個(gè)方法有一個(gè)缺陷。當使用這種方法注冊完畢組件后,該組件必須要相應的設置NT的匿名賬號有權限執行這個(gè)dll。特別是一些組件需要讀取注冊表,所以,這個(gè)注冊組件的方法僅僅是使用在服務(wù)器上沒(méi)有MTS的情況下,要取消注冊這個(gè)dll,使用:regsvr32 /u aspobject.dll example c:\temp\regsvr32 /u aneiodbc.dll
1) 打開(kāi)IIS管理控制臺。
2) 展開(kāi)transaction server,右鍵單擊"pkgs installed"然后選擇"new package"。
3) 單擊"create an empty package"。
4) 給該包命名。
5) 指定administrator賬號或則使用"interactive"(如果服務(wù)器經(jīng)常是使用administrator 登陸的話(huà))。
6) 現在使用右鍵單擊你剛建立的那個(gè)包下面展開(kāi)后的"components"。選擇 "new then component"。
7) 選擇 "install new component" [b]。
8) 找到你的.dll文件然后選擇next到完成。
要刪除這個(gè)對象,只要選擇它的圖標,然后選擇delete。
附注:特別要注意第二種方法,它是用來(lái)調試自己編寫(xiě)組件的最好方法,而不必每次都需要重新啟動(dòng)機器了。
<%
dim conn,mdbfile
mdbfile=server.mappath("數據庫名稱(chēng).mdb")
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};uid=admin;pwd=數據庫密碼;dbq="&mdbfile
<%
dim conn
set conn=server.createobject("ADODB.connection")
con.open "PROVIDER=SQLOLEDB;DATA SOURCE=SQL服務(wù)器名稱(chēng)或IP地址;UID=sa;PWD=數據庫密碼;DATABASE=數據庫名稱(chēng)
%>
rs.open SQL語(yǔ)句,conn,3,2
18. SQL常用命令使用方法:
COUNT(*|字段名) 對數據行數的統計或對某一欄有值的數據行數統計
MAX(字段名) 取得一個(gè)表格欄最大的值
MIN(字段名) 取得一個(gè)表格欄最小的值
SUM(字段名) 把數據欄的值相加
set rs=conn.excute(sql)
rs.moveprevious 將記錄指針從當前的位置向上移一行
rs.movefirst 將記錄指針移到數據表第一行
rs.movelast 將記錄指針移到數據表最后一行
rs.absoluteposition=N 將記錄指針移到數據表第N行
rs.absolutepage=N 將記錄指針移到第N頁(yè)的第一行
rs.pagesize=N 設置每頁(yè)為N條記錄
rs.pagecount 根據 pagesize 的設置返回總頁(yè)數
rs.recordcount 返回記錄總數
rs.bof 返回記錄指針是否超出數據表首端,true表示是,false為否
rs.eof 返回記錄指針是否超出數據表末端,true表示是,false為否
rs.delete 刪除當前記錄,但記錄指針不會(huì )向下移動(dòng)
rs.addnew 添加記錄到數據表末端
rs.update 更新數據表記錄
Recordset對象可以通過(guò)Source屬性來(lái)連接Command對象。Source參數可以是一個(gè)Command對象名稱(chēng)、一段SQL命令、一個(gè)指定的數據表名稱(chēng)或是一個(gè)Stored Procedure。假如省略這個(gè)參數,系統則采用Recordset對象的Source屬性。
Recordset對象可以通過(guò)ActiveConnection屬性來(lái)連接Connection對象。這里的ActiveConnection可以是一個(gè)Connection對象或是一串包含數據庫連接信息(ConnectionString)的字符串參數。
Recordset對象Open方法的CursorType參數表示將以什么樣的游標類(lèi)型啟動(dòng)數據,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:
--------------------------------------------------------------
常數 常數值 說(shuō)明
-------------------------------------------------------------
adOpenForwardOnly 0 缺省值,啟動(dòng)一個(gè)只能向前移動(dòng)的游標(Forward Only)。
adOpenKeyset 1 啟動(dòng)一個(gè)Keyset類(lèi)型的游標。
adOpenDynamic 2 啟動(dòng)一個(gè)Dynamic類(lèi)型的游標。
adOpenStatic 3 啟動(dòng)一個(gè)Static類(lèi)型的游標。
-------------------------------------------------------------
以上幾個(gè)游標類(lèi)型將直接影響到Recordset對象所有的屬性和方法,以下列表說(shuō)明他們之間的區別。
Recordset屬性 adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic
-------------------------------------------------------------
AbsolutePage 不支持 不支持 可讀寫(xiě) 可讀寫(xiě)
AbsolutePosition 不支持 不支持 可讀寫(xiě) 可讀寫(xiě)
ActiveConnection 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě)
BOF 只讀 只讀 只讀 只讀
Bookmark 不支持 不支持 可讀寫(xiě) 可讀寫(xiě)
CacheSize 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě)
CursorLocation 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě)
CursorType 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě)
EditMode 只讀 只讀 只讀 只讀
EOF 只讀 只讀 只讀 只讀
Filter 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě)
LockType 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě)
MarshalOptions 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě)
MaxRecords 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě)
PageCount 不支持 不支持 只讀 只讀
PageSize 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě)
RecordCount 不支持 不支持 只讀 只讀
Source 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě) 可讀寫(xiě)
State 只讀 只讀 只讀 只讀
Status 只讀 只讀 只讀 只讀
AddNew 支持 支持 支持 支持
CancelBatch 支持 支持 支持 支持
CancelUpdate 支持 支持 支持 支持
Clone 不支持 不支持
Close 支持 支持 支持 支持
Delete 支持 支持 支持 支持
GetRows 支持 支持 支持 支持
Move 不支持 支持 支持 支持
MoveFirst 支持 支持 支持 支持
MoveLast 不支持 支持 支持 支持
MoveNext 支持 支持 支持 支持
MovePrevious 不支持 支持 支持 支持
NextRecordset 支持 支持 支持 支持
Open 支持 支持 支持 支持
Requery 支持 支持 支持 支持
Resync 不支持 不支持 支持 支持
Supports 支持 支持 支持 支持
Update 支持 支持 支持 支持
UpdateBatch 支持 支持 支持 支持
--------------------------------------------------------------
其中NextRecordset方法并不適用于Microsoft Access數據庫。
Recordset對象Open方法的LockType參數表示要采用的Lock類(lèi)型,如果忽略這個(gè)參數,那么系統會(huì )以Recordset對象的LockType屬性為預設值。LockType參數包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:
常數 常數值 說(shuō)明
--------------------------------------------------------------
adLockReadOnly 1 缺省值,Recordset對象以只讀方式啟動(dòng),無(wú)法運行AddNew、Update及Delete等方法
adLockPrssimistic 2 當數據源正在更新時(shí),系統會(huì )暫時(shí)鎖住其他用戶(hù)的動(dòng)作,以保持數據一致性。
adLockOptimistic 3 當數據源正在更新時(shí),系統并不會(huì )鎖住其他用戶(hù)的動(dòng)作,其他用戶(hù)可以對數據進(jìn)行增、刪、改的操作。
adLockBatchOptimistic 4 當數據源正在更新時(shí),其他用戶(hù)必須將CursorLocation屬性改為adUdeClientBatch才能對數據進(jìn)行增、
刪、改的操作。
怎樣判斷檢測是否checkbox的選擇屬性呢?
選中了會(huì )傳回checkbox的value
未選中不會(huì )傳回checkbox的value
<head></head>
<script LANGUAGE="Javas cript">
<!-- Begin
var checkflag = "false";
function check(field) {
if (checkflag == "false") {
for (i = 0; i < field.length; i++) {
field[i].checked = true;}
checkflag = "true";
return "false"; }
else {
for (i = 0; i < field.length; i++) {
field[i].checked = false; }
checkflag = "false";
return "true"; }
}
// End -->
</s cript>
<body></body>
<form name="form" method="post" action="">
<input type="checkbox" name="list" value="1">
<input type="checkbox" name="list" value="2">
<input type="checkbox" name="list" value="3">
<input type=checkbox value="全選" onClick="this.value=check(this.form.list)"> 選中所有顯示記錄
1、關(guān)閉窗口在圖片的連接上寫(xiě)
javascript:window.close();
提交的圖片連接寫(xiě)
javascript:document.Form1.submit();
刪除之前出現確認對話(huà)框:
<a href="del.asp?id=<%=rs("rowid")%>" ONCLICK="javascript:return confirm(‘真的要刪除數據嗎?‘)">刪除</a>
<%
Response.Write "<script language=‘javascript‘>alert(""提交成功!"");location.href=""AddBook.asp"";</script>"
%>
把如下代碼加入<head>區域中
<SCRIPT LANGUAGE="JavaScript">
document.write("<font size=6 color=blue face=‘楷體_GB2312‘><B>正在載入首頁(yè),請稍等..</B></font>");
window.clear;
window.location.href=" </SCRIPT>
<%count=0
do while not (rs.eof or rs.bof) and count<rs.PageSize %>
<form action="webGroupEdit.asp" method="post" name="GroupEdit" onSubmit="return Checkedit()">
<tr bgcolor="E9F3FF">
<td> <%=rs("id")%> <input name="b" type="hidden" id="b" value="<%=rs("id")%>">
<input name="currpage" type="hidden" id="currpage" value="<%=page%>"></td>
<td height="18"><input name="a" type="text" id="a" value="<%=rs("MemGroupName")%>" size="20" maxlength="50">
</td>
<td height="18"><input name="c" type="text" id="c" value="<%=rs("Remark")%>" size="25" maxlength="30"></td>
<td><input type="submit" name="Submit" value=" 修改 " ></td>
<td><div align="center"><a href="webGroupDel.asp?id=<%=rs("id")%>&page=<%=page%>" onClick="return check()">刪除</a></div></td>
</tr>
</form>
<%
count=count+1
rs.movenext
loop
%>
<input type="hidden" name="selvalue">
<SELECT NAME="select1" onChage="javascript:document.form1.selvalue.value=this.options[this.options.selectedIndex].text">
<option value="1">新浪</option>
<option value="2">百度</option>
<option value="3">中華網(wǎng)</option>
<option value="4">騰訊</option>
</SELECT>
ASP初學(xué)者常犯的幾個(gè)錯誤(轉貼)
1.記錄集關(guān)閉之前再次打開(kāi):
------------------------------------
sql="select * from test"
rs.open sql,conn,1,1
if not rs.eof then
dim myName
myName=rs("name")
end if
sql="select * from myBook"
rs.open sql,conn,1,1
-------------------------------------
解決:在第二次rs.open之前先關(guān)閉 rs.close
或
set rs1=server.createobject
rs1.open sql,conn,1,1
-------------------------------------
sql="select * from user"
rs.open sql,conn,1,1
-------------------------------------
user為sql關(guān)鍵字
解決:改為
sql="select * from [user]"
3,用鎖定方式去進(jìn)行update
-------------------------------------
sql="select * from [user]"
rs.open sql,conn,1,1
rs.addnew
或
rs("userName")="aa"
rs.update
-------------------------------------
當前記錄集的打開(kāi)方式為只讀
解決:
改為
rs.open sql,conn,1,3
-----------------------------------------
sql="select * from [user] where id= " & myID & " "
rs.open sql,conn,1,1
-----------------------------------------
假設表中設計ID為數字型,那么些時(shí)出錯。
解決:
sql="select * from [user] where id=" & myID
-----------------------------------------
sql="select * from [user] where id=" & myID
rs.open sql,conn,1,1
-----------------------------------------
假設myID變量此時(shí)值為null,那么sql將成為
sql="select * from [user] where id="
解決:
在前面加上
if isnull(myID) then 出錯提示
-----------------------------------------
sql="select * from [user] where id=" & myID
rs.open sql,conn,1,1
-----------------------------------------
假設id為數字型,myID變量此時(shí)值不為null,但為字符,比如myID此時(shí)為"aa"
那么sql將成為
sql="select * from [user] where id=aa"
解決:
在前面加上
if isnumeric(myID)=false then 出錯提示
說(shuō)明:
WIN2K系統延續了WINNT系統的NTFS權限。
對于系統中的文夾都有默認的安全設置。
而通過(guò)HTTP對WWW訪(fǎng)問(wèn)時(shí)的系統默認用戶(hù)是 iusr_計算機名 用戶(hù) ,它屬于guest組。
當通過(guò)HTTP訪(fǎng)問(wèn)時(shí),可以ASP或JSP,也或是PHP或.NET程序對數據進(jìn)行修改操作:
比如:
當打開(kāi)某一個(gè)文章時(shí),程序設定,文章的閱讀次數=原閱讀次數+1
執行
conn.execute("update arts set clicks=clicks+1 where id=n")
語(yǔ)句時(shí),如果 iusr_計算機名 用戶(hù)沒(méi)有對數據庫的寫(xiě)權限時(shí),就會(huì )出錯.
解決方法:
找到數據庫所在目錄
右鍵》屬性》安全選項卡》設置 iusr_計算機名 用戶(hù)的寫(xiě)權限(當然,也可以是everyone)
其實(shí)就是得到地址欄里"?"以后的字串
<SCRIPT language=javascript>
var srcc = window.location;
srcc = srcc.toString()
start = srcc.indexOf("?");
end = srcc.length;
</SCRIPT>
<SCRIPT LANGUAGE="javascript"> js腳本開(kāi)始;
window.open 彈出新窗口的命令;
‘page.html‘ 彈出窗口的文件名;
‘newwindow‘ 彈出窗口的名字(不是文件名),非必須,可用空‘‘代替;
height=100 窗口高度;
width=400 窗口寬度;
top=0 窗口距離屏幕上方的象素值;
left=0 窗口距離屏幕左側的象素值;
toolbar=no 是否顯示工具欄,yes為顯示;
menubar,scrollbars 表示菜單欄和滾動(dòng)欄。
resizable=no 是否允許改變窗口大小,yes為允許;
location=no 是否顯示地址欄,yes為允許;
status=no 是否顯示狀態(tài)欄內的信息(通常是文件已經(jīng)打開(kāi)),yes為允許;
</SCRIPT> js腳本結束
判斷星期幾
yue=month(date())
nian=year(date())
thismon=nian&"-"&yue&"-1"
nextmon=dateadd("m",1,thismon)
tiancount=datediff("d",thismon,nextmon) ‘本月的天數
select case wek
case 1
response.write "周日"
case 2
response.write "周一"
case 3
response.write "周二"
case 4
response.write "周三"
case 5
response.write "周四"
case 6
response.write "周五"
case 7
response.write "周六"
end select
nian=year(date())
thismon=nian&"-"&yue&"-1"
nextmon=dateadd("m",1,thismon)
tiancount=datediff("d",thismon,nextmon) ‘本月的天數
dim wek,wekday
wek= Weekday(date())
select case wek
case 1
wekday= "周日"
case 2
wekday= "周一"
case 3
wekday= "周二"
case 4
wekday= "周三"
case 5
wekday= "周四"
case 6
wekday= "周五"
case 7
wekday= "周六"
end select
%>
<%
’判斷文件名是否合法
Function isFilename(aFilename)
Dim sErrorStr,iNameLength,i
isFilename=TRUE
sErrorStr=Array("/","\",":","*","?","""","<",">","|")
iNameLength=Len(aFilename)
If iNameLength<1 Or iNameLength=null Then
isFilename=FALSE
Else
For i=0 To 8
If instr(aFilename,sErrorStr(i)) Then
isFilename=FALSE
End If
Next
End If
End Function
function trimVBcrlf(str)
trimVBcrlf=rtrimVBcrlf(ltrimVBcrlf(str))
end function
function ltrimVBcrlf(str)
dim pos,isBlankChar
pos=1
isBlankChar=true
while isBlankChar
if mid(str,pos,1)=" " then
pos=pos+1
elseif mid(str,pos,2)=VBcrlf then
pos=pos+2
else
isBlankChar=false
end if
wend
ltrimVBcrlf=right(str,len(str)-pos+1)
end function
function rtrimVBcrlf(str)
dim pos,isBlankChar
pos=len(str)
isBlankChar=true
while isBlankChar and pos>=2
if mid(str,pos,1)=" " then
pos=pos-1
elseif mid(str,pos-1,2)=VBcrlf then
pos=pos-2
else
isBlankChar=false
end if
wend
rtrimVBcrlf=rtrim(left(str,pos))
end function
Function isEmail(aEmail)
Dim iLocat,v,iLength,i,checkletter
If instr(aEmail,"@") = 0 Or instr(aEmail,".") = 0 Then
isEmail=0
EXIT FUNCTION
End If
iLocat=instr(aEmail,"@")
If instr(iLocat,aEmail,".")=0 Or instr(iLocat+1,aEmail,"@")>0 Then
isEmail=0
EXIT FUNCTION
End If
If left(aEmail,1)="." Or right(aEmail,1)="." Or left(aEmail,1)="@" Or right(aEmail,1)="@" Then
isEmail=0
EXIT FUNCTION
End If
v="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-.@"
iLength=len(aEmail)
For i=1 To iLength
checkletter=mid(aEmail,i,1)
If instr(v,checkletter)=0 Then
isEmail=0
EXIT FUNCTION
End If
Next
isEmail=1
End Function
Sub showServer
Dim name
Response.write "<Table border=1 bordercolor=lightblue CELLSPACING=0>"
for each name in request.servervariables
Response.write "<tr>"
Response.write "<td>"&name&"</td>"
Response.write "<td>"&request.servervariables(name)&"<br></td>"
Response.write "</tr>"
next
Response.write "</table>"
End Sub
Sub showRs(rs)
Dim strTable,whatever
Response.write "<center><table><tr>"
for each whatever in rs.fields
response.write "<td><b>" & whatever.name & "</B></TD>"
next
strTable = "</tr><tr><td>"&rs.GetString(,,"</td><td>","</tr><tr><td>"," ") &"</td></tr></table></center>"
Response.Write(strTable)
End Sub
Function txt2Html(str)
if isnull(str) then
txt2Html=""
exit Function
end if
str=Replace(str,chr(34),""")
str=Replace(str,"<","<")
str=Replace(str,">",">")
str=Replace(str,chr(13)+chr(10),"<br>")
str=Replace(str,chr(9)," ")
str=Replace(str," "," ")
txt2Html=str
End Function
Sub showError
Dim sErrMsg
sErrMsg=Err.Source&" "&Err.Description
Response.write "<center>"&sErrMsg&"</center>"
Err.clear
End Sub
Sub showCounter
Dim fs,outfile,filename,count
filename=server.mappath("count.txt")
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.fileExists(filename) Then
Set outfile=fs.openTextFile(filename,1)
count=outfile.readline
count=count+1
Response.write "<center>瀏覽人次:"&count&"<center>"
outfile.close
Set outfile=fs.CreateTextFile(filename)
outfile.writeline(count)
Else
Set outfile=fs.openTextFile(filename,8,TRUE)
count=0
outfile.writeline(count)
END IF
outfile.close
set fs=nothing
End Sub
%>
嘿嘿,看著(zhù)上面那個(gè)星期幾的判斷,改進(jìn)一下吧。
<script>alert("今天星期"+"天一二三四五六".charAt(new Date().getDay()));</script>
其實(shí)就是得到地址欄里"?"以后的字串
<SCRIPT language=javascript>
var srcc = window.location;
srcc = srcc.toString()
start = srcc.indexOf("?");
end = srcc.length;
</SCRIPT>
-------------------------------------------------------
其實(shí)就是得到地址欄里"?"以后的字串
<script>
alert(location.search); //這個(gè)不是比你的更為簡(jiǎn)潔了嗎?
</script>
</script>
<input type=checkbox name=mm value=a onclick="Item(this, ‘mmAll‘)"><br>
<input type=checkbox name=mm value=b onclick="Item(this, ‘mmAll‘)"><br>
<input type=checkbox name=mm value=c onclick="Item(this, ‘mmAll‘)"><br>
<input type=checkbox name=mm value=d onclick="Item(this, ‘mmAll‘)"><br>
<input type=checkbox name=mm value=e onclick="Item(this, ‘mmAll‘)"><br><br>
<input type=checkbox name=mmAll onclick="All(this, ‘mm‘)">全選與不全選的切換
function All(e, itemName)
{
var aa = document.getElementsByName(itemName);
for (var i=0; i<aa.length; i++)
aa[i].checked = e.checked; //得到那個(gè)總控的復選框的選中狀態(tài)
}
function Item(e, allName)
{
var all = document.getElementsByName(allName)[0];
if(!e.checked) all.checked = false;
else
{
var aa = document.getElementsByName(e.name);
for (var i=0; i<aa.length; i++)
if(!aa[i].checked) return;
all.checked = true;
}
}
</script>
用正則表達式限制文本類(lèi)型;
用ASP連接各種數據庫的方法
一、ASP的對象存取數據庫方法
在A(yíng)SP中,用來(lái)存取數據庫的對象統稱(chēng)ADO(Active Data Objects),主要含有三種對象:
Connection、Recordset 、Command
Connection:負責打開(kāi)或連接數據
Recordset:負責存取數據表
Command:負責對數據庫執行行動(dòng)查詢(xún)命令
二、連接各數據庫的驅動(dòng)程序
連接各數據庫可以使用驅動(dòng)程序,也可以使用數據源,不過(guò)我建議大家使用驅動(dòng)程序,因為使用驅動(dòng)程序非常
方便、簡(jiǎn)單,而使用數據源比較麻煩。
ODBC鏈接
適合數據庫類(lèi)型 鏈接方式
access "Driver={microsoft access driver(*.mdb)};dbq=*.mdb;uid=admin;
pwd=pass;"
dBase "Driver={microsoft dbase driver(*.dbf)};driverid=277;dbq=------------;"
Oracle "Driver={microsoft odbc for oracle};server=oraclesever.world;uid=admin;
pwd=pass;"
MSSQL server "Driver={sql server};server=servername;database=dbname;uid=sa;
pwd=pass;"
MS text "Driver={microsoft text driver(*.txt; *.csv)};dbq=-----;extensions=asc,csv,tab,txt;Persist SecurityInfo=false;"
Visual Foxpro "Driver={microsoft Visual Foxpro driver};sourcetype=DBC;sourceDB=*.dbc;
Exclusive=No;"
MySQL "Driver={mysql};database=yourdatabase;uid=username;pwd=yourpassword;
option=16386;"
適合的數據庫類(lèi)型 鏈接方式
access "Provider=microsoft.jet.oledb.4.0;data source=your_database_path;user id=admin;
password=pass;"
Oracle "Provider=OraOLEDB.Oracle;data source=dbname;user id=admin;password=pass;"
MS SQL Server "Provider=SQLOLEDB;data source=machinename;initial catalog=dbname;
userid=sa;password=pass;"
MS text "Provider=microsof.jet.oledb.4.0;data source=your_path;Extended Properties′text;
FMT=Delimited′"
dim conn
set conn = server.createobject("adodb.connection")
conn.open = "provider=microsoft.jet.oledb.4.0;" & "data source = " & server.mappath
("../db/bbs.mdb") 其中../db/bbs.mdb是你的數據庫存放的相對路徑!如果你的數據庫和ASP文件在
同一目錄下,你只要這樣寫(xiě)就可以了:
dim conn
set conn = server.createobject("adodb.connection")
conn.open = "provider=microsoft.jet.oledb.4.0;" & "data source = " & server.mappath
("bbs.mdb") 有許多初學(xué)者在遇到數據庫連接時(shí)總是會(huì )出問(wèn)題,然而使用上面的驅動(dòng)程序只要
你的數據庫路徑選對了就不會(huì )出問(wèn)題了
一些ASP初學(xué)者常用的代碼
1.獲得系統時(shí)間:
<%=now()%>
2.取得來(lái)訪(fǎng)用的IP:
<%=request.serverVariables("remote_host")%>
3.獲得系統,瀏覽器版本:
<script>
window.document.write("版本:"+navigator.appName+navigator.appVersion+" browser.")
</script>
4.去除IE混動(dòng)條:
<body scroll="no">
<body style="overflow-y:hidden">
5.進(jìn)入網(wǎng)站,跳出廣告:
<script language="JavaScript">
<!--
<!-- 注意更改文件所在路徑-->
window.open(‘‘http://www.XXXXXX.com‘‘,‘‘‘‘,‘‘height=200,width=300,top=0,left=30‘‘);
// -->
</script>
6.隨機數:
<%randomize%>
<%=(int(rnd()*n)+1)%>
N為可改變數
7.向上混動(dòng)代碼:
<marquee direction="up" scrolldelay="200" style="font-size: 9pt; color: #FF0000; line-
8.自動(dòng)關(guān)閉網(wǎng)頁(yè):
<script LANGUAGE="JavaScript">
<!--
setTimeout(‘‘window.close();‘‘, 10000); //60秒后關(guān)閉
// -->
</script>
<p align="center">本頁(yè)10秒后自動(dòng)關(guān)閉,請注意刷新頁(yè)面</p>
9.隨機背景音樂(lè ):
<%randomize%>
<bgsound src="mids/<%=(int(rnd()*60)+1)%>.mid" loop="-1">
10.自動(dòng)刷新本頁(yè)面:
<script>
<!--
var parselimit=limit.split(":")
parselimit=parselimit[0]*60+parselimit[1]*1
}
function beginrefresh(){
if (!document.images)
return
if (parselimit==1)
window.location.reload()
else{
parselimit-=1
curmin=Math.floor(parselimit/60)
cursec=parselimit%60
if (curmin!=0)
curtime=curmin+"分"+cursec+"秒后重刷本頁(yè)!"
else
curtime=cursec+"秒后重刷本頁(yè)!"
window.status=curtime
setTimeout("beginrefresh()",1000)
}
}
file://-->
</script>
<%
option explicit
dim startime,endtime,conn,connstr,db
startime=timer()
‘更改數據庫名字
db="data/dvBBS5.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
‘如果你的服務(wù)器采用較老版本Access驅動(dòng),請用下面連接方法
‘connstr="driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath(db)
conn.Open connstr
function CloseDatabase
Conn.close
Set conn = Nothing
End Function
%>
12.SQL數據庫連接:
<%
option explicit
dim startime,endtime,conn,connstr,db
startime=timer()
connstr="driver={SQL Server};server=HUDENQ-N11T33NB;uid=sa;pwd=xsfeihu;database=dvbbs"
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open connstr
function CloseDatabase
Conn.close
Set conn = Nothing
End Function
%>
13.用鍵盤(pán)打開(kāi)網(wǎng)頁(yè)代碼:
<script language="javascript">
function ctlent(eventobject)
{
if((event.ctrlKey && window.event.keyCode==13)||(event.altKey && window.event.keyCode==83))
{
window.open(‘網(wǎng)址‘,‘‘,‘‘)
}
}
</script>
<div z-Index:2><object xxx></object></div> # 前面
<div z-Index:1><object xxx></object></div> # 后面
<div id="Layer2" style="position:absolute; top:40;width:400px; height:95px;z-
<div id="Layer1" style="position:absolute; top:50;width:200px; height:115px;z-
15.動(dòng)網(wǎng)FLASH廣告代碼:
<object classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000"
16.VBS彈出窗口小代碼:
<script language=vbscript>
msgbox"你還沒(méi)有注冊或登陸論壇","0","精品論壇"
location.href = "login.asp"
</script>
16.使用FSO修改文件特定內容的函數
function FSOchange(filename,Target,String)
Dim objFSO,objCountFile,FiletempData
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objCountFile = objFSO.OpenTextFile(Server.MapPath(filename),1,True)
FiletempData = objCountFile.ReadAll
objCountFile.Close
FiletempData=Replace(FiletempData,Target,String)
Set objCountFile=objFSO.CreateTextFile(Server.MapPath(filename),True)
objCountFile.Write FiletempData
objCountFile.Close
Set objCountFile=Nothing
Set objFSO = Nothing
End Function
17.使用FSO讀取文件內容的函數
function FSOFileRead(filename)
Dim objFSO,objCountFile,FiletempData
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objCountFile = objFSO.OpenTextFile(Server.MapPath(filename),1,True)
FSOFileRead = objCountFile.ReadAll
objCountFile.Close
Set objCountFile=Nothing
Set objFSO = Nothing
End Function
18.使用FSO讀取文件某一行的函數
function FSOlinedit(filename,lineNum)
if linenum < 1 then exit function
dim fso,f,temparray,tempcnt
set fso = server.CreateObject("scripting.filesystemobject")
if not fso.fileExists(server.mappath(filename)) then exit function
set f = fso.opentextfile(server.mappath(filename),1)
if not f.AtEndofStream then
tempcnt = f.readall
f.close
set f = nothing
temparray = split(tempcnt,chr(13)&chr(10))
if lineNum>ubound(temparray)+1 then
exit function
else
FSOlinedit = temparray(lineNum-1)
end if
end if
end function
19.使用FSO寫(xiě)文件某一行的函數
function FSOlinewrite(filename,lineNum,Linecontent)
if linenum < 1 then exit function
dim fso,f,temparray,tempCnt
set fso = server.CreateObject("scripting.filesystemobject")
if not fso.fileExists(server.mappath(filename)) then exit function
set f = fso.opentextfile(server.mappath(filename),1)
if not f.AtEndofStream then
tempcnt = f.readall
f.close
temparray = split(tempcnt,chr(13)&chr(10))
if lineNum>ubound(temparray)+1 then
exit function
else
temparray(lineNum-1) = lineContent
end if
tempcnt = join(temparray,chr(13)&chr(10))
set f = fso.createtextfile(server.mappath(filename),true)
f.write tempcnt
end if
f.close
set f = nothing
end function
20.使用FSO添加文件新行的函數
function FSOappline(filename,Linecontent)
dim fso,f
set fso = server.CreateObject("scripting.filesystemobject")
if not fso.fileExists(server.mappath(filename)) then exit function
set f = fso.opentextfile(server.mappath(filename),8,1)
f.write chr(13)&chr(10)&Linecontent
f.close
set f = nothing
end function
21.讀文件最后一行的函數
function FSOlastline(filename)
dim fso,f,temparray,tempcnt
set fso = server.CreateObject("scripting.filesystemobject")
if not fso.fileExists(server.mappath(filename)) then exit function
set f = fso.opentextfile(server.mappath(filename),1)
if not f.AtEndofStream then
tempcnt = f.readall
f.close
set f = nothing
temparray = split(tempcnt,chr(13)&chr(10))
FSOlastline = temparray(ubound(temparray))
end if
end function
ServerVariables 集合檢索預定的環(huán)境變量。
Request.ServerVariables (server environment variable)
服務(wù)器環(huán)境變量
指定要檢索的服務(wù)器環(huán)境變量名??梢允褂孟旅媪谐龅闹?。變量 說(shuō)明
ALL_HTTP 客戶(hù)端發(fā)送的所有 HTTP 標題文件。
ALL_RAW 檢索未處理表格中所有的標題。ALL_RAW 和 ALL_HTTP 不同,ALL_HTTP 在標題文件名前面放置 HTTP_ prefix,并且標題名稱(chēng)總是大寫(xiě)的。使用 ALL_RAW 時(shí),標題名稱(chēng)和值只在客戶(hù)端發(fā)送時(shí)才出現。
APPL_MD_PATH 檢索 ISAPI DLL 的 (WAM) Application 的元數據庫路徑。
APPL_PHYSICAL_PATH 檢索與元數據庫路徑相應的物理路徑。IIS 通過(guò)將 APPL_MD_PATH 轉換為物理(目錄)路徑以返回值。
AUTH_PASSWORD 該值輸入到客戶(hù)端的鑒定對話(huà)中。只有使用基本鑒定時(shí),該變量才可用。
AUTH_TYPE 這是用戶(hù)訪(fǎng)問(wèn)受保護的腳本時(shí),服務(wù)器用于檢驗用戶(hù)的驗證方法。
AUTH_USER 未被鑒定的用戶(hù)名。
CERT_COOKIE 客戶(hù)端驗證的唯一 ID,以字符串方式返回??勺鳛檎麄€(gè)客戶(hù)端驗證的簽字。
CERT_FLAGS 如有客戶(hù)端驗證,則 bit0 為 1。
如果客戶(hù)端驗證的驗證人無(wú)效(不在服務(wù)器承認的 CA 列表中),bit1 被設置為 1。
CERT_KEYSIZE 安全套接字層連接關(guān)鍵字的位數,如 128。
CERT_SECRETKEYSIZE 服務(wù)器驗證私人關(guān)鍵字的位數。如 1024。
CERT_SERIALNUMBER 用戶(hù)驗證的序列號字段。
CERT_SERVER_ISSUER 服務(wù)器驗證的頒發(fā)者字段。
CERT_SERVER_SUBJECT 服務(wù)器驗證的主字段。
CERT_SUBJECT 客戶(hù)端驗證的主字段。
CONTENT_LENGTH 客戶(hù)端發(fā)出內容的長(cháng)度。
CONTENT_TYPE 內容的數據類(lèi)型。同附加信息的查詢(xún)一起使用,如 HTTP 查詢(xún) GET、 POST 和 PUT。
GATEWAY_INTERFACE 服務(wù)器使用的 CGI 規格的修訂。格式為 CGI/revision。
HTTP_<HeaderName> HeaderName 存儲在標題文件中的值。未列入該表的標題文件必須以 HTTP_ 作為前綴,以使 ServerVariables 集合檢索其值。
注意 服務(wù)器將 HeaderName 中的下劃線(xiàn)(_)解釋為實(shí)際標題中的破折號。例如,如果您指定 HTTP_MY_HEADER,服務(wù)器將搜索以 MY-HEADER 為名發(fā)送的標題文件。
HTTPS_KEYSIZE 安全套接字層連接關(guān)鍵字的位數,如 128。
HTTPS_SECRETKEYSIZE 服務(wù)器驗證私人關(guān)鍵字的位數。如 1024。
HTTPS_SERVER_ISSUER 服務(wù)器驗證的頒發(fā)者字段。
HTTPS_SERVER_SUBJECT 服務(wù)器驗證的主字段。
INSTANCE_ID 文本格式 IIS 實(shí)例的 ID。如果實(shí)例 ID 為 1,則以字符形式出現。使用該變量可以檢索請求所屬的(元數據庫中)Web 服務(wù)器實(shí)例的 ID。
INSTANCE_META_PATH 響應請求的 IIS 實(shí)例的元數據庫路徑。
LOCAL_ADDR 返回接受請求的服務(wù)器地址。如果在綁定多個(gè) IP 地址的多宿主機器上查找請求所使用的地址時(shí),這條變量非常重要。
LOGON_USER 用戶(hù)登錄 Windows NT® 的賬號。
PATH_INFO 客戶(hù)端提供的額外路徑信息??梢允褂眠@些虛擬路徑和 PATH_INFO 服務(wù)器變量訪(fǎng)問(wèn)腳本。如果該信息來(lái)自 URL,在到達 CGI 腳本前就已經(jīng)由服務(wù)器解碼了。
PATH_TRANSLATED PATH_INFO 轉換后的版本,該變量獲取路徑并進(jìn)行必要的由虛擬至物理的映射。
QUERY_STRING 查詢(xún) HTTP 請求中問(wèn)號(?)后的信息。
REMOTE_ADDR 發(fā)出請求的遠程主機的 IP 地址。
REMOTE_HOST 發(fā)出請求的主機名稱(chēng)。如果服務(wù)器無(wú)此信息,它將設置為空的 MOTE_ADDR 變量。
REMOTE_USER 用戶(hù)發(fā)送的未映射的用戶(hù)名字符串。該名稱(chēng)是用戶(hù)實(shí)際發(fā)送的名稱(chēng),與服務(wù)器上驗證過(guò)濾器修改過(guò)后的名稱(chēng)相對。
REQUEST_METHOD 該方法用于提出請求。相當于用于 HTTP 的 GET、HEAD、POST 等等。
SCRIPT_NAME 執行腳本的虛擬路徑。用于自引用的 URL。
SERVER_NAME 出現在自引用 UAL 中的服務(wù)器主機名、DNS 化名或 IP 地址。
SERVER_PORT 發(fā)送請求的端口號。
SERVER_PORT_SECURE 包含 0 或 1 的字符串。如果安全端口處理了請求,則為 1,否則為 0。
SERVER_PROTOCOL 請求信息協(xié)議的名稱(chēng)和修訂。格式為 protocol/revision 。
SERVER_SOFTWARE 應答請求并運行網(wǎng)關(guān)的服務(wù)器軟件的名稱(chēng)和版本。格式為 name/version 。
URL 提供 URL 的基本部分。
注釋
如果客戶(hù)端發(fā)送的標題文件在上述表格中找不到,可以在調用 Request.ServerVariables 中給標題文件名加上 HTTP_ 的前綴以檢索其值。例如,如果客戶(hù)端發(fā)送標題文件
<TR><TD><B>Server Variable</B></TD><TD><B>Value</B></TD></TR>
<% For Each name In Request.ServerVariables %>
<TR><TD> <%= name %> </TD><TD> <%= Request.ServerVariables(name) %> </TD></TR>
</TABLE>
<% Next %>
下面的例子使用 Request 對象顯示一些服務(wù)器變量。
<!-- This example displays the content of several ServerVariables. -->
ALL_HTTP server variable =
<%= Request.ServerVariables("ALL_HTTP") %> <BR>
CONTENT_LENGTH server variable =
<%= Request.ServerVariables("CONTENT_LENGTH") %> <BR>
CONTENT_TYPE server variable =
<%= Request.ServerVariables("CONTENT_TYPE") %> <BR>
QUERY_STRING server variable =
<%= Request.ServerVariables("QUERY_STRING") %> <BR>
SERVER_SOFTWARE server variable =
<%= Request.ServerVariables("SERVER_SOFTWARE") %> <BR>
</HTML>
/scripts/mypage.asp">link to mypage.asp</a>
窗口在設定的時(shí)間內關(guān)閉
<script language="javascript">
<!--
function a(){
window.opener=null;
window.close();
}
settimeout("a()",6000);
//-->
</script>
<script language="javascript">
function kick()
{
if(div1.style.pixeltop>-140)
div1.style.pixeltop=div1.style.pixeltop-1
}
{
var p=setinterval("kick()",30);
}
{
div1.style.pixeltop=0;
div1.style.pixeltop=0;
}
</script>
<div style="top:0px; left:0px; position:absolute; background:red; width:531px; height:120; z-index: 0;" id="div1" onmouseover="on_it()"><img src="aa.jpg" width="179" height="146"><img src="dd.jpg" width="176" height="146"><img src="ff.jpg" width="175" height="146"></div>
<body id="b"> <form action="arr.asp" method="post" name="form1"> <input type="text" name="textfield" value="454"> <input type="submit" name="submit" value="提交"> </form> <script language="javascript" type="text/javascript"> function b.onload() { document.form1.submit(); } </script> </body>
自動(dòng)提交 ok
我也來(lái)貼一個(gè),條型碼code-128 c類(lèi)編碼,調用producehtml(str),code-128 c類(lèi)的編碼規則,自己去查。
這個(gè)也有php版,是國外的一個(gè)人寫(xiě)的,不過(guò)他的php版有一些bug,我從他的php版改來(lái)的,寫(xiě)得亂七八糟的,大家自己整理。
ascii= " !#$%&‘()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
dim arr128(106)
arr128(0) = "212222"‘c類(lèi)有自己的規則,這里的數字是表示白黑條的寬度
arr128(1) = "222122"
arr128(2) = "222221"
arr128(3) = "121223"
arr128(4) = "121322"
arr128(5) = "131222"
arr128(6) = "122213"
arr128(7) = "122312"
arr128(8) = "132212"
arr128(9) = "221213"
arr128(10) = "221312"
arr128(11) = "231212"
arr128(12) = "112232"
arr128(13) = "122132"
arr128(14) = "122231"
arr128(15) = "113222"
arr128(16) = "123122"
arr128(17) = "123221"‘1
arr128(18) = "223211"
arr128(19) = "221132"
arr128(20) = "221231"
arr128(21) = "213212"
arr128(22) = "223112"
arr128(23) = "312131"
arr128(24) = "311222"
arr128(25) = "321122"‘9
arr128(26) = "321221"
arr128(27) = "312212"
arr128(28) = "322112"
arr128(29) = "322211"
arr128(30) = "212123"
arr128(31) = "212321"
arr128(32) = "232121"
arr128(33) = "111323"
arr128(34) = "131123"
arr128(35) = "131321"
arr128(36) = "112313"
arr128(37) = "132113"
arr128(38) = "132311"
arr128(39) = "211313"
arr128(40) = "231113"
arr128(41) = "231311"
arr128(42) = "112133"
arr128(43) = "112331"
arr128(44) = "132131"
arr128(45) = "113123"
arr128(46) = "113321"
arr128(47) = "133121"
arr128(48) = "313121"
arr128(49) = "211331"
arr128(50) = "231131"
arr128(51) = "213113"
arr128(52) = "213311"
arr128(53) = "213131"
arr128(54) = "311123"
arr128(55) = "311321"
arr128(56) = "331121"
arr128(57) = "312113"
arr128(58) = "312311"
arr128(59) = "332111"
arr128(60) = "314111"
arr128(61) = "221411"
arr128(62) = "431111"
arr128(63) = "111224"
arr128(64) = "111422"
arr128(65) = "121124"
arr128(66) = "121421"
arr128(67) = "141122"
arr128(68) = "141221"
arr128(69) = "112214"
arr128(70) = "112412"
arr128(71) = "122114"
arr128(72) = "122411"
arr128(73) = "142112"
arr128(74) = "142211"
arr128(75) = "241211"
arr128(76) = "221114"
arr128(77) = "413111"
arr128(78) = "241112"
arr128(79) = "134111"
arr128(80) = "111242"
arr128(81) = "121142"
arr128(82) = "121241"
arr128(83) = "114212"
arr128(84) = "124112"
arr128(85) = "124211"
arr128(86) = "411212"
arr128(87) = "421112"
arr128(88) = "421211"
arr128(89) = "212141"
arr128(90) = "214121"
arr128(91) = "412121"
arr128(92) = "111143"
arr128(93) = "111341"
arr128(94) = "131141"
arr128(95) = "114113"
arr128(96) = "114311"
arr128(97) = "411113"
arr128(98) = "411311"
arr128(99) = "113141"
arr128(100) = "114131"
arr128(101) = "311141"
arr128(102) = "411131"
arr128(103) = "211412"
arr128(104) = "211214"
arr128(105) = "211232"
arr128(106) = "2331112"
‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
function producearray(intext)
‘response.write intext
‘response.end
total = 104
‘//// start
ticketarray= "104"
onchar=0
‘//// go thru array get letters
for z=1 to len(intext)
pos = instr(ascii,mid(intext,z,1))
‘/// skip, not found chars,continue loop
‘text=text&mid(intext,i,i)&"<br>"
ticketarray = ticketarray&","&pos
total = total+( onchar * pos )
next
‘response.write text
‘response.end()
‘/// check char
ticketarray =ticketarray&","&( total mod 103 )
‘//// end
ticketarray=ticketarray&",106"
producearray=ticketarray
end function
‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
function producehtml(givetext)
alignment=0
fheight=30
fwidth=1
bimg="a.jpg"‘a(chǎn)與b的寬都為1,a為黑色,b為白色
wimg="b.jpg"
dim color(1)
ticketarray = producearray(givetext)
html ="<table cellpadding=5 cellspacing=0 border=0 bgcolor=white align=‘left‘><tr><td>"
‘/// array of images
color(0) = bimg
color(1) = wimg
‘//// output html
‘if ( is_array($ticketarray) ) {
for each ele in ticketarray
bon = 0
info = arr128(int(ele))
for i=1 to len(info)
if alignment=0 then
html = html&"<img src=‘"&color(bon)&"‘ height=‘"&fheight&"‘ width = ‘"&int(mid(info,i,1)*fwidth)&"‘>"
else
html = html&"<img src=‘"&color(bon)&"‘ width=‘"&fheight&"‘ height = ‘"&int(mid(info,i,1)*fwidth)&"‘>"
end if
if bon=0 then
bon=1
else
bon=0
end if
next
next
producehtml=html
end function
%>
asp操作excel技術(shù)總結
目錄
一、 環(huán)境配置
二、 asp對excel的基本操作
三、 asp操作excel生成數據表
四、 asp操作excel生成chart圖
五、 服務(wù)器端excel文件瀏覽、下載、刪除方案
六、 附錄
一、 環(huán)境配置
服務(wù)器端的環(huán)境配置從參考資料上看,微軟系列的配置應該都行,即:
1.win9x+pws+office
2.win2000 professional+pws+office
3.win2000 server+iis+office
目前筆者測試成功的環(huán)境是后二者。office的版本沒(méi)有特殊要求,考慮到客戶(hù)機配置的不確定性和下兼容特性,建議服務(wù)器端office版本不要太高,以防止客戶(hù)機下載后無(wú)法正確顯示。
服務(wù)器端環(huán)境配置還有兩個(gè)偶然的發(fā)現是:
1. 筆者開(kāi)發(fā)機器上原來(lái)裝有金山的wps2002,結果excel對象創(chuàng )建始終出現問(wèn)題,卸載wps2002后,錯誤消失。
2. 筆者開(kāi)發(fā)asp代碼喜歡用frontpage,結果發(fā)現如果frontpage打開(kāi)(服務(wù)器端),對象創(chuàng )建出現不穩定現象,時(shí)而成功時(shí)而不成功。擴展考察后發(fā)現,office系列的軟件如果在服務(wù)器端運行,則excel對象的創(chuàng )建很難成功。
服務(wù)器端還必須要設置的一點(diǎn)是com組件的操作權限。在命令行鍵入“dcomcnfg”,則進(jìn)入com組件配置界面,選擇microsoft excel后點(diǎn)擊屬性按鈕,將三個(gè)單選項一律選擇自定義,編輯中將everyone加入所有權限。保存完畢后重新啟動(dòng)服務(wù)器。
客戶(hù)端的環(huán)境配置沒(méi)發(fā)現什么特別講究的地方,只要裝有office和ie即可,版本通用的好象都可以。
二、 asp對excel的基本操作
1、 建立excel對象
set objexcelapp = createobject("excel.application")
objexcelapp.displayalerts = false 不顯示警告
objexcelapp.application.visible = false 不顯示界面
2、 新建excel文件
objexcelapp.workbooks.add
set objexcelbook = objexcelapp.activeworkbook
set objexcelsheets = objexcelbook.worksheets
set objexcelsheet = objexcelbook.sheets(1)
3、 讀取已有excel文件
straddr = server.mappath(".")
objexcelapp.workbooks.open(straddr & "\templet\table.xls")
set objexcelbook = objexcelapp.activeworkbook
set objexcelsheets = objexcelbook.worksheets
set objexcelsheet = objexcelbook.sheets(1)
4、 另存excel文件
objexcelbook.saveas straddr & "\temp\table.xls"
5、 保存excel文件
objexcelbook.save ?。üP者測試時(shí)保存成功,頁(yè)面報錯。)
6、 退出excel操作
objexcelapp.quit 一定要退出
set objexcelapp = nothing
三、 asp操作excel生成數據表
1、 在一個(gè)范圍內插入數據
objexcelsheet.range("b3:k3").value = array("67", "87", "5", "9", "7", "45", "45", "54", "54", "10")
2、 在一個(gè)單元格內插入數據
objexcelsheet.cells(3,1).value="internet explorer"
3、 選中一個(gè)范圍
4、 單元格左邊畫(huà)粗線(xiàn)條
5、 單元格右邊畫(huà)粗線(xiàn)條
6、 單元格上邊畫(huà)粗線(xiàn)條
7、 單元格下邊畫(huà)粗線(xiàn)條
8、 單元格設定背景色
9、 合并單元格
10、 插入行
11、 插入列
四、 asp操作excel生成chart圖
1、 創(chuàng )建chart圖
objexcelapp.charts.add
2、 設定chart圖種類(lèi)
objexcelapp.activechart.charttype = 97
注:二維折線(xiàn)圖,4;二維餅圖,5;二維柱形圖,51
3、 設定chart圖標題
objexcelapp.activechart.hastitle = true
objexcelapp.activechart.charttitle.text = "a test chart"
4、 通過(guò)表格數據設定圖形
objexcelapp.activechart.setsourcedata objexcelsheet.range("a1:k5"),1
5、 直接設定圖形數據(推薦)
objexcelapp.activechart.seriescollection.newseries
objexcelapp.activechart.seriescollection(1).name = "=""333"""
objexcelapp.activechart.seriescollection(1).values = "="
6、 綁定chart圖
objexcelapp.activechart.location 1
7、 顯示數據表
objexcelapp.activechart.hasdatatable = true
8、 顯示圖例
objexcelapp.activechart.datatable.showlegendkey = true
五、 服務(wù)器端excel文件瀏覽、下載、刪除方案
瀏覽的解決方法很多,“location.href=”,“navigate”,“response.redirect”都可以實(shí)現,建議用客戶(hù)端的方法,原因是給服務(wù)器更多的時(shí)間生成excel文件。
下載的實(shí)現要麻煩一些。用網(wǎng)上現成的服務(wù)器端下載組件或自己定制開(kāi)發(fā)一個(gè)組件是比較好的方案。另外一種方法是在客戶(hù)端操作excel組件,由客戶(hù)端操作服務(wù)器端excel文件另存至客戶(hù)端。這種方法要求客戶(hù)端開(kāi)放不安全activex控件的操作權限,考慮到通知每個(gè)客戶(hù)將服務(wù)器設置為可信站點(diǎn)的麻煩程度建議還是用第一個(gè)方法比較省事。
刪除方案由三部分組成:
a: 同一用戶(hù)生成的excel文件用同一個(gè)文件名,文件名可用用戶(hù)id號或sessionid號等可確信不重復字符串組成。這樣新文件生成時(shí)自動(dòng)覆蓋上一文件。
b: 在global.asa文件中設置session_onend事件激發(fā)時(shí),刪除這個(gè)用戶(hù)的excel暫存文件。
c: 在global.asa文件中設置application_onstart事件激發(fā)時(shí),刪除暫存目錄下的所有文件。
注:建議目錄結構 \src 代碼目錄 \templet 模板目錄 \temp 暫存目錄
六、 附錄
出錯時(shí)excel出現的死進(jìn)程出現是一件很頭疼的事情。在每個(gè)文件前加上“on error resume next”將有助于改善這種情況,因為它會(huì )不管文件是否產(chǎn)生錯誤都堅持執行到“application.quit”,保證每次程序執行完不留下死進(jìn)程。
評論
# re: asp操作excel技術(shù)總結
這個(gè)程序一共由三個(gè)文件構成,第一個(gè)文件的文件名為:toexcel.asp是主文件,內容如下:
filename="excel.xls" ‘ 要輸出的excel文件的文件名, 你只要改以上兩句就行了,其它的都不要改.
set conn=nothing
set adf=server.createobject("adodb.stream")
with adf
.type=2
.lineseparator=10
.open
.loadfromfile (server.mappath(filename))
.charset="gb2312"
.position=2
readtext=.readtext
.cancel()
.close()
end with
set ads=nothing
end function
set fs= createobject("scripting.filesystemobject")
set ts=fs.createtextfile(server.mappath(filename),true)
ts.writeline(data)
ts.close
set ts=nothing
set fs=nothing
end sub
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,3
toexcellr="<table width=‘100%‘><tr >"
set myfield=rs.fields
dim fieldname(50)
for i=0 to myfield.count-1
toexcellr=toexcellr&"<td class=xl24>"&myfield(i).name&"</td>"
fieldname(i)=myfield(i).name
if myfield(i).type=135 then datename=datename&myfield(i).name&","
next
toexcellr=toexcellr&"</tr>"
do while not rs.eof
toexcellr=toexcellr&"<tr>"
for i=0 to myfield.count-1
if instr(datename,fieldname(i)&",")<>0 then
if not isnull(rs(fieldname(i))) then
toexcellr=toexcellr&"<td class=xl25 ><p align=‘left‘>"&formatdatetime(rs(fieldname(i)),2)&"</p></td>"
else
toexcellr=toexcellr&"<td class=xl25 ><p align=‘left‘> </p></td>"
end if
else
toexcellr=toexcellr&"<td class=xl24 >"&rs(fieldname(i))&"</td>"
end if
next
toexcellr=toexcellr&"</tr>"
rs.movenext
loop
toexcellr=toexcellr&"</table>"
tou=readtext("tou.txt")
di=readtext("di.txt")
toexcellr=tou&toexcellr&di
call savetext(filename,toexcellr)
end sub
%>
<html>
<head>
<meta http-equiv="refresh" content="3;url=<%=filename%>">
<meta http-equiv="content-language" content="en-us">
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<title>正在生成exlce文件</title>
</head>
<body>
正在生成exlce文件....
</body>
</html>
collapse;table-layout:fixed;width:216pt‘>
<![if supportmisalignedcolumns]>
<tr height=0 style=‘display:none‘>
<td width=72 style=‘width:54pt‘></td>
<td width=72 style=‘width:54pt‘></td>
<td width=72 style=‘width:54pt‘></td>
<td width=72 style=‘width:54pt‘></td>
</tr>
<![endif]>
</table>
<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="
<meta http-equiv=content-type content="text/html; charset=gb2312">
<meta name=progid content=excel.sheet>
<meta name=generator content="microsoft excel 9">
<link rel=file-list href="./222.files/filelist.xml">
<link rel=edit-time-data href="./222.files/editdata.mso">
<link rel=ole-object-data href="./222.files/oledata.mso">
<!--[if gte mso 9]><xml>
<documentproperties>
<author>xky</author>
<lastauthor>xky</lastauthor>
<created>2002-05-27t17:51:00z</created>
<lastsaved>2002-06-22t10:03:03z</lastsaved>
<company>zydn</company>
<version>9.2812</version>
</documentproperties>
<officedocumentsettings>
<downloadcomponents/>
<locationofcomponents href="file:///e:/msowc.cab"/>
</officedocumentsettings>
</xml><![endif]-->
<style>
<!--table
{mso-displayed-decimal-separator:"\.";
mso-displayed-thousand-separator:"\,";}
@page
{margin:1.0in .75in 1.0in .75in;
mso-header-margin:.5in;
mso-footer-margin:.5in;}
tr
{mso-height-source:auto;
mso-ruby-visibility:none;}
col
{mso-width-source:auto;
mso-ruby-visibility:none;}
br
{mso-data-placement:same-cell;}
.style0
{mso-number-format:general;
text-align:general;
vertical-align:bottom;
white-space:nowrap;
mso-rotate:0;
mso-background-source:auto;
mso-pattern:auto;
color:windowtext;
font-size:9.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:宋體;
mso-generic-font-family:auto;
mso-font-charset:134;
border:none;
mso-protection:locked visible;
mso-style-name:常規;
mso-style-id:0;}
td
{mso-style-parent:style0;
padding-top:1px;
padding-right:1px;
padding-left:1px;
mso-ignore:padding;
color:windowtext;
font-size:9.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:宋體;
mso-generic-font-family:auto;
mso-font-charset:134;
mso-number-format:general;
text-align:general;
vertical-align:bottom;
border:none;
mso-background-source:auto;
mso-pattern:auto;
mso-protection:locked visible;
white-space:nowrap;
mso-rotate:0;}
.xl24
{mso-style-parent:style0;
border:.5pt solid windowtext;}
.xl25
{mso-style-parent:style0;
mso-number-format:"long date";
text-align:left;
border:.5pt solid windowtext;}
ruby
{ruby-align:left;}
rt
{color:windowtext;
font-size:9.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:宋體;
mso-generic-font-family:auto;
mso-font-charset:134;
mso-char-type:none;
display:none;}
-->
</style>
<!--[if gte mso 9]><xml>
<x:excelworkbook>
<x:excelworksheets>
<x:excelworksheet>
<x:name>sheet1</x:name>
<x:worksheetoptions>
<x:defaultrowheight>225</x:defaultrowheight>
<x:print>
<x:validprinterinfo/>
<x:papersizeindex>9</x:papersizeindex>
<x:horizontalresolution>-3</x:horizontalresolution>
<x:verticalresolution>0</x:verticalresolution>
</x:print>
<x:selected/>
<x:panes>
<x:pane>
<x:number>3</x:number>
<x:activerow>24</x:activerow>
<x:activecol>5</x:activecol>
</x:pane>
</x:panes>
<x:protectcontents>false</x:protectcontents>
<x:protectobjects>false</x:protectobjects>
<x:protectscenarios>false</x:protectscenarios>
</x:worksheetoptions>
</x:excelworksheet>
<x:excelworksheet>
<x:name>sheet2</x:name>
<x:worksheetoptions>
<x:defaultrowheight>225</x:defaultrowheight>
<x:protectcontents>false</x:protectcontents>
<x:protectobjects>false</x:protectobjects>
<x:protectscenarios>false</x:protectscenarios>
</x:worksheetoptions>
</x:excelworksheet>
<x:excelworksheet>
<x:name>sheet3</x:name>
<x:worksheetoptions>
<x:defaultrowheight>225</x:defaultrowheight>
<x:protectcontents>false</x:protectcontents>
<x:protectobjects>false</x:protectobjects>
<x:protectscenarios>false</x:protectscenarios>
</x:worksheetoptions>
</x:excelworksheet>
</x:excelworksheets>
<x:windowheight>6600</x:windowheight>
<x:windowwidth>12000</x:windowwidth>
<x:windowtopx>0</x:windowtopx>
<x:windowtopy>1395</x:windowtopy>
<x:protectstructure>false</x:protectstructure>
<x:protectwindows>false</x:protectwindows>
</x:excelworkbook>
</xml><![endif]-->
</head>
如何在asp中實(shí)現網(wǎng)絡(luò )打印功能
使用到的技術(shù):
asp,wsh,vbscript
文件aspprint.asp代碼如下:
<%@ language=vbscript %>
<%
option explicit
dim strprinterpath ‘form中保存網(wǎng)絡(luò )打印機路徑的值
dim strusername ‘form中用戶(hù)名的值
dim strpassword ‘form中密碼的值
dim strmessage ‘form打印內容的值
dim objfs ‘vbscript中的文件系統對象
dim objwshnet ‘wsh中的網(wǎng)絡(luò )對象
dim objprinter ‘打印對象
%>
<head>
<meta name="generator" content="microsoft visual studio 6.0">
</head>
<body>
if strsubmit = "" then
%>
由于我是演示起見(jiàn),其中有關(guān)nt的賬號和密碼都是使用了不加密的手段在
asp中傳遞的
真正的運用中應該對該登錄過(guò)程進(jìn)行安全處理。
<form action="aspprint.asp" method=post id=form name=form>
<table width=100% align=center border=0 cellspacing=1 cellpadding
=1>
<tr>
<td align=right nowrap>網(wǎng)絡(luò )打印機路徑:</td>
<td align=left nowrap><input type="text" id=printerpath nam
e=printerpath
value="\\< domain >\< printer >"></td>
</tr>
<tr>
<td align=right nowrap>登錄賬號:</td>
<td align=left nowrap><input type="text" id=username name=u
sername
value="<% = strusername %>"></td>
</tr>
<tr>
<td align=right nowrap>登錄口令:</td>
<td align=left nowrap><input type="password" id=password
name=password></td>
</tr>
<tr>
<td align=right nowrap>請輸入你想打印的文字:</td>
<td align=left nowrap><textarea rows=2 cols=20 id=message
</tr>
<tr>
<td align=right nowrap> </td>
<td align=left nowrap><input type="submit" value="submit"
</tr>
</table>
</form>
<%
else
‘ 從form中取得響應信息。
strprinterpath = request.form("printerpath")
strusername = request.form("username")
strpassword = request.form("password")
strmessage = request.form("message")
work object. the network object will
give us the methods we need to open a printer connection, and the fi
lesystemobject will allow us to stream our
output to the printer. we create these objects in the following code
example:
set objwshnet = createobject("wscript.network")
‘ 使用wsh連接網(wǎng)絡(luò )打印機
objwshnet.addprinterconnection "lpt1", strprinterpath, false, str
username, strpassword
‘ 使用文件系統對象將打印設備作為一個(gè)文件使用
set objprinter = objfs.createtextfile("lpt1:", true)
‘ 給打印設備送出文本
objprinter.write(strmessage)
‘關(guān)閉打印設備對象并進(jìn)行錯誤陷阱處理
on error resume next
objprinter.close
‘ 如果發(fā)生錯誤,關(guān)閉打印連接,并輸出錯誤信息
if err then
response.write ("error # " & cstr(err.number) & " " & err.desc
ription)
err.clear
else
‘ 操作成功,輸出確認信息
response.write("<center>")
response.write("<table width=100% align=center border=0 cellsp
acing=1 cellpadding=1>")
response.write("<tr><td align=right><b>打印消息送出:</b></td>"
)
response.write("<td align=left>" & strmessage & "</td></tr>")
>")
response.write("<td align=left>" & strprinterpath & "</td></tr
>")
response.write("<tr><td align=right><b>登錄賬號:</b></td>")
response.write("<td align=left>" & strusername & "</td></tr>")
response.write("</center>")
end if
‘ 取消打印連接
objwshnet.removeprinterconnection "lpt1:"
set objwshnet = nothing
set objfs = nothing
set objprinter = nothing
end if
%>
</body>
</html>
response_buffer.asp
<%‘response.buffer=true%>
<a href="a">a</a>
<%response.redirect "request_form.htm"%>
①.當關(guān)閉iis的緩沖功能,訪(fǎng)問(wèn)該頁(yè)面時(shí)出錯
a
答復對象 錯誤 ‘a(chǎn)sp 0156 : 80004005‘
頭錯
/course/response_buffer.asp,行3
http 頭已經(jīng)寫(xiě)入到 客戶(hù)瀏覽器。任何 http 頭的修改必須在寫(xiě)入頁(yè)內容之前。
②.當關(guān)閉iis的緩沖功能,去掉文件第一行的注釋?zhuān)瑒t頁(yè)面重定向成功
③.當打開(kāi)iis的緩沖功能,無(wú)論是否去掉文件第一行的注釋?zhuān)?yè)面重定向都成功
問(wèn)題:如何保護自己的asp源代碼不泄露?
〈%
set mail = server.createobject("cdonts.newmail")
mail.to ="abc@xxx.com"
mail.from ="yourmail@xxx.com"
mail.subject ="主題"
mail.body ="e-mail內容"
mail.send
%〉
問(wèn)題:asp與數據庫連接一定要在服務(wù)器端設置dsn嗎?
set conn=server.createobject("adodb.connection")
connpath="dbq="&server.mappath("yourtable.mdb")
conn.open"driver={microsoft access driver (.mdb)};"&connpath
set rs=conn.execute("selectfrom authors")
〈% for each item in request.form %〉
〈input namee="〈%=item%〉"type="hidden"
value="〈%=server.htmlencode(request.form(item)) %〉"〉
〈% next %〉
〈/form〉
〈%request. querystring ("bh")%〉
問(wèn)題:如何用asp實(shí)現在線(xiàn)人數統計?
golobal.asa文件
sub session—onstart
application("online")=application("online")+1
end sub
sub session—onend
application("online")=application("online")-1
end sub
sub application—onstard
application("online")=0
end sub
sub application—onend
application("online")=0
end sub
〈/script〉
tmp=cstr(tmp)
dim disp(20)
dim images(20)
dbbits=len(tmp)
for i= 1 to dbbits
disp(i)=left(right(tmp,i),i-(i-1))
next
for i=dbbits to 1 step -1
images(i)="〈img src="&"http://xxxx.com.cn/pic"&"/"&disp(i)&".gif〉"
response.write"document.write(′"&images(i)&"′);"
next %〉
dim t1,t2
t1=now()
response.write"運行這段asp代碼用了"&cstr(cdbl((t2-t1)*24*60*60))&"秒"
%〉
一個(gè)操作讀寫(xiě)已存在excel文件的例子
strsource=filepath & "test.xls"‘打開(kāi)一個(gè)已經(jīng)存在的test.xls文件,filepath為物理絕對路徑
xlapp.workbooks.open(strsource)
set xlbook = xlapp.activeworkbook ‘打開(kāi)book
set xlsheet = xlbook.worksheets(1) ‘打開(kāi)其中的一個(gè)sheet
xlbook.save ‘保存該excel文件
xlbook.saveas filepath & "test2.xls" ‘另存一個(gè)文件
set xlsheet=nothing ‘一定要關(guān)閉,否則以后會(huì )一直存在一個(gè)無(wú)法釋放的excel進(jìn)程
set xlbook=nothing
xlapp.quit
1excel文件所在的路徑目錄,要讓iuser_即asp運行的用戶(hù)有讀寫(xiě)權限,否則
會(huì )報錯。
2服務(wù)器端還必須要設置com組件的操作權限。在命令行鍵入“dcomcnfg”,
進(jìn)入com組件配置界面,選擇microsoft excel后點(diǎn)擊屬性按鈕,將三個(gè)單選
項一律選擇自定義,編輯中將everyone加入所有權限。保存完畢后重新啟動(dòng)
服務(wù)器。
如何使用事務(wù)處理、存儲過(guò)程和視圖?
@sid int output
as
set @sid=2
(@user_name varchar(40),@password varchar(20))
as
if exists(select id from user_info where user_name=@user_name and password=@password)
return 1
else
return 0
(@user_name varchar(40),@password varchar(20))
as
select id from user_info where user_name=@user_name and password=@password
(@user_name varchar(40),@password varchar(20))
as
set xact_abort on
begin transaction
delete from user_info where user_name=@user_name and password=@password
commit transaction
set xact_abort off
select * from user_info
<!-- #include virtual="/adovbs.inc" -->
<%
set conn=server.createobject("adodb.connection")
conn.open "course_dsn","course_user","course_password"
‘create procedure [user_info_1]
‘(@user_name varchar(40),@password varchar(20))
‘a(chǎn)s
‘select id from user_info where user_name=@user_name and password=@password
response.write "普通的調用方法:<br>"
set rs=server.createobject("adodb.recordset")
sql="user_info_1 ‘"&request.querystring("user_name")&"‘,‘"&request.querystring("password")&"‘"
rs.open sql,conn,1,1
response.write rs("id")&"<br>"
rs.close
‘create procedure [user_info_3] as
‘select * from user_info
response.write "<br>返回紀錄集,可以使用recordcount等屬性:"
sql="exec user_info_3"
rs.open sql,conn,1,1
for i=1 to rs.recordcount
response.write "<br>"&rs("user_name")
rs.movenext
next
rs.close
set rs=nothing
‘create procedure [output_1]
‘@sid int output
‘a(chǎn)s
‘set @sid=2
response.write "<br><br>調用帶輸出參數的存儲過(guò)程:<br>"
set cmd=server.createobject("adodb.command")
cmd.activeconnection=conn
cmd.commandtext = "output_1"
cmd.parameters.append cmd.createparameter("@sid",adinteger,adparamoutput)
cmd("@sid")=10
cmd.execute()
bbb=cmd("@sid")
response.write bbb&"<br>"
set cmd=nothing
‘create procedure [return_1]
‘(@user_name varchar(40))
‘a(chǎn)s
‘if exists(select id from user_info where user_name=@user_name)
‘return 1
‘else
‘return 0
response.write "<br>調用帶兩個(gè)輸入參數和返回值的存儲過(guò)程:<br>"
set cmd=server.createobject("adodb.command")
cmd.activeconnection=conn
cmd.commandtype = adcmdstoredproc
cmd.commandtext = "return_1"
cmd.parameters.append cmd.createparameter("@return_value",adinteger,adparamreturnvalue)
cmd.parameters.append cmd.createparameter("@user_name",advarchar,adparaminput,40)
cmd.parameters.append cmd.createparameter("@password",advarchar,adparaminput,20)
cmd("@user_name")="tuth"
cmd("@password")="yyuyu"
cmd.execute()
rrr=cmd("@return_value")
response.write rrr
set cmd=nothing
set conn=nothing
%>
訪(fǎng)問(wèn)http://10.1.43.238/course/use_proc.asp?user_name=ahyi&password=ttt時(shí),出現如下
12
ahyi
tet
tuth
2
1
use_transaction_1.asp
<%
‘a(chǎn)sp中使用事務(wù)
set conn=server.createobject("adodb.connection")
conn.open "course_dsn","course_user","course_password"
conn.begintrans ‘開(kāi)始事務(wù)
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,3
if conn.errors.count>0 then ‘有錯誤發(fā)生
conn.rollbacktrans ‘回滾
set rs=nothing
conn.close
set conn=nothing
response.write "交易失敗,回滾至修改前的狀態(tài)!"
response.end
else
conn.committrans ‘提交事務(wù)
set rs=nothing
conn.close
set conn=nothing
response.write "交易成功!"
response.end
end if
%>
(@user_name varchar(40),@password varchar(20))
as
set xact_abort on
begin transaction
delete from user_info where user_name=@user_name and password=@password
commit transaction
set xact_abort off
<%
set conn=server.createobject("adodb.connection")
conn.open "course_dsn","course_user","course_password"
rs.open sql,conn,1,1
set rs=nothing
conn.close
set conn=nothing
%>
在數據庫中定義好視圖之后,在asp中如同使用一個(gè)表一樣來(lái)使用視圖
各類(lèi)型數據的導入與導出:
******* 導出到excel
exec master..xp_cmdshell ‘bcp settledb.dbo.shanghu out c:\temp1.xls -c -q -s"gnetdata/gnetdata" -u"sa" -p""‘
select * from openrowset(‘microsoft.jet.oledb.4.0‘,
‘excel 5.0;hdr=yes;database=c:\test.xls‘,sheet1$)
--------------------------------------------------------
select *
from opendatasource( ‘microsoft.jet.oledb.4.0‘,
‘data source="c:\test.xls";user id=admin;password=;extended properties=excel 5.0‘)...xactions
select cast(cast(科目編號 as numeric(10,2)) as nvarchar(255))+‘ ‘ 轉換后的別名
from opendatasource( ‘microsoft.jet.oledb.4.0‘,
‘data source="c:\test.xls";user id=admin;password=;extended properties=excel 5.0‘)...xactions
exec master..xp_cmdshell ‘bcp "dbname..tablename" in c:\dt.txt -c -sservername -usa -ppassword‘
exec master..xp_cmdshell ‘bcp "dbname..tablename" out c:\dt.txt -c -sservername -usa -ppassword‘
或
exec master..xp_cmdshell ‘bcp "select * from dbname..tablename" queryout c:\dt.txt -c -sservername -usa -ppassword‘
exec master..xp_cmdshell ‘bcp "庫名..表名" out "d:\tt.txt" -c -t ,-u sa -p password‘
bulk insert 庫名..表名
from ‘c:\test.txt‘
with (
fieldterminator = ‘;‘,
rowterminator = ‘\n‘
)
--/* dbase iv文件
select * from
openrowset(‘microsoft.jet.oledb.4.0‘
,‘dbase iv;hdr=no;imex=2;database=c:\‘,‘select * from [客戶(hù)資料4.dbf]‘)
--*/
select * from
openrowset(‘microsoft.jet.oledb.4.0‘
,‘dbase iii;hdr=no;imex=2;database=c:\‘,‘select * from [客戶(hù)資料3.dbf]‘)
--*/
select * from openrowset(‘msdasql‘,
‘driver=microsoft visual foxpro driver;sourcetype=dbf;sourcedb=c:\‘,
‘select * from [aa.dbf]‘)
--*/
select * from openrowset(‘msdasql‘,
‘driver=microsoft visual foxpro driver;
sourcedb=e:\vfp98\data;
sourcetype=dbf‘,
‘select * from customer where country != "usa" order by country‘)
go
/***************** 導出到dbf ***************/
如果要導出數據到已經(jīng)生成結構(即現存的)foxpro表中,可以直接用下面的sql語(yǔ)句
‘driver=microsoft visual foxpro driver;sourcetype=dbf;sourcedb=c:\‘,
‘select * from [aa.dbf]‘)
select * from 表
sourcedb=c:\ 指定foxpro表所在的文件夾
aa.dbf 指定foxpro表的文件名.
/*************導出到access********************/
insert into openrowset(‘microsoft.jet.oledb.4.0‘,
‘x:\a.mdb‘;‘a(chǎn)dmin‘;‘‘,a表) select * from 數據庫名..b表
insert into b表 selet * from openrowset(‘microsoft.jet.oledb.4.0‘,
‘x:\a.mdb‘;‘a(chǎn)dmin‘;‘‘,a表)
********************* 導入 xml 文件
declare @doc varchar(1000)
--sample xml document
set @doc =‘
<root>
<customer cid= "c1" name="janine" city="issaquah">
<order oid="o1" date="1/20/1996" amount="3.5" />
<order oid="o2" date="4/30/1997" amount="13.4">customer was very satisfied
</order>
</customer>
<customer cid="c2" name="ursula" city="oelde" >
<order oid="o3" date="7/14/1999" amount="100" note="wrap it blue
white red">
<urgency>important</urgency>
happy customer.
</order>
<order oid="o4" date="1/20/1996" amount="10000"/>
</customer>
</root>
‘
-- create an internal representation of the xml document.
exec sp_xml_preparedocument @idoc output, @doc
select *
from openxml (@idoc, ‘/root/customer/order‘, 1)
with (oid char(5),
amount float,
comment ntext ‘text()‘)
exec sp_xml_removedocument @idoc
鄒健的
/********************導整個(gè)數據庫*********************************************/
/*
實(shí)現數據導入/導出的存儲過(guò)程
根據不同的參數,可以實(shí)現導入/導出整個(gè)數據庫/單個(gè)表
調用示例:
--導出調用示例
----導出單個(gè)表
exec file2table ‘zj‘,‘‘,‘‘,‘xzkh_sa..地區資料‘,‘c:\zj.txt‘,1
----導出整個(gè)數據庫
exec file2table ‘zj‘,‘‘,‘‘,‘xzkh_sa‘,‘c:\docman‘,1
----導入單個(gè)表
exec file2table ‘zj‘,‘‘,‘‘,‘xzkh_sa..地區資料‘,‘c:\zj.txt‘,0
----導入整個(gè)數據庫
exec file2table ‘zj‘,‘‘,‘‘,‘xzkh_sa‘,‘c:\docman‘,0
if exists(select 1 from sysobjects where name=‘file2table‘ and objectproperty(id,‘isprocedure‘)=1)
drop procedure file2table
go
create procedure file2table
@servername varchar(200)--服務(wù)器名
,@username varchar(200)--用戶(hù)名,如果用nt驗證方式,則為空‘‘
,@password varchar(200)--密碼
,@tbname varchar(500)--數據庫.dbo.表名,如果不指定:.dbo.表名,則導出數據庫的所有用戶(hù)表
,@filename varchar(1000)--導入/導出路徑/文件名,如果@tbname參數指明是導出整個(gè)數據庫,則這個(gè)參數是文件存放路徑,文件名自動(dòng)用表名.txt
,@isout bit--1為導出,0為導入
as
declare @sql varchar(8000)
begin
set @sql=‘bcp ‘+@tbname
+case when @isout=1 then ‘ out ‘ else ‘ in ‘ end
+‘ "‘+@filename+‘" /w‘
+‘ /s ‘+@servername
+case when isnull(@username,‘‘)=‘‘ then ‘‘ else ‘ /u ‘+@username end
+‘ /p ‘+isnull(@password,‘‘)
exec master..xp_cmdshell @sql
end
else
begin--導出整個(gè)數據庫,定義游標,取出所有的用戶(hù)表
declare @m_tbname varchar(250)
if right(@filename,1)<>‘\‘ set @filename=@filename+‘\‘
exec(@m_tbname)
open #tb
fetch next from #tb into @m_tbname
while @@fetch_status=0
begin
set @sql=‘bcp ‘+@tbname+‘..‘+@m_tbname
+case when @isout=1 then ‘ out ‘ else ‘ in ‘ end
+‘ "‘+@filename+@m_tbname+‘.txt " /w‘
+‘ /s ‘+@servername
+case when isnull(@username,‘‘)=‘‘ then ‘‘ else ‘ /u ‘+@username end
+‘ /p ‘+isnull(@password,‘‘)
exec master..xp_cmdshell @sql
fetch next from #tb into @m_tbname
end
close #tb
deallocate #tb
end
go
精簡(jiǎn)checkbox全選代碼
-----------------------------------
<script language="javascript">
function checkall(form)
{
for (var i=0;i<form.elements.length;i++)
{
var e = form.elements[i];
if (e.name != "chkall"&&e.disabled==false)
e.checked = form.chkall.checked;
}
}
</script>
<form method="post" action="" name="myform">
<input type=‘checkbox‘ name="id1" id="id" value=‘1‘><br />
<input type=‘checkbox‘ name="id2" id="id" value=‘1‘><br />
<input type=‘checkbox‘ name="id2" id="id" value=‘1‘><br />
<input name="chkall" type="checkbox" id="chkall" onclick="checkall(myform)" value="checkbox"> 全部選中
</form>
ado連接數據庫字符串大全
ole db providers, remote data services (rds), ms remote, ms datashape.
(sqlclient, oledb, and odbc).
by carl prothman, a microsoft visual basic mvp
enjoy!
table of contents
odbc dsn connections dsn
file dsn
odbc dsn-less connections odbc driver for as/400
odbc driver for access
odbc driver for dbase
odbc driver for excel
odbc driver for mysql
odbc driver for oracle
odbc driver for paradox
odbc driver for sql server
odbc driver for sybase
odbc driver for sybase sql anywhere
odbc driver for text
odbc driver for teradata
odbc driver for visual foxpro
ole db data link connections data link file (udl)
ole db data provider connections ole db provider for as/400
ole db provider for active directory service
ole db provider for db2
old db provider for internet publishing
ole db provider for index server
ole db provider for microsoft jet
ole db provider for odbc databases
ole db provider for oracle (from microsoft)
ole db provider for oracle (from oracle)
ole db provider for simple provider
ole db provider for sql server
remote data service (rds) connections rds data control - connect property
rds data control - url property
ado url connections ado recordset
ms remote provider connections ms remote - access (jet)
ms remote - sql server
data shape provider connections ms datashape - sql server
.net managed provider connections sql client .net managed provider (system.data.sqlclient)
ole db .net managed provider (system.data.oledb)
odbc .net managed provider (system.data.odbc)
odbc dsn connections
using an odbc dsn (data source name) is a two step process.
found in your computer‘s control panel (or administrative tools menu in windows 2000).
make sure to create a system dsn (not a user dsn) when using asp.
note: you can also create the dsn via vb code.
oconn.open "dsn=advworks;" & _
"uid=admin;" & _
"pwd=;
you can also create and use a file dsn. then use the following ado connection string:
oconn.open "filedsn=c:\somepath\mydb.dsn;" & _
"uid=admin;" & _
"pwd=;"
how to use file dsns and dsn-less connections
then your program won‘t work so well... so it‘s better to use a dsn-less or ole db provider
connection string with a trusted connection if possible!
odbc driver for as/400
oconn.open "driver={client access odbc driver (32-bit)};" & _
"system=myas400;" & _
"uid=myusername;" & _
"pwd=mypassword;"
for standard security:
"dbq=c:\somepath\mydb.mdb;" & _
"uid=admin;" & _
"pwd=;"
"dbq=c:\somepath\mydb.mdb;" & _
"systemdb=c:\somepath\mydb.mdw;", _
"admin", ""
"dbq=\\myserver\myshare\mypath\mydb.mdb;"
oconn.open "driver={microsoft dbase driver (*.dbf)};" & _
"driverid=277;" & _
"dbq=c:\somepath;"
ors.open "select * from user.dbf", oconn, , ,adcmdtext
oconn.open "driver={microsoft excel driver (*.xls)};" & _
"driverid=790;" & _
"dbq=c:\somepath\myspreadsheet.xls;" & _
"defaultdir=c:\somepath;"
to connect to a local database
"server=myservername;" & _
"option=16834;" & _
"database=mydb;"
"server=db1.database.com;" & _
"port=3306;" & _
"option=131072;" & _
"stmt=;" & _
"database=mydb;" & _
"uid=myusername;" & _
"pwd=mypassword;"
odbc driver for oracle
for the current oracle odbc driver from microsoft:
"server=oracleserver.world;" & _
"uid=myusername;" & _
"pwd=mypassword;"
"connectstring=oracleserver.world;" & _
"uid=myusername;" & _
"pwd=mypassword;"
oconn.open "driver={microsoft paradox driver (*.db)};" & _
"driverid=538;" & _
"fil=paradox 5.x;" & _
"defaultdir=c:\dbpath\;" & _
"dbq=c:\dbpath\;" & _
"collatingsequence=ascii;"
for standard security:
"server=myservername;" & _
"database=mydatabasename;" & _
"uid=myusername;" & _
"pwd=mypassword;"
"server=myservername;" & _
"database=mydatabasename;" & _
"uid=;" & _
"pwd=;"
"server=myservername;" & _
"database=mydatabasename;" & _
"trusted_connection=yes;"
oconn.open "driver={sql server};" & _
"server=myservername;" & _
"database=mydatabasename;"
if using the sybase system 11 odbc driver:
"srvr=myservername;" & _
"uid=myusername;" & _
"pwd=mypassword;"
"srvr=myservername;" & _
"uid=myusername;" & _
"pwd=mypassword;"
oconn.open "odbc; driver=sybase sql anywhere 5.0;" & _
"defaultdir=c:\dbpath\;" & _
"dbf=c:\sqlany50\mydb.db;" & _
"uid=myusername;" & _
"pwd=mypassword;"
"dsn="""";"
oconn.open "provider=teradata;" & _
"dbcname=mydbcname;" & _
"database=mydatabasename;" & _
"uid=myusername;" & _
"pwd=mypassword;"
oconn.open "driver={microsoft text driver (*.txt; *.csv)};" & _
"dbq=c:\somepath\;" & _
"extensions=asc,csv,tab,txt;" & _
"persist security info=false"
oconn, adopenstatic, adlockreadonly, adcmdtext
for more information, see: text file driver programming considerations
‘函數名:joinchar
‘作 用:自動(dòng)判斷鏈接地址并向地址中加入 ? 或 &
‘參 數:strurl ----網(wǎng)址
‘返回值:加了 ? 或 & 的網(wǎng)址
‘=================================================
function joinchar(strurl)
if strurl="" then
joinchar=""
exit function
end if
if instr(strurl,"?")<len(strurl) then
if instr(strurl,"?")>1 then
if instr(strurl,"&")<len(strurl) then
joinchar=strurl & "&"
else
joinchar=strurl
end if
else
joinchar=strurl & "?"
end if
else
joinchar=strurl
end if
end function
odbc driver for visual foxpro
with a database container:
"sourcetype=dbc;" & _
"sourcedb=c:\somepath\mysourcedb.dbc;" & _
"exclusive=no;"
"sourcetype=dbf;" & _
"sourcedb=c:\somepath\mysourcedbfolder;" & _
"exclusive=no;"
for more information, see: visual foxpro odbc driver and q165492
ole db data link connections
data link file (udl)
for absolute path:
anymore. you can add the data link menu back in the menu list by running the
"c:\program files\common files\system\ole db\newudl.reg" reg file,
then right-click on the desktop and select "new | microsoft data link" menu.
or you can also create a data link file by creating a text file and change it‘s
file extension to ".udl", then double-click the file.
ole db provider connections
ole db provider for as/400
oconn.open "provider=ibmda400;" & _
"data source=myas400;"
"user id=myusername;" & _
"password=mypassword;"
oconn.open "provider=adsdsoobject;" & _
"user id=myusername;" & _
"password=mypassword;"
oconn.open = "provider=db2oledb;" &
"network transport library=tcpip;" &
"network address=myserver;" & _
"package collection=mypackage;" &
"host ccsid=1142"
"initial catalog=mydb;" &
"user id=myusername;" & _
"password=mypassword;"
and inf: configuring data sources for the microsoft ole db provider for db2
oconn.open "provider=msidxs;" & _
"data source=mycatalog;"
oconn.open "provider=msdaipp.dso;" & _
"data source=http://mywebsite/mydir;" & _
"user id=myusername;" & _
"password=mypassword;"
for standard security:
"data source=c:\somepath\mydb.mdb;" & _
"user id=admin;" & _
"password=;"
"data source=c:\somepath\mydb.mdb;" & _
"jet oledb:system database=mysystem.mdw;", _
"admin", ""
"data source=c:\somepath\mydb.mdb;" & _
"jet oledb:database password=mydbpassword;", _
"admin", ""
"data source=\\myserver\myshare\mypath\mydb.mdb;
oconn.open "provider=microsoft.jet.oledb.4.0;" & _
"data source=c:\somepath\mydb.mdb;" & _
"user id=admin;" & _
"password=;"
for more information, see: ole db provider for microsoft jet, q191754, q225048, q239114, and q271908
"data source=c:\somepath\myexcelspreadsheet.xls;" & _
"extended properties=""excel 8.0;hdr=yes;"";"
(or named range), so the provider will not include the first row of the
selection into the recordset. if "hdr=no", then the provider will include
the first row of the cell range (or named ranged) into the recordset.
you can also open a text file using the "ole db provider for microsoft jet"
"data source=c:\somepath\;" & _
"extended properties=""text;hdr=yes;fmt=delimited;"";"
ors.open "select * from mytextfile.txt", oconn, adopenstatic, adlockreadonly, adcmdtext
for access (jet):
"driver={microsoft access driver (*.mdb)};" & _
"dbq=c:\somepath\mydb.mdb;" & _
"uid=myusername;" & _
"pwd=mypassword;"
for sql server:
"driver={sql server};" & _
"server=myservername;" & _
"database=mydatabasename;" & _
"uid=myusername;" & _
"pwd=mypassword;"
oconn.open "provider=msdaora;" & _
"data source=myoracledb;" & _
"user id=myusername;" & _
"password=mypassword;"
for standard security:
"data source=myoracledb;" & _
"user id=myusername;" & _
"password=mypassword;"
"data source=myoracledb;" & _
"user id=/;" & _
"password=;"
‘ or
"data source=myoracledb;" & _
"osauthent=1;"
(note, if you get a logon dialog, then click cancel, then perform a one-time free signup with oracle‘s technet system)
ole db provider for simple provider
the microsoft ole db simple provider (osp) allows ado to access any data for which a provider has
been written using the ole db simple provider toolkit. simple providers are intended to access data
sources that require only fundamental ole db support, such as in-memory arrays or xml documents.
xml files. these xml files may contain the ado xml persistence schema, but it is not required. this
has been implemented by connecting the osp to the msxml2.dll, therefore msxml2.dll or newer is
required.
"data source=msxml2.dsocontrol.2.6;"
for more information, see: microsoft ole db simple provider
for standard security:
"data source=myservername;" & _
"initial catalog=mydatabasename;" & _
"user id=myusername;" & _
"password=mypassword;"
"data source=myservername;" & _
"initial catalog=mydatabasename;" & _
"integrated security=sspi;"
"data source=myservername\inst2;" & _
"initial catalog=mydatabasename;" & _
"user id=myusername;" & _
"password=mypassword;"
oconn.properties("prompt") = adpromptalways
oconn.open "data source=myservername;" & _
"initial catalog=mydatabasename;"
"data source=xxx.xxx.xxx.xxx,1433;" & _
"network library=dbmssocn;" & _
"initial catalog=mydatabasename;" & _
"user id=myusername;" & _
"password=mypassword;"
- xxx.xxx.xxx.xxx is an ip address
- "network library=dbmssocn" tells ole db to use tcp/ip rather than named pipes (q238949)
- 1433 is the default port number for sql server
- you can also add "encrypt=yes" for encryption
the following examples show how to connect to a remote database using the rds data control.
when using the rds datacontrol‘s server/sql/connect properties, the rds datacontrol uses the
rds datafactory on the remote server. if you use the rds datacontrol‘s url property,
then the rds datafactory is not used at all.
for more information, see rds faq #24
with the rds default handler disabled (not recommend due to security risks):
.server = "http://carl2"
.sql = "select * from authors where state = ‘ca‘"
.connect = "provider=sqloledb;" & _
"data source=(local);" & _
"initial catalog=pubs;" & _
"user id=sa;" & _
"password=;"
.refresh
end with
.server = "http://carl2"
.handler = "msdfmap.handler"
.connect = "data source=myconnecttag;"
.sql = "mysqltag(""ca"")"
.refresh
end with
access = readwrite
connect = "provider=sqloledb;data source=(local);initial catalog=pubs;user id=sa;password=;"
sql = "select * from authors where state = ‘?‘"
q243245, q230680, and rds customization handler microsoft articles
rds datacontrol - url property
to get records from a remote database:
.url = "http://carlp0/authors_getbystate.asp?state=ca"
.refresh
end with
.url = "http://carlp0/rdsdatacontrol/authors_save.asp"
.submitchanges
end with
ado url connections
ado 2.5+ allows you to open up a recordset based on xml returned from an asp file over http.
this feature doesn‘t use rds at all.
to get records from a remote database:
adopenstatic, adlockbatchoptimistic
the recordset‘s update and updatebatch methods will not work in this case.
set ostm = new adodb.stream
ors.save ostm, adpersistxml
set oxmlhttp = new msxml2.xmlhttp30
oxmlhttp.open "post", "http://carlp0/authors_save.asp", false
oxmlhttp.send ostm.readtext
if oxmlhttp.status = 500 then
debug.print oxmlhttp.statustext
end if
ms remote provider connections
the following connections strings use microsoft‘s remote provider (ms remote). the ms remote
provider tells ado to communicate with the remote server (via the rds datafactory) and to use
the remote provider that is installed on the remote server.
for more information, see rds faq #24
if you want to use an odbc dsn on the remote machine:
"remote server=http://myservername;" & _
"remote provider=msdasql;" & _
"dsn=advworks;" & _
"uid=myusername;" & _
"pwd=mypassword;"
"remote server=http://myservername;" & _
"remote provider=microsoft.jet.oledb.4.0;" & _
"data source=c:\somepath\mydb.mdb;", _
"admin", ""
"remote server=http://myservername;" & _
"handler=msdfmap.handler;" & _
"data source=myadvworksconn;"
access = readwrite
connect = "provider=microsoft.jet.oledb.4.0;" & _
"data source=mydb.mdb;" & _
"user id=admin;" & _
"password=;"
ms remote - sql server
if you want to use an odbc dsn on the remote machine:
"remote server=http://myservername;" & _
"remote provider=msdasql;" & _
"dsn=mydatabasename;" & _
"uid=myusername;" & _
"pwd=mypassword;"
"remote server=http://myservername;" & _
"remote provider=sqloledb;" & _
"data source=myservername;" & _
"initial catalog=mydatabasename;" & _
"user id=myusername;" & _
"password=mypassword;"
"remote server=http://myservername;" & _
"handler=msdfmap.handler;" & _
"data source=mypubsconn;"
access = readwrite
connect = "provider=sqloledb;" & _
"data source=myservername;" & _
"initial catalog=mydatabasename;" & _
"user id=myusername;" & _
"password=mypassword;"
data shape provider connections
ms datashape - sql server
oconn.open "provider=msdatashape;" & _
"data provider=sqloledb;" & _
"data source=mysqlservername;" & _
"initial catalog=mydatabase;" & _
"user id=myusername;" & _
"password=mypassword;"
ssql = "shape {select * from authors} " & _
"append ({select * from titleauthor} as chapter " & _
"relate au_id to au_id)"
ssql = "shape {exec spauthors_loadall} " & _
"append ({exec sptitleauthor_loadall} as chapter " & _
"relate au_id to au_id)"
.net managed provider connections
sql client .net managed provider (system.data.sqlclient)
the sql client .net managed provide allows you to connect to a microsoft sql server 7.0
or 2000 database. for microsoft sql server 6.0 or earlier, use the ole db .net data provider
with the "sql server ole db provider" (sqloledb).
dim sconnstring as string
"initial catalog=northwind;" & _
"integrated security=sspi;" & _
"pooling=true;" & _
"min pool size=10;" & _
"max pool size=50;" & _
"connection lifetime=30;" & _
"connection reset=true;" & _
"enlist=true;"
osqlconnection = new sqlclient.sqlconnection(sconnstring)
osqlconnection.open()
note: ‘sql‘ namespace got renamed to ‘sqlclient‘
the ole db .net data provider uses native ole db through com interop to enable data access.
to use the ole db .net data provider, you must also use an ole db provider (e.g. sqloledb,
msdaora, or microsoft.jet.oledb.4.0).
dim sconnstring as string
"data source=myservername;" & _
"initial catalog=mydatabasename;" & _
"user id=myusername;" & _
"password=mypassword;"
ooledbconnection = new oledb.oledbconnection(sconnstring)
ooledbconnection.open()
dim sconnstring as string
"data source=c:\work\nwind.mdb;" & _
"user id=admin;" & _
"password="";"
ooledbconnection = new oledb.oledbconnection(sconnstring)
ooledbconnection.open()
note: ‘a(chǎn)do‘ namespace got renamed to ‘oledb‘
the odbc .net data provider is an add-on component to the .net framework sdk beta 2.
it provides access to native odbc drivers the same way the ole db .net data provider
provides access to native ole db providers.
dim sconnstring as string
sconnstring = "driver={sql server};" & _
"server=mysqlservername;" & _
"database=mydatabasename;" & _
"uid=myusername;" & _
"pwd=mypassword;"
oodbcconnection.open()
dim sconnstring as string
sconnstring = "driver={microsoft odbc for oracle};" & _
"server=oracleserver.world;" & _
"uid=myusername;" & _
"pwd=mypassword;"
oodbcconnection.open()
dim sconnstring as string
sconnstring = "driver={microsoft access driver (*.mdb)};" & _
"dbq=c:\somepath\mydb.mdb;" & _
"uid=admin;" & _
"pwd=;"
oodbcconnection.open()
dim sconnstring as string
sconnstring = "dsn=mydsn;" & _
"uid=myusername;" & _
"pwd=mypassword;"
oodbcconnection.open()
首頁(yè) 圖片消失
<script language="javascript">
function kick()
{
if(div1.style.pixeltop>-140)
div1.style.pixeltop=div1.style.pixeltop-1
}
function kiss()
{
var p=setinterval("kick()",30);
}
function on_it()
{
div1.style.pixeltop=0;
div1.style.pixeltop=0;
}
</script>
<body onload="kiss()" style="margin:0;0;0;0 ">
<div style="top:0px; left:0px; position:absolute; background:red; width:531px; height:120; z-index: 0;" id="div1" onmouseover="on_it()"><img src="aa.jpg" width="179" height="146"><img src="dd.jpg" width="176" height="146"><img src="ff.jpg" width="175" height="146"></div>
</body>
自動(dòng)提交
<body id="b"> <form action="arr.asp" method="post" name="form1"> <input type="text" name="textfield" value="454"> <input type="submit" name="submit" value="提交"> </form> <script language="javascript" type="text/javascript"> function b.onload() { document.form1.submit(); } </script> </body>
自動(dòng)提交 ok
<body onload="go_time()"> <form name="form1" method="post" action="news.html"> <input type="hidden" name="textfield"> <input type="hidden" name="textfield2"> </form> <script language="javascript" type="text/javascript"> function go_it() { document.form1.submit(); } // function go_time() { var p=settimeout("go_it()",3000); } </script>
我也來(lái)貼一個(gè),條型碼code-128 c類(lèi)編碼,調用producehtml(str),code-128 c類(lèi)的編碼規則,自己去查。
這個(gè)也有php版,是國外的一個(gè)人寫(xiě)的,不過(guò)他的php版有一些bug,我從他的php版改來(lái)的,寫(xiě)得亂七八糟的,大家自己整理。
<%
ascii= " !#$%&‘()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
dim arr128(106)
arr128(0) = "212222"‘c類(lèi)有自己的規則,這里的數字是表示白黑條的寬度
arr128(1) = "222122"
arr128(2) = "222221"
arr128(3) = "121223"
arr128(4) = "121322"
arr128(5) = "131222"
arr128(6) = "122213"
arr128(7) = "122312"
arr128(8) = "132212"
arr128(9) = "221213"
arr128(10) = "221312"
arr128(11) = "231212"
arr128(12) = "112232"
arr128(13) = "122132"
arr128(14) = "122231"
arr128(15) = "113222"
arr128(16) = "123122"
arr128(17) = "123221"‘1
arr128(18) = "223211"
arr128(19) = "221132"
arr128(20) = "221231"
arr128(21) = "213212"
arr128(22) = "223112"
arr128(23) = "312131"
arr128(24) = "311222"
arr128(25) = "321122"‘9
arr128(26) = "321221"
arr128(27) = "312212"
arr128(28) = "322112"
arr128(29) = "322211"
arr128(30) = "212123"
arr128(31) = "212321"
arr128(32) = "232121"
arr128(33) = "111323"
arr128(34) = "131123"
arr128(35) = "131321"
arr128(36) = "112313"
arr128(37) = "132113"
arr128(38) = "132311"
arr128(39) = "211313"
arr128(40) = "231113"
arr128(41) = "231311"
arr128(42) = "112133"
arr128(43) = "112331"
arr128(44) = "132131"
arr128(45) = "113123"
arr128(46) = "113321"
arr128(47) = "133121"
arr128(48) = "313121"
arr128(49) = "211331"
arr128(50) = "231131"
arr128(51) = "213113"
arr128(52) = "213311"
arr128(53) = "213131"
arr128(54) = "311123"
arr128(55) = "311321"
arr128(56) = "331121"
arr128(57) = "312113"
arr128(58) = "312311"
arr128(59) = "332111"
arr128(60) = "314111"
arr128(61) = "221411"
arr128(62) = "431111"
arr128(63) = "111224"
arr128(64) = "111422"
arr128(65) = "121124"
arr128(66) = "121421"
arr128(67) = "141122"
arr128(68) = "141221"
arr128(69) = "112214"
arr128(70) = "112412"
arr128(71) = "122114"
arr128(72) = "122411"
arr128(73) = "142112"
arr128(74) = "142211"
arr128(75) = "241211"
arr128(76) = "221114"
arr128(77) = "413111"
arr128(78) = "241112"
arr128(79) = "134111"
arr128(80) = "111242"
arr128(81) = "121142"
arr128(82) = "121241"
arr128(83) = "114212"
arr128(84) = "124112"
arr128(85) = "124211"
arr128(86) = "411212"
arr128(87) = "421112"
arr128(88) = "421211"
arr128(89) = "212141"
arr128(90) = "214121"
arr128(91) = "412121"
arr128(92) = "111143"
arr128(93) = "111341"
arr128(94) = "131141"
arr128(95) = "114113"
arr128(96) = "114311"
arr128(97) = "411113"
arr128(98) = "411311"
arr128(99) = "113141"
arr128(100) = "114131"
arr128(101) = "311141"
arr128(102) = "411131"
arr128(103) = "211412"
arr128(104) = "211214"
arr128(105) = "211232"
arr128(106) = "2331112"
‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
function producearray(intext)
‘response.write intext
‘response.end
total = 104
‘//// start
ticketarray= "104"
onchar=0
‘//// go thru array get letters
for z=1 to len(intext)
pos = instr(ascii,mid(intext,z,1))
‘/// skip, not found chars,continue loop
‘text=text&mid(intext,i,i)&"<br>"
onchar=onchar+1
ticketarray = ticketarray&","&pos
total = total+( onchar * pos )
next
‘response.write text
‘response.end()
‘/// check char
ticketarray =ticketarray&","&( total mod 103 )
‘//// end
ticketarray=ticketarray&",106"
producearray=ticketarray
end function
‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
function producehtml(givetext)
alignment=0
fheight=30
fwidth=1
bimg="a.jpg"‘a(chǎn)與b的寬都為1,a為黑色,b為白色
wimg="b.jpg"
dim color(1)
ticketarray = producearray(givetext)
ticketarray=split(ticketarray,",")
html ="<table cellpadding=5 cellspacing=0 border=0 bgcolor=white align=‘left‘><tr><td>"
‘/// array of images
color(0) = bimg
color(1) = wimg
‘//// output html
‘if ( is_array($ticketarray) ) {
for each ele in ticketarray
bon = 0
info = arr128(int(ele))
for i=1 to len(info)
if alignment=0 then
html = html&"<img src=‘"&color(bon)&"‘ height=‘"&fheight&"‘ width = ‘"&int(mid(info,i,1)*fwidth)&"‘>"
else
html = html&"<img src=‘"&color(bon)&"‘ width=‘"&fheight&"‘ height = ‘"&int(mid(info,i,1)*fwidth)&"‘>"
end if
if bon=0 then
bon=1
else
bon=0
end if
next
next
html = html&"</td></tr></table>"
producehtml=html
end function
%>
asp操作excel技術(shù)總結
目錄
一、 環(huán)境配置
二、 asp對excel的基本操作
三、 asp操作excel生成數據表
四、 asp操作excel生成chart圖
五、 服務(wù)器端excel文件瀏覽、下載、刪除方案
六、 附錄
正文
一、 環(huán)境配置
服務(wù)器端的環(huán)境配置從參考資料上看,微軟系列的配置應該都行,即:
1.win9x+pws+office
2.win2000 professional+pws+office
3.win2000 server+iis+office
目前筆者測試成功的環(huán)境是后二者。office的版本沒(méi)有特殊要求,考慮到客戶(hù)機配置的不確定性和下兼容特性,建議服務(wù)器端office版本不要太高,以防止客戶(hù)機下載后無(wú)法正確顯示。
服務(wù)器端環(huán)境配置還有兩個(gè)偶然的發(fā)現是:
1. 筆者開(kāi)發(fā)機器上原來(lái)裝有金山的wps2002,結果excel對象創(chuàng )建始終出現問(wèn)題,卸載wps2002后,錯誤消失。
2. 筆者開(kāi)發(fā)asp代碼喜歡用frontpage,結果發(fā)現如果frontpage打開(kāi)(服務(wù)器端),對象創(chuàng )建出現不穩定現象,時(shí)而成功時(shí)而不成功。擴展考察后發(fā)現,office系列的軟件如果在服務(wù)器端運行,則excel對象的創(chuàng )建很難成功。
服務(wù)器端還必須要設置的一點(diǎn)是com組件的操作權限。在命令行鍵入“dcomcnfg”,則進(jìn)入com組件配置界面,選擇microsoft excel后點(diǎn)擊屬性按鈕,將三個(gè)單選項一律選擇自定義,編輯中將everyone加入所有權限。保存完畢后重新啟動(dòng)服務(wù)器。
客戶(hù)端的環(huán)境配置沒(méi)發(fā)現什么特別講究的地方,只要裝有office和ie即可,版本通用的好象都可以。
二、 asp對excel的基本操作
1、 建立excel對象
set objexcelapp = createobject("excel.application")
objexcelapp.displayalerts = false 不顯示警告
objexcelapp.application.visible = false 不顯示界面
2、 新建excel文件
objexcelapp.workbooks.add
set objexcelbook = objexcelapp.activeworkbook
set objexcelsheets = objexcelbook.worksheets
set objexcelsheet = objexcelbook.sheets(1)
3、 讀取已有excel文件
straddr = server.mappath(".")
objexcelapp.workbooks.open(straddr & "\templet\table.xls")
set objexcelbook = objexcelapp.activeworkbook
set objexcelsheets = objexcelbook.worksheets
set objexcelsheet = objexcelbook.sheets(1)
4、 另存excel文件
objexcelbook.saveas straddr & "\temp\table.xls"
5、 保存excel文件
objexcelbook.save ?。üP者測試時(shí)保存成功,頁(yè)面報錯。)
6、 退出excel操作
objexcelapp.quit 一定要退出
set objexcelapp = nothing
三、 asp操作excel生成數據表
1、 在一個(gè)范圍內插入數據
objexcelsheet.range("b3:k3").value = array("67", "87", "5", "9", "7", "45", "45", "54", "54", "10")
2、 在一個(gè)單元格內插入數據
objexcelsheet.cells(3,1).value="internet explorer"
3、 選中一個(gè)范圍
4、 單元格左邊畫(huà)粗線(xiàn)條
5、 單元格右邊畫(huà)粗線(xiàn)條
6、 單元格上邊畫(huà)粗線(xiàn)條
7、 單元格下邊畫(huà)粗線(xiàn)條
8、 單元格設定背景色
9、 合并單元格
10、 插入行
11、 插入列
四、 asp操作excel生成chart圖
1、 創(chuàng )建chart圖
objexcelapp.charts.add
2、 設定chart圖種類(lèi)
objexcelapp.activechart.charttype = 97
注:二維折線(xiàn)圖,4;二維餅圖,5;二維柱形圖,51
3、 設定chart圖標題
objexcelapp.activechart.hastitle = true
objexcelapp.activechart.charttitle.text = "a test chart"
4、 通過(guò)表格數據設定圖形
objexcelapp.activechart.setsourcedata objexcelsheet.range("a1:k5"),1
5、 直接設定圖形數據(推薦)
objexcelapp.activechart.seriescollection.newseries
objexcelapp.activechart.seriescollection(1).name = "=""333"""
objexcelapp.activechart.seriescollection(1).values = "="
6、 綁定chart圖
objexcelapp.activechart.location 1
7、 顯示數據表
objexcelapp.activechart.hasdatatable = true
8、 顯示圖例
objexcelapp.activechart.datatable.showlegendkey = true
五、 服務(wù)器端excel文件瀏覽、下載、刪除方案
瀏覽的解決方法很多,“location.href=”,“navigate”,“response.redirect”都可以實(shí)現,建議用客戶(hù)端的方法,原因是給服務(wù)器更多的時(shí)間生成excel文件。
下載的實(shí)現要麻煩一些。用網(wǎng)上現成的服務(wù)器端下載組件或自己定制開(kāi)發(fā)一個(gè)組件是比較好的方案。另外一種方法是在客戶(hù)端操作excel組件,由客戶(hù)端操作服務(wù)器端excel文件另存至客戶(hù)端。這種方法要求客戶(hù)端開(kāi)放不安全activex控件的操作權限,考慮到通知每個(gè)客戶(hù)將服務(wù)器設置為可信站點(diǎn)的麻煩程度建議還是用第一個(gè)方法比較省事。
刪除方案由三部分組成:
a: 同一用戶(hù)生成的excel文件用同一個(gè)文件名,文件名可用用戶(hù)id號或sessionid號等可確信不重復字符串組成。這樣新文件生成時(shí)自動(dòng)覆蓋上一文件。
b: 在global.asa文件中設置session_onend事件激發(fā)時(shí),刪除這個(gè)用戶(hù)的excel暫存文件。
c: 在global.asa文件中設置application_onstart事件激發(fā)時(shí),刪除暫存目錄下的所有文件。
注:建議目錄結構 \src 代碼目錄 \templet 模板目錄 \temp 暫存目錄
六、 附錄
出錯時(shí)excel出現的死進(jìn)程出現是一件很頭疼的事情。在每個(gè)文件前加上“on error resume next”將有助于改善這種情況,因為它會(huì )不管文件是否產(chǎn)生錯誤都堅持執行到“application.quit”,保證每次程序執行完不留下死進(jìn)程。
評論
# re: asp操作excel技術(shù)總結
這個(gè)程序一共由三個(gè)文件構成,第一個(gè)文件的文件名為:toexcel.asp是主文件,內容如下:
<%
‘前面是和來(lái)鏈接到數據庫,請自行書(shū)寫(xiě)相關(guān)語(yǔ)句,此處略過(guò)
sql="select * from [tx_use]" ‘這里是要輸出excel的查詢(xún)語(yǔ)句,如 "sesect * form cai where 性別=‘女‘"
filename="excel.xls" ‘ 要輸出的excel文件的文件名, 你只要改以上兩句就行了,其它的都不要改.
‘你只要修改以上兩變量就行了.其它的我都做好了.
call toexcel(filename,sql)
set conn=nothing
function readtext(filename) ‘這是一個(gè)用于讀出文件的函數
set adf=server.createobject("adodb.stream")
with adf
.type=2
.lineseparator=10
.open
.loadfromfile (server.mappath(filename))
.charset="gb2312"
.position=2
readtext=.readtext
.cancel()
.close()
end with
set ads=nothing
end function
sub savetext(filename,data) ‘這是一個(gè)用于寫(xiě)文件的函數
set fs= createobject("scripting.filesystemobject")
set ts=fs.createtextfile(server.mappath(filename),true)
ts.writeline(data)
ts.close
set ts=nothing
set fs=nothing
end sub
sub toexcel(filename,sql) ‘這是一個(gè)根據sql語(yǔ)句和filename生成excel文件
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,3
toexcellr="<table width=‘100%‘><tr >"
set myfield=rs.fields
dim fieldname(50)
for i=0 to myfield.count-1
toexcellr=toexcellr&"<td class=xl24>"&myfield(i).name&"</td>"
fieldname(i)=myfield(i).name
if myfield(i).type=135 then datename=datename&myfield(i).name&","
next
toexcellr=toexcellr&"</tr>"
do while not rs.eof
toexcellr=toexcellr&"<tr>"
for i=0 to myfield.count-1
if instr(datename,fieldname(i)&",")<>0 then
if not isnull(rs(fieldname(i))) then
toexcellr=toexcellr&"<td class=xl25 ><p align=‘left‘>"&formatdatetime(rs(fieldname(i)),2)&"</p></td>"
else
toexcellr=toexcellr&"<td class=xl25 ><p align=‘left‘> </p></td>"
end if
else
toexcellr=toexcellr&"<td class=xl24 >"&rs(fieldname(i))&"</td>"
end if
next
toexcellr=toexcellr&"</tr>"
rs.movenext
loop
toexcellr=toexcellr&"</table>"
tou=readtext("tou.txt")
di=readtext("di.txt")
toexcellr=tou&toexcellr&di
call savetext(filename,toexcellr)
end sub
%>
<html>
<head>
<meta http-equiv="refresh" content="3;url=<%=filename%>">
<meta http-equiv="content-language" content="en-us">
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<title>正在生成exlce文件</title>
</head>
<body>
正在生成exlce文件....
</body>
</html>
**************第二個(gè)文件名為:di.txt 內容如下:
<table x:str border=0 cellpadding=0 cellspacing=0 width=288 style=‘border-collapse:
collapse;table-layout:fixed;width:216pt‘>
<![if supportmisalignedcolumns]>
<tr height=0 style=‘display:none‘>
<td width=72 style=‘width:54pt‘></td>
<td width=72 style=‘width:54pt‘></td>
<td width=72 style=‘width:54pt‘></td>
<td width=72 style=‘width:54pt‘></td>
</tr>
<![endif]>
</table>
************第三個(gè)文件的文件名為:tou.txt 內容如下:
<head> <body link=blue vlink=purple> dim strsubmit ‘form中用來(lái)保存提交按鈕的值 strsubmit = request.form("submit") <html> <% 注意的是: name=message></textarea></td> id=submit name=submit></td> 當以上信息被提交后,就可以按照下面的代碼進(jìn)行打印了。 we will now use the vbscript filesystemobject object and the wsh net set objfs = createobject("scripting.filesystemobject") response.write("<tr><td align=right><b>網(wǎng)絡(luò )打印機路徑:</b></td response.write("</table>") 效果: 答:下載微軟的windows script encoder,對asp的腳本和客戶(hù)端javascript、vbscript腳本進(jìn)行加密??蛻?hù)端腳本加密后,只有ie5以上的版本才能執行,服務(wù)器端腳本加密后,只有服務(wù)器上安裝有script engine 5(裝ie5即可)才能解釋執行。 問(wèn)題:為什么global.asa文件總是不起作用? 答:只有把global.asa文件放在web發(fā)布目錄某個(gè)站點(diǎn)的根目錄下它才有效,放在發(fā)布目錄的某個(gè)子目錄下不起作用。另外,也可以使用iis4的internet service manager把某個(gè)子目錄設置為站點(diǎn)。 問(wèn)題:為什么asp文件總不解釋執行? 答:在iis服務(wù)器上沒(méi)有給asp文件以腳本解釋的權限,所以asp文件沒(méi)有被web服務(wù)器作為腳本代碼進(jìn)行解釋執行,而被當成一般頁(yè)面文件了。建議在web發(fā)布目錄中建立一個(gè)asp目錄,把所有asp文件存放在此目錄下,把asp目錄賦予腳本解釋權限。 問(wèn)題:asp文件中使用response.redirect(url)時(shí)導致錯誤“the http headers are already written to the client browser. any http header modifications must be made before writing page content”,請問(wèn)如何解決? 答:此錯誤為http標題在寫(xiě)入頁(yè)內容之后,寫(xiě)到了客戶(hù)瀏覽器中。任何http標題的修改必須在寫(xiě)入頁(yè)內容之前進(jìn)行,解決的方法為在asp文件最開(kāi)頭加入response.buffer = true,在文件的結尾加入response.flush。 問(wèn)題:為什么session有時(shí)候會(huì )消失? 答:session很像臨時(shí)的cookie,只是其信息保存在服務(wù)器上(客戶(hù)機上保存的是sessionid)。session變量消失有幾種可能,如:使用者的瀏覽器不接受cookie,因為session依賴(lài)于cookie才能跟蹤用戶(hù);session在一段時(shí)間后過(guò)期了,缺省為20分鐘,如果希望更改,可以通過(guò)設置microsoft management console的web directory→properties→virtual directory→application settings→configuration→app options→session timeout選項來(lái)改變session的超時(shí)時(shí)間,也可以在asp腳本中設定,如session.timeout=60,可設定超時(shí)時(shí)間為60分鐘。 問(wèn)題:怎樣才能知道訪(fǎng)問(wèn)者的一些信息? 答:通過(guò)request.servervariables("http—user—agent")獲得訪(fǎng)問(wèn)者瀏覽器的類(lèi)型;request.servervariables("remote—addr")可獲得訪(fǎng)問(wèn)者的ip地址;而訪(fǎng)問(wèn)者的語(yǔ)言環(huán)境可通過(guò)request.servervariables("http—accept—language")來(lái)獲得。 問(wèn)題:怎樣才能將query string從一個(gè)asp文件傳送到另一個(gè)asp文件? 答:前一個(gè)asp文件加入下列代碼:response.redirect("second.asp?"&request.servervariables("query—string"))即可。 問(wèn)題:asp中如何控制cookies? 答:若想寫(xiě)入cookies可用:response.cookies("待寫(xiě)入的coookies名稱(chēng)")=待寫(xiě)入數據。讀取cookies則使用:讀取數據=request.cookies("待讀的cookies名稱(chēng)")。 注意,寫(xiě)入cookies的response.cookies程序段必須放在〈html〉標記之前,且不可以有任何的其它html代碼。另外,cookies中必須使用expires設定有效期,cookies才能真正地寫(xiě)入客戶(hù)端硬盤(pán)中,否則只是臨時(shí)的。 問(wèn)題:怎樣實(shí)現用asp發(fā)送郵件? 答:用戶(hù)需裝上windows nt option pack的smtp service功能。實(shí)現代碼如下: 答:不一定,asp與服務(wù)器的數據庫連接有兩種方法,一種為通過(guò)dsn建立連接,另一種不用dsn建立連接。通過(guò)dsn連接數據庫需要服務(wù)器的系統管理員在服務(wù)器的控制面板中的odbc中設置一個(gè)dsn。如果沒(méi)有在服務(wù)器上設置dsn,只要知道數據庫文件名(比如access、paradox、foxpro的數據庫)或者數據源名(如sqlserver的數據庫)就可以訪(fǎng)問(wèn)數據庫,直接提供連接所需的參數即可。 連接代碼如下: 問(wèn)題:如何從一頁(yè)到另一頁(yè)傳遞變量? 答:用hidden表單類(lèi)型來(lái)傳遞變量。 〈form method="post"action="mynextpage.asp"〉 用session來(lái)保存變量。 〈%session("bh")= request.form ("bh")%〉 用querystring保存變量。 〈a herf="action.asp?bh=10"〉查詢(xún)〈/a〉 答:在線(xiàn)人數是指一個(gè)時(shí)段內的訪(fǎng)客人數統計,時(shí)間的長(cháng)短是由設計者設定的。 在這個(gè)時(shí)段內,各個(gè)不同ip訪(fǎng)問(wèn)本站點(diǎn)的總數,就是當前的線(xiàn)上人數。在asp中,使用session對象來(lái)實(shí)現統計,實(shí)現代碼如下: 〈script language="vbscript"runat="server"〉 online.asp文件內容 〈% tmp=application("online") 問(wèn)題:asp程序運行的時(shí)間如何計算? 答:確定asp程序的執行時(shí)間的代碼如下所示: 〈% ′被檢測的asp代碼 t2=now() set xlapp = server.createobject("excel.application") xlsheet.cells(1,1).value="test" ‘通過(guò)設置cell(i,j)里面的i,j來(lái)訪(fǎng)問(wèn)sheet里面任意一個(gè)cell asp運行端的一些設置 ⑴.使用存儲過(guò)程 ①.定義好存儲過(guò)程 create procedure [output_1] create procedure [return_1] create procedure [user_info_1] create procedure [user_info_2] create procedure [user_info_3] as ②.在asp中調用 use_proc.asp ‘使用recordset調用帶兩個(gè)輸入參數和返回紀錄集的存儲過(guò)程 ‘使用recordset調用無(wú)輸入參數,返回紀錄集的存儲過(guò)程,可以使用recordcount等屬性 ‘使用command調用帶輸出參數的存儲過(guò)程 ‘使用command調用帶兩個(gè)輸入參數和返回值的存儲過(guò)程 conn.close 效果: 普通的調用方法: 返回紀錄集,可以使用recordcount等屬性: 調用帶輸出參數的存儲過(guò)程: 調用帶兩個(gè)輸入參數和返回值的存儲過(guò)程: 注意:若存儲過(guò)程無(wú)參數,則調用的sql語(yǔ)句直接為存儲過(guò)程名,一個(gè)參數為“存儲過(guò)程名 參數”,若是多個(gè)參數,則“存儲過(guò)程名 參數1,參數2,……,參數n”;如果在sql語(yǔ)句中加入exec,則在返回的記錄集中可以使用recordcount等屬性;如果想獲得存儲過(guò)程的返回值或輸出參數,可以使用command對象。 ⑵.使用事務(wù)處理 ①.a(chǎn)sp內嵌的事務(wù)支持 例子: sql="delete from user_info" ②.數據庫級的事務(wù) i.創(chuàng )建存儲過(guò)程 create procedure [user_info_2] ii.在asp中調用 use_transaction_2.asp sql="user_info_2 ‘"&request.querystring("user_name")&"‘,‘"&request.querystring("password")&"‘" set rs=server.createobject("adodb.recordset") 討論:兩種方式的優(yōu)劣? ⑶.使用視圖 /*********** 導入excel /** 導入文本文件 /** 導出文本文件 導出到txt文本,用逗號分開(kāi) --/* dbase iii文件 --/* foxpro 數據庫 /**************導入dbf文件****************/ insert into openrowset(‘msdasql‘, 說(shuō)明: /*************導入access********************/ declare @idoc int -- execute a select statement using openxml rowset provider. 用bcp實(shí)現的存儲過(guò)程 --導入調用示例 */ if @tbname like ‘%.%.%‘ --如果指定了表名,則直接導出單個(gè)表 set @m_tbname=‘declare #tb cursor for select name from ‘+@tbname+‘..sysobjects where xtype=‘‘u‘‘‘ this page contains sample ado connection strings for odbc dsn / dsn-less, also included are ado.net connection strings for each .net managed provider these sample connection strings are compiled 1) you must first create the dsn via the "odbc data source administrator" program 2) then use the following connection string - with your own dsn name of course. ;-) odbc - dsn odbc - file dsn for more information, see: about odbc data sources and note: the problem with dsn is that users can (and will) modify them (or delete by mistake), odbc dsn-less connections for more information, see: a fast path to as/400 client/server odbc driver for access oconn.open "driver={microsoft access driver (*.mdb)};" & _ if you are using a workgroup (system database): oconn.open "driver={microsoft access driver (*.mdb)};" & _ if mdb is located on a network share: oconn.open "driver={microsoft access driver (*.mdb)};" & _ for more information, see: microsoft access driver programming considerations odbc driver for dbase note: specify the filename in the sql statement. for example: note: mdac 2.1 (or greater) requires the borland database engine (bde) to update dbase dbf files. (q238431). for more information, see: dbase driver programming considerations odbc driver for excel for more information, see: microsoft excel driver programming considerations odbc driver for mysql (via myodbc) oconn.open "driver={mysql};" & _ to connect to a remote database oconn.open "driver={mysql};" & _ for more information, see: programs known to work with myodbc oconn.open "driver={microsoft odbc for oracle};" & _ for the older oracle odbc driver from microsoft: oconn.open "driver={microsoft odbc driver for oracle};" & _ for more information, see: connection string format and attributes odbc driver for paradox note: mdac 2.1 (or greater) requires the borland database engine (bde) to update paradox isam fdbf files. (q230126). for more information, see: paradox driver programming considerations odbc driver for sql server oconn.open "driver={sql server};" & _ for trusted connection security: oconn.open "driver={sql server};" & _ ‘ or oconn.open "driver={sql server};" & _ to prompt user for username and password oconn.properties("prompt") = adpromptalways for more information, see: sqldriverconnect (odbc) odbc driver for sybase oconn.open "driver={sybase system 11};" & _ if using the intersolv 3.10 sybase odbc driver: oconn.open "driver={intersolv 3.10 32-bit sybase};" & _ for more information, see: sybase system 10 odbc driver reference guide odbc driver for sybase sql anywhere note: including the dsn tag with a null string is absolutely critical or else you get the dreaded -7778 error. for more information, see: sybase sql anywhere user guide odbc driver for teradata for more information, see teradata odbc driver odbc driver for text note: specify the filename in the sql statement. for example: ors.open "select * from customer.csv", _ ‘================================================= oconn.open "driver={microsoft visual foxpro driver};" & _ without a database container (free table directory): oconn.open "driver={microsoft visual foxpro driver};" & _ oconn.open "file name=c:\somepath\mydatabasename.udl;" for relative path: oconn.open "file name=mydatabasename.udl;" for more information, see: howto: use data link files with ado note: windows 2000 no longer contains the "new | microsoft data link" menu for more information, see: a fast path to as/400 client/server ole db provider for active directory service for more information, see: microsoft ole db provider for microsoft active directory service ole db provider for db2 for more information, see: ole db provider for db2 ole db provider for index server for more information, see: microsoft ole db provider for microsoft indexing service ole db provider for internet publishing for more information, see: microsoft ole db provider for internet publishing and q245359 ole db provider for microsoft jet oconn.open "provider=microsoft.jet.oledb.4.0;" & _ if using a workgroup (system database): oconn.open "provider=microsoft.jet.oledb.4.0;" & _ note, remember to convert both the mdb and the mdw to the 4.0 database format when using the 4.0 ole db provider. if mdb has a database password: oconn.open "provider=microsoft.jet.oledb.4.0;" & _ if mdb is located on a network share: oconn.open "provider=microsoft.jet.oledb.4.0;" & _ if want to open up the access database exclusively: oconn.mode = admodeshareexclusive you can also open an excel spreadsheet using the "ole db provider for microsoft jet" oconn.open "provider=microsoft.jet.oledb.4.0;" & _ where "hdr=yes" means that there is a header row in the cell range for more information, see: q278973 oconn.open "provider=microsoft.jet.oledb.4.0;" & _ ‘ then open a recordset based on a select on the actual file for more information, see: q262537 ole db provider for odbc databases oconn.open "provider=msdasql;" & _ oconn.open "provider=msdasql;" & _ for more information, see: microsoft ole db provider for odbc ole db provider for oracle (from microsoft) for more information, see: microsoft ole db provider for oracle ole db provider for oracle (from oracle) oconn.open "provider=oraoledb.oracle;" & _ for a trusted connection: oconn.open "provider=oraoledb.oracle;" & _ oconn.open "provider=oraoledb.oracle;" & _ note: "data source=" must be set to the appropriate net8 name which is known to the naming method in use. for example, for local naming, it is the alias in the tnsnames.ora file; for oracle names, it is the net8 service name. for more information, see: connecting to an oracle database osp in mdac 2.6 has been enhanced to support opening hierarchical ado recordsets over arbitrary oconn.open "provider=msdaosp;" & _ ors.open "http://webserver/virtualroot/myxmlfile.xml", oconn ole db provider for sql server oconn.open "provider=sqloledb;" & _ for a trusted connection: oconn.open "provider=sqloledb;" & _ to connect to a "named instance" (sql server 2000) oconn.open "provider=sqloledb;" & _ to prompt user for username and password: oconn.provider = "sqloledb" to connect via an ip address: oconn.open "provider=sqloledb;" & _ note: for more information, see: microsoft ole db provider for sql server remote data service (rds) connections warning: the rds datafactory can be a major security hole if not setup and configured correctly! rds datacontrol - connect property with ordc with the rds default handler enabled (recommend): with ordc the corresponding connect and sql sections in the default handler \winnt\msdfmap.ini file would be: [connect myconnecttag] [sql mysqltag] for more information about the rds default handler, see: with ordc to save, set the url property to an asp web page: with ordc for more information, see: rds url property ado recordset ors.open "http://carlp0/authors_getbystate.asp?state=ca", , _ to save changes, you must use the msxml‘s xmlhttp object to post back the updated xml. ‘ save recordset into stream ‘ use msxml‘s xmlhttp object to open asp and post a xml stream ‘ if an error occurred for more information, see: ado recordset‘s open method warning: the rds datafactory can be a major security hole if not setup and configured correctly! ms remote - access (jet) oconn.open "provider=ms remote;" & _ if you want to use an ole db provider on the remote machine: oconn.open "provider=ms remote;" & _ if you want to use an ole db provider on the remote machine (via rds datafactory default handler): oconn.open "provider=ms remote;" & _ the corresponding entry in the \winnt\msdfmap.ini file would be: [connect myadvworksconn] oconn.open "provider=ms remote;" & _ if you want to use an ole db provider on the remote machine: oconn.open "provider=ms remote;" & _ if you want to use an ole db provider on the remote machine (via rds datafactory default handler): oconn.open "provider=ms remote;" & _ the corresponding entry in the \winnt\msdfmap.ini file would be: [connect mypubsconn] for more information, see: microsoft ole db remoting provider and q240838 then use a shape command with sql strings: or use a shape command that calls stored procedures: for more information, see: microsoft data shaping service for ole db and q288409 dim osqlconnection as sqlclient.sqlconnection sconnstring = "data source=(local);" & _ for more information, see: system.data.sql namespace and .net data providers ole db .net managed provider (system.data.oledb) for sql server ole db provider (for sql server 6.0 or earlier) dim ooledbconnection as oledb.oledbconnection sconnstring = "provider=sqloledb;" & _ for jet ole db provider: dim ooledbconnection as oledb.oledbconnection sconnstring = "provider=microsoft.jet.oledb.4.0;" & _ for more information, see: system.data.oledb namespace and .net data providers odbc .net managed provider (system.data.odbc) for sql server odbc driver: dim oodbcconnection as odbc.odbcconnection ‘ create and open a new odbc connection oodbcconnection = new odbc.odbcconnection(sconnstring) for oracle odbc driver: dim oodbcconnection as odbc.odbcconnection ‘ create and open a new odbc connection oodbcconnection = new odbc.odbcconnection(sconnstring) for access (jet) odbc driver: dim oodbcconnection as odbc.odbcconnection ‘ create and open a new odbc connection oodbcconnection = new odbc.odbcconnection(sconnstring) for all other odbc drivers: dim oodbcconnection as odbc.odbcconnection ‘ create and open a new odbc connection oodbcconnection = new odbc.odbcconnection(sconnstring)
<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="
<meta http-equiv=content-type content="text/html; charset=gb2312">
<meta name=progid content=excel.sheet>
<meta name=generator content="microsoft excel 9">
<link rel=file-list href="./222.files/filelist.xml">
<link rel=edit-time-data href="./222.files/editdata.mso">
<link rel=ole-object-data href="./222.files/oledata.mso">
<!--[if gte mso 9]><xml>
<documentproperties>
<author>xky</author>
<lastauthor>xky</lastauthor>
<created>2002-05-27t17:51:00z</created>
<lastsaved>2002-06-22t10:03:03z</lastsaved>
<company>zydn</company>
<version>9.2812</version>
</documentproperties>
<officedocumentsettings>
<downloadcomponents/>
<locationofcomponents href="file:///e:/msowc.cab"/>
</officedocumentsettings>
</xml><![endif]-->
<style>
<!--table
{mso-displayed-decimal-separator:"\.";
mso-displayed-thousand-separator:"\,";}
@page
{margin:1.0in .75in 1.0in .75in;
mso-header-margin:.5in;
mso-footer-margin:.5in;}
tr
{mso-height-source:auto;
mso-ruby-visibility:none;}
col
{mso-width-source:auto;
mso-ruby-visibility:none;}
br
{mso-data-placement:same-cell;}
.style0
{mso-number-format:general;
text-align:general;
vertical-align:bottom;
white-space:nowrap;
mso-rotate:0;
mso-background-source:auto;
mso-pattern:auto;
color:windowtext;
font-size:9.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:宋體;
mso-generic-font-family:auto;
mso-font-charset:134;
border:none;
mso-protection:locked visible;
mso-style-name:常規;
mso-style-id:0;}
td
{mso-style-parent:style0;
padding-top:1px;
padding-right:1px;
padding-left:1px;
mso-ignore:padding;
color:windowtext;
font-size:9.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:宋體;
mso-generic-font-family:auto;
mso-font-charset:134;
mso-number-format:general;
text-align:general;
vertical-align:bottom;
border:none;
mso-background-source:auto;
mso-pattern:auto;
mso-protection:locked visible;
white-space:nowrap;
mso-rotate:0;}
.xl24
{mso-style-parent:style0;
border:.5pt solid windowtext;}
.xl25
{mso-style-parent:style0;
mso-number-format:"long date";
text-align:left;
border:.5pt solid windowtext;}
ruby
{ruby-align:left;}
rt
{color:windowtext;
font-size:9.0pt;
font-weight:400;
font-style:normal;
text-decoration:none;
font-family:宋體;
mso-generic-font-family:auto;
mso-font-charset:134;
mso-char-type:none;
display:none;}
-->
</style>
<!--[if gte mso 9]><xml>
<x:excelworkbook>
<x:excelworksheets>
<x:excelworksheet>
<x:name>sheet1</x:name>
<x:worksheetoptions>
<x:defaultrowheight>225</x:defaultrowheight>
<x:print>
<x:validprinterinfo/>
<x:papersizeindex>9</x:papersizeindex>
<x:horizontalresolution>-3</x:horizontalresolution>
<x:verticalresolution>0</x:verticalresolution>
</x:print>
<x:selected/>
<x:panes>
<x:pane>
<x:number>3</x:number>
<x:activerow>24</x:activerow>
<x:activecol>5</x:activecol>
</x:pane>
</x:panes>
<x:protectcontents>false</x:protectcontents>
<x:protectobjects>false</x:protectobjects>
<x:protectscenarios>false</x:protectscenarios>
</x:worksheetoptions>
</x:excelworksheet>
<x:excelworksheet>
<x:name>sheet2</x:name>
<x:worksheetoptions>
<x:defaultrowheight>225</x:defaultrowheight>
<x:protectcontents>false</x:protectcontents>
<x:protectobjects>false</x:protectobjects>
<x:protectscenarios>false</x:protectscenarios>
</x:worksheetoptions>
</x:excelworksheet>
<x:excelworksheet>
<x:name>sheet3</x:name>
<x:worksheetoptions>
<x:defaultrowheight>225</x:defaultrowheight>
<x:protectcontents>false</x:protectcontents>
<x:protectobjects>false</x:protectobjects>
<x:protectscenarios>false</x:protectscenarios>
</x:worksheetoptions>
</x:excelworksheet>
</x:excelworksheets>
<x:windowheight>6600</x:windowheight>
<x:windowwidth>12000</x:windowwidth>
<x:windowtopx>0</x:windowtopx>
<x:windowtopy>1395</x:windowtopy>
<x:protectstructure>false</x:protectstructure>
<x:protectwindows>false</x:protectwindows>
</x:excelworkbook>
</xml><![endif]-->
</head>
如何在asp中實(shí)現網(wǎng)絡(luò )打印功能
使用到的技術(shù):
asp,wsh,vbscript
文件aspprint.asp代碼如下:
<%@ language=vbscript %>
<%
option explicit
dim strprinterpath ‘form中保存網(wǎng)絡(luò )打印機路徑的值
dim strusername ‘form中用戶(hù)名的值
dim strpassword ‘form中密碼的值
dim strmessage ‘form打印內容的值
dim objfs ‘vbscript中的文件系統對象
dim objwshnet ‘wsh中的網(wǎng)絡(luò )對象
dim objprinter ‘打印對象
%>
<head>
<meta name="generator" content="microsoft visual studio 6.0">
</head>
<body>
if strsubmit = "" then
%>
由于我是演示起見(jiàn),其中有關(guān)nt的賬號和密碼都是使用了不加密的手段在
asp中傳遞的
真正的運用中應該對該登錄過(guò)程進(jìn)行安全處理。
<form action="aspprint.asp" method=post id=form name=form>
<table width=100% align=center border=0 cellspacing=1 cellpadding
=1>
<tr>
<td align=right nowrap>網(wǎng)絡(luò )打印機路徑:</td>
<td align=left nowrap><input type="text" id=printerpath nam
e=printerpath
value="\\< domain >\< printer >"></td>
</tr>
<tr>
<td align=right nowrap>登錄賬號:</td>
<td align=left nowrap><input type="text" id=username name=u
sername
value="<% = strusername %>"></td>
</tr>
<tr>
<td align=right nowrap>登錄口令:</td>
<td align=left nowrap><input type="password" id=password
name=password></td>
</tr>
<tr>
<td align=right nowrap>請輸入你想打印的文字:</td>
<td align=left nowrap><textarea rows=2 cols=20 id=message
</tr>
<tr>
<td align=right nowrap> </td>
<td align=left nowrap><input type="submit" value="submit"
</tr>
</table>
</form>
<%
else
‘ 從form中取得響應信息。
strprinterpath = request.form("printerpath")
strusername = request.form("username")
strpassword = request.form("password")
strmessage = request.form("message")
work object. the network object will
give us the methods we need to open a printer connection, and the fi
lesystemobject will allow us to stream our
output to the printer. we create these objects in the following code
example:
set objwshnet = createobject("wscript.network")
‘ 使用wsh連接網(wǎng)絡(luò )打印機
objwshnet.addprinterconnection "lpt1", strprinterpath, false, str
username, strpassword
‘ 使用文件系統對象將打印設備作為一個(gè)文件使用
set objprinter = objfs.createtextfile("lpt1:", true)
‘ 給打印設備送出文本
objprinter.write(strmessage)
‘關(guān)閉打印設備對象并進(jìn)行錯誤陷阱處理
on error resume next
objprinter.close
‘ 如果發(fā)生錯誤,關(guān)閉打印連接,并輸出錯誤信息
if err then
response.write ("error # " & cstr(err.number) & " " & err.desc
ription)
err.clear
else
‘ 操作成功,輸出確認信息
response.write("<center>")
response.write("<table width=100% align=center border=0 cellsp
acing=1 cellpadding=1>")
response.write("<tr><td align=right><b>打印消息送出:</b></td>"
)
response.write("<td align=left>" & strmessage & "</td></tr>")
>")
response.write("<td align=left>" & strprinterpath & "</td></tr
>")
response.write("<tr><td align=right><b>登錄賬號:</b></td>")
response.write("<td align=left>" & strusername & "</td></tr>")
response.write("</center>")
end if
‘ 取消打印連接
objwshnet.removeprinterconnection "lpt1:"
set objwshnet = nothing
set objfs = nothing
set objprinter = nothing
end if
%>
</body>
</html>
response_buffer.asp
<%‘response.buffer=true%>
<a href="a">a</a>
<%response.redirect "request_form.htm"%>
①.當關(guān)閉iis的緩沖功能,訪(fǎng)問(wèn)該頁(yè)面時(shí)出錯
a
答復對象 錯誤 ‘a(chǎn)sp 0156 : 80004005‘
頭錯
/course/response_buffer.asp,行3
http 頭已經(jīng)寫(xiě)入到 客戶(hù)瀏覽器。任何 http 頭的修改必須在寫(xiě)入頁(yè)內容之前。
②.當關(guān)閉iis的緩沖功能,去掉文件第一行的注釋?zhuān)瑒t頁(yè)面重定向成功
③.當打開(kāi)iis的緩沖功能,無(wú)論是否去掉文件第一行的注釋?zhuān)?yè)面重定向都成功
問(wèn)題:如何保護自己的asp源代碼不泄露?
〈%
set mail = server.createobject("cdonts.newmail")
mail.to ="abc@xxx.com"
mail.from ="yourmail@xxx.com"
mail.subject ="主題"
mail.body ="e-mail內容"
mail.send
%〉
問(wèn)題:asp與數據庫連接一定要在服務(wù)器端設置dsn嗎?
set conn=server.createobject("adodb.connection")
connpath="dbq="&server.mappath("yourtable.mdb")
conn.open"driver={microsoft access driver (.mdb)};"&connpath
set rs=conn.execute("selectfrom authors")
〈% for each item in request.form %〉
〈input namee="〈%=item%〉"type="hidden"
value="〈%=server.htmlencode(request.form(item)) %〉"〉
〈% next %〉
〈/form〉
〈%request. querystring ("bh")%〉
問(wèn)題:如何用asp實(shí)現在線(xiàn)人數統計?
golobal.asa文件
sub session—onstart
application("online")=application("online")+1
end sub
sub session—onend
application("online")=application("online")-1
end sub
sub application—onstard
application("online")=0
end sub
sub application—onend
application("online")=0
end sub
〈/script〉
tmp=cstr(tmp)
dim disp(20)
dim images(20)
dbbits=len(tmp)
for i= 1 to dbbits
disp(i)=left(right(tmp,i),i-(i-1))
next
for i=dbbits to 1 step -1
images(i)="〈img src="&"http://xxxx.com.cn/pic"&"/"&disp(i)&".gif〉"
response.write"document.write(′"&images(i)&"′);"
next %〉
dim t1,t2
t1=now()
response.write"運行這段asp代碼用了"&cstr(cdbl((t2-t1)*24*60*60))&"秒"
%〉
一個(gè)操作讀寫(xiě)已存在excel文件的例子
strsource=filepath & "test.xls"‘打開(kāi)一個(gè)已經(jīng)存在的test.xls文件,filepath為物理絕對路徑
xlapp.workbooks.open(strsource)
set xlbook = xlapp.activeworkbook ‘打開(kāi)book
set xlsheet = xlbook.worksheets(1) ‘打開(kāi)其中的一個(gè)sheet
xlbook.save ‘保存該excel文件
xlbook.saveas filepath & "test2.xls" ‘另存一個(gè)文件
set xlsheet=nothing ‘一定要關(guān)閉,否則以后會(huì )一直存在一個(gè)無(wú)法釋放的excel進(jìn)程
set xlbook=nothing
xlapp.quit
1excel文件所在的路徑目錄,要讓iuser_即asp運行的用戶(hù)有讀寫(xiě)權限,否則
會(huì )報錯。
2服務(wù)器端還必須要設置com組件的操作權限。在命令行鍵入“dcomcnfg”,
進(jìn)入com組件配置界面,選擇microsoft excel后點(diǎn)擊屬性按鈕,將三個(gè)單選
項一律選擇自定義,編輯中將everyone加入所有權限。保存完畢后重新啟動(dòng)
服務(wù)器。
如何使用事務(wù)處理、存儲過(guò)程和視圖?
@sid int output
as
set @sid=2
(@user_name varchar(40),@password varchar(20))
as
if exists(select id from user_info where user_name=@user_name and password=@password)
return 1
else
return 0
(@user_name varchar(40),@password varchar(20))
as
select id from user_info where user_name=@user_name and password=@password
(@user_name varchar(40),@password varchar(20))
as
set xact_abort on
begin transaction
delete from user_info where user_name=@user_name and password=@password
commit transaction
set xact_abort off
select * from user_info
<!-- #include virtual="/adovbs.inc" -->
<%
set conn=server.createobject("adodb.connection")
conn.open "course_dsn","course_user","course_password"
‘create procedure [user_info_1]
‘(@user_name varchar(40),@password varchar(20))
‘a(chǎn)s
‘select id from user_info where user_name=@user_name and password=@password
response.write "普通的調用方法:<br>"
set rs=server.createobject("adodb.recordset")
sql="user_info_1 ‘"&request.querystring("user_name")&"‘,‘"&request.querystring("password")&"‘"
rs.open sql,conn,1,1
response.write rs("id")&"<br>"
rs.close
‘create procedure [user_info_3] as
‘select * from user_info
response.write "<br>返回紀錄集,可以使用recordcount等屬性:"
sql="exec user_info_3"
rs.open sql,conn,1,1
for i=1 to rs.recordcount
response.write "<br>"&rs("user_name")
rs.movenext
next
rs.close
set rs=nothing
‘create procedure [output_1]
‘@sid int output
‘a(chǎn)s
‘set @sid=2
response.write "<br><br>調用帶輸出參數的存儲過(guò)程:<br>"
set cmd=server.createobject("adodb.command")
cmd.activeconnection=conn
cmd.commandtext = "output_1"
cmd.parameters.append cmd.createparameter("@sid",adinteger,adparamoutput)
cmd("@sid")=10
cmd.execute()
bbb=cmd("@sid")
response.write bbb&"<br>"
set cmd=nothing
‘create procedure [return_1]
‘(@user_name varchar(40))
‘a(chǎn)s
‘if exists(select id from user_info where user_name=@user_name)
‘return 1
‘else
‘return 0
response.write "<br>調用帶兩個(gè)輸入參數和返回值的存儲過(guò)程:<br>"
set cmd=server.createobject("adodb.command")
cmd.activeconnection=conn
cmd.commandtype = adcmdstoredproc
cmd.commandtext = "return_1"
cmd.parameters.append cmd.createparameter("@return_value",adinteger,adparamreturnvalue)
cmd.parameters.append cmd.createparameter("@user_name",advarchar,adparaminput,40)
cmd.parameters.append cmd.createparameter("@password",advarchar,adparaminput,20)
cmd("@user_name")="tuth"
cmd("@password")="yyuyu"
cmd.execute()
rrr=cmd("@return_value")
response.write rrr
set cmd=nothing
set conn=nothing
%>
訪(fǎng)問(wèn)http://10.1.43.238/course/use_proc.asp?user_name=ahyi&password=ttt時(shí),出現如下
12
ahyi
tet
tuth
2
1
use_transaction_1.asp
<%
‘a(chǎn)sp中使用事務(wù)
set conn=server.createobject("adodb.connection")
conn.open "course_dsn","course_user","course_password"
conn.begintrans ‘開(kāi)始事務(wù)
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,3
if conn.errors.count>0 then ‘有錯誤發(fā)生
conn.rollbacktrans ‘回滾
set rs=nothing
conn.close
set conn=nothing
response.write "交易失敗,回滾至修改前的狀態(tài)!"
response.end
else
conn.committrans ‘提交事務(wù)
set rs=nothing
conn.close
set conn=nothing
response.write "交易成功!"
response.end
end if
%>
(@user_name varchar(40),@password varchar(20))
as
set xact_abort on
begin transaction
delete from user_info where user_name=@user_name and password=@password
commit transaction
set xact_abort off
<%
set conn=server.createobject("adodb.connection")
conn.open "course_dsn","course_user","course_password"
rs.open sql,conn,1,1
set rs=nothing
conn.close
set conn=nothing
%>
在數據庫中定義好視圖之后,在asp中如同使用一個(gè)表一樣來(lái)使用視圖
各類(lèi)型數據的導入與導出:
******* 導出到excel
exec master..xp_cmdshell ‘bcp settledb.dbo.shanghu out c:\temp1.xls -c -q -s"gnetdata/gnetdata" -u"sa" -p""‘
select * from openrowset(‘microsoft.jet.oledb.4.0‘,
‘excel 5.0;hdr=yes;database=c:\test.xls‘,sheet1$)
--------------------------------------------------------
select *
from opendatasource( ‘microsoft.jet.oledb.4.0‘,
‘data source="c:\test.xls";user id=admin;password=;extended properties=excel 5.0‘)...xactions
select cast(cast(科目編號 as numeric(10,2)) as nvarchar(255))+‘ ‘ 轉換后的別名
from opendatasource( ‘microsoft.jet.oledb.4.0‘,
‘data source="c:\test.xls";user id=admin;password=;extended properties=excel 5.0‘)...xactions
exec master..xp_cmdshell ‘bcp "dbname..tablename" in c:\dt.txt -c -sservername -usa -ppassword‘
exec master..xp_cmdshell ‘bcp "dbname..tablename" out c:\dt.txt -c -sservername -usa -ppassword‘
或
exec master..xp_cmdshell ‘bcp "select * from dbname..tablename" queryout c:\dt.txt -c -sservername -usa -ppassword‘
exec master..xp_cmdshell ‘bcp "庫名..表名" out "d:\tt.txt" -c -t ,-u sa -p password‘
bulk insert 庫名..表名
from ‘c:\test.txt‘
with (
fieldterminator = ‘;‘,
rowterminator = ‘\n‘
)
--/* dbase iv文件
select * from
openrowset(‘microsoft.jet.oledb.4.0‘
,‘dbase iv;hdr=no;imex=2;database=c:\‘,‘select * from [客戶(hù)資料4.dbf]‘)
--*/
select * from
openrowset(‘microsoft.jet.oledb.4.0‘
,‘dbase iii;hdr=no;imex=2;database=c:\‘,‘select * from [客戶(hù)資料3.dbf]‘)
--*/
select * from openrowset(‘msdasql‘,
‘driver=microsoft visual foxpro driver;sourcetype=dbf;sourcedb=c:\‘,
‘select * from [aa.dbf]‘)
--*/
select * from openrowset(‘msdasql‘,
‘driver=microsoft visual foxpro driver;
sourcedb=e:\vfp98\data;
sourcetype=dbf‘,
‘select * from customer where country != "usa" order by country‘)
go
/***************** 導出到dbf ***************/
如果要導出數據到已經(jīng)生成結構(即現存的)foxpro表中,可以直接用下面的sql語(yǔ)句
‘driver=microsoft visual foxpro driver;sourcetype=dbf;sourcedb=c:\‘,
‘select * from [aa.dbf]‘)
select * from 表
sourcedb=c:\ 指定foxpro表所在的文件夾
aa.dbf 指定foxpro表的文件名.
/*************導出到access********************/
insert into openrowset(‘microsoft.jet.oledb.4.0‘,
‘x:\a.mdb‘;‘a(chǎn)dmin‘;‘‘,a表) select * from 數據庫名..b表
insert into b表 selet * from openrowset(‘microsoft.jet.oledb.4.0‘,
‘x:\a.mdb‘;‘a(chǎn)dmin‘;‘‘,a表)
********************* 導入 xml 文件
declare @doc varchar(1000)
--sample xml document
set @doc =‘
<root>
<customer cid= "c1" name="janine" city="issaquah">
<order oid="o1" date="1/20/1996" amount="3.5" />
<order oid="o2" date="4/30/1997" amount="13.4">customer was very satisfied
</order>
</customer>
<customer cid="c2" name="ursula" city="oelde" >
<order oid="o3" date="7/14/1999" amount="100" note="wrap it blue
white red">
<urgency>important</urgency>
happy customer.
</order>
<order oid="o4" date="1/20/1996" amount="10000"/>
</customer>
</root>
‘
-- create an internal representation of the xml document.
exec sp_xml_preparedocument @idoc output, @doc
select *
from openxml (@idoc, ‘/root/customer/order‘, 1)
with (oid char(5),
amount float,
comment ntext ‘text()‘)
exec sp_xml_removedocument @idoc
鄒健的
/********************導整個(gè)數據庫*********************************************/
/*
實(shí)現數據導入/導出的存儲過(guò)程
根據不同的參數,可以實(shí)現導入/導出整個(gè)數據庫/單個(gè)表
調用示例:
--導出調用示例
----導出單個(gè)表
exec file2table ‘zj‘,‘‘,‘‘,‘xzkh_sa..地區資料‘,‘c:\zj.txt‘,1
----導出整個(gè)數據庫
exec file2table ‘zj‘,‘‘,‘‘,‘xzkh_sa‘,‘c:\docman‘,1
----導入單個(gè)表
exec file2table ‘zj‘,‘‘,‘‘,‘xzkh_sa..地區資料‘,‘c:\zj.txt‘,0
----導入整個(gè)數據庫
exec file2table ‘zj‘,‘‘,‘‘,‘xzkh_sa‘,‘c:\docman‘,0
if exists(select 1 from sysobjects where name=‘file2table‘ and objectproperty(id,‘isprocedure‘)=1)
drop procedure file2table
go
create procedure file2table
@servername varchar(200)--服務(wù)器名
,@username varchar(200)--用戶(hù)名,如果用nt驗證方式,則為空‘‘
,@password varchar(200)--密碼
,@tbname varchar(500)--數據庫.dbo.表名,如果不指定:.dbo.表名,則導出數據庫的所有用戶(hù)表
,@filename varchar(1000)--導入/導出路徑/文件名,如果@tbname參數指明是導出整個(gè)數據庫,則這個(gè)參數是文件存放路徑,文件名自動(dòng)用表名.txt
,@isout bit--1為導出,0為導入
as
declare @sql varchar(8000)
begin
set @sql=‘bcp ‘+@tbname
+case when @isout=1 then ‘ out ‘ else ‘ in ‘ end
+‘ "‘+@filename+‘" /w‘
+‘ /s ‘+@servername
+case when isnull(@username,‘‘)=‘‘ then ‘‘ else ‘ /u ‘+@username end
+‘ /p ‘+isnull(@password,‘‘)
exec master..xp_cmdshell @sql
end
else
begin--導出整個(gè)數據庫,定義游標,取出所有的用戶(hù)表
declare @m_tbname varchar(250)
if right(@filename,1)<>‘\‘ set @filename=@filename+‘\‘
exec(@m_tbname)
open #tb
fetch next from #tb into @m_tbname
while @@fetch_status=0
begin
set @sql=‘bcp ‘+@tbname+‘..‘+@m_tbname
+case when @isout=1 then ‘ out ‘ else ‘ in ‘ end
+‘ "‘+@filename+@m_tbname+‘.txt " /w‘
+‘ /s ‘+@servername
+case when isnull(@username,‘‘)=‘‘ then ‘‘ else ‘ /u ‘+@username end
+‘ /p ‘+isnull(@password,‘‘)
exec master..xp_cmdshell @sql
fetch next from #tb into @m_tbname
end
close #tb
deallocate #tb
end
go
精簡(jiǎn)checkbox全選代碼
-----------------------------------
<script language="javascript">
function checkall(form)
{
for (var i=0;i<form.elements.length;i++)
{
var e = form.elements[i];
if (e.name != "chkall"&&e.disabled==false)
e.checked = form.chkall.checked;
}
}
</script>
<form method="post" action="" name="myform">
<input type=‘checkbox‘ name="id1" id="id" value=‘1‘><br />
<input type=‘checkbox‘ name="id2" id="id" value=‘1‘><br />
<input type=‘checkbox‘ name="id2" id="id" value=‘1‘><br />
<input name="chkall" type="checkbox" id="chkall" onclick="checkall(myform)" value="checkbox"> 全部選中
</form>
ado連接數據庫字符串大全
ole db providers, remote data services (rds), ms remote, ms datashape.
(sqlclient, oledb, and odbc).
by carl prothman, a microsoft visual basic mvp
enjoy!
table of contents
odbc dsn connections dsn
file dsn
odbc dsn-less connections odbc driver for as/400
odbc driver for access
odbc driver for dbase
odbc driver for excel
odbc driver for mysql
odbc driver for oracle
odbc driver for paradox
odbc driver for sql server
odbc driver for sybase
odbc driver for sybase sql anywhere
odbc driver for text
odbc driver for teradata
odbc driver for visual foxpro
ole db data link connections data link file (udl)
ole db data provider connections ole db provider for as/400
ole db provider for active directory service
ole db provider for db2
old db provider for internet publishing
ole db provider for index server
ole db provider for microsoft jet
ole db provider for odbc databases
ole db provider for oracle (from microsoft)
ole db provider for oracle (from oracle)
ole db provider for simple provider
ole db provider for sql server
remote data service (rds) connections rds data control - connect property
rds data control - url property
ado url connections ado recordset
ms remote provider connections ms remote - access (jet)
ms remote - sql server
data shape provider connections ms datashape - sql server
.net managed provider connections sql client .net managed provider (system.data.sqlclient)
ole db .net managed provider (system.data.oledb)
odbc .net managed provider (system.data.odbc)
odbc dsn connections
using an odbc dsn (data source name) is a two step process.
found in your computer‘s control panel (or administrative tools menu in windows 2000).
make sure to create a system dsn (not a user dsn) when using asp.
note: you can also create the dsn via vb code.
oconn.open "dsn=advworks;" & _
"uid=admin;" & _
"pwd=;
you can also create and use a file dsn. then use the following ado connection string:
oconn.open "filedsn=c:\somepath\mydb.dsn;" & _
"uid=admin;" & _
"pwd=;"
how to use file dsns and dsn-less connections
then your program won‘t work so well... so it‘s better to use a dsn-less or ole db provider
connection string with a trusted connection if possible!
odbc driver for as/400
oconn.open "driver={client access odbc driver (32-bit)};" & _
"system=myas400;" & _
"uid=myusername;" & _
"pwd=mypassword;"
for standard security:
"dbq=c:\somepath\mydb.mdb;" & _
"uid=admin;" & _
"pwd=;"
"dbq=c:\somepath\mydb.mdb;" & _
"systemdb=c:\somepath\mydb.mdw;", _
"admin", ""
"dbq=\\myserver\myshare\mypath\mydb.mdb;"
oconn.open "driver={microsoft dbase driver (*.dbf)};" & _
"driverid=277;" & _
"dbq=c:\somepath;"
ors.open "select * from user.dbf", oconn, , ,adcmdtext
oconn.open "driver={microsoft excel driver (*.xls)};" & _
"driverid=790;" & _
"dbq=c:\somepath\myspreadsheet.xls;" & _
"defaultdir=c:\somepath;"
to connect to a local database
"server=myservername;" & _
"option=16834;" & _
"database=mydb;"
"server=db1.database.com;" & _
"port=3306;" & _
"option=131072;" & _
"stmt=;" & _
"database=mydb;" & _
"uid=myusername;" & _
"pwd=mypassword;"
odbc driver for oracle
for the current oracle odbc driver from microsoft:
"server=oracleserver.world;" & _
"uid=myusername;" & _
"pwd=mypassword;"
"connectstring=oracleserver.world;" & _
"uid=myusername;" & _
"pwd=mypassword;"
oconn.open "driver={microsoft paradox driver (*.db)};" & _
"driverid=538;" & _
"fil=paradox 5.x;" & _
"defaultdir=c:\dbpath\;" & _
"dbq=c:\dbpath\;" & _
"collatingsequence=ascii;"
for standard security:
"server=myservername;" & _
"database=mydatabasename;" & _
"uid=myusername;" & _
"pwd=mypassword;"
"server=myservername;" & _
"database=mydatabasename;" & _
"uid=;" & _
"pwd=;"
"server=myservername;" & _
"database=mydatabasename;" & _
"trusted_connection=yes;"
oconn.open "driver={sql server};" & _
"server=myservername;" & _
"database=mydatabasename;"
if using the sybase system 11 odbc driver:
"srvr=myservername;" & _
"uid=myusername;" & _
"pwd=mypassword;"
"srvr=myservername;" & _
"uid=myusername;" & _
"pwd=mypassword;"
oconn.open "odbc; driver=sybase sql anywhere 5.0;" & _
"defaultdir=c:\dbpath\;" & _
"dbf=c:\sqlany50\mydb.db;" & _
"uid=myusername;" & _
"pwd=mypassword;"
"dsn="""";"
oconn.open "provider=teradata;" & _
"dbcname=mydbcname;" & _
"database=mydatabasename;" & _
"uid=myusername;" & _
"pwd=mypassword;"
oconn.open "driver={microsoft text driver (*.txt; *.csv)};" & _
"dbq=c:\somepath\;" & _
"extensions=asc,csv,tab,txt;" & _
"persist security info=false"
oconn, adopenstatic, adlockreadonly, adcmdtext
for more information, see: text file driver programming considerations
‘函數名:joinchar
‘作 用:自動(dòng)判斷鏈接地址并向地址中加入 ? 或 &
‘參 數:strurl ----網(wǎng)址
‘返回值:加了 ? 或 & 的網(wǎng)址
‘=================================================
function joinchar(strurl)
if strurl="" then
joinchar=""
exit function
end if
if instr(strurl,"?")<len(strurl) then
if instr(strurl,"?")>1 then
if instr(strurl,"&")<len(strurl) then
joinchar=strurl & "&"
else
joinchar=strurl
end if
else
joinchar=strurl & "?"
end if
else
joinchar=strurl
end if
end function
odbc driver for visual foxpro
with a database container:
"sourcetype=dbc;" & _
"sourcedb=c:\somepath\mysourcedb.dbc;" & _
"exclusive=no;"
"sourcetype=dbf;" & _
"sourcedb=c:\somepath\mysourcedbfolder;" & _
"exclusive=no;"
for more information, see: visual foxpro odbc driver and q165492
ole db data link connections
data link file (udl)
for absolute path:
anymore. you can add the data link menu back in the menu list by running the
"c:\program files\common files\system\ole db\newudl.reg" reg file,
then right-click on the desktop and select "new | microsoft data link" menu.
or you can also create a data link file by creating a text file and change it‘s
file extension to ".udl", then double-click the file.
ole db provider connections
ole db provider for as/400
oconn.open "provider=ibmda400;" & _
"data source=myas400;"
"user id=myusername;" & _
"password=mypassword;"
oconn.open "provider=adsdsoobject;" & _
"user id=myusername;" & _
"password=mypassword;"
oconn.open = "provider=db2oledb;" &
"network transport library=tcpip;" &
"network address=myserver;" & _
"package collection=mypackage;" &
"host ccsid=1142"
"initial catalog=mydb;" &
"user id=myusername;" & _
"password=mypassword;"
and inf: configuring data sources for the microsoft ole db provider for db2
oconn.open "provider=msidxs;" & _
"data source=mycatalog;"
oconn.open "provider=msdaipp.dso;" & _
"data source=http://mywebsite/mydir;" & _
"user id=myusername;" & _
"password=mypassword;"
for standard security:
"data source=c:\somepath\mydb.mdb;" & _
"user id=admin;" & _
"password=;"
"data source=c:\somepath\mydb.mdb;" & _
"jet oledb:system database=mysystem.mdw;", _
"admin", ""
"data source=c:\somepath\mydb.mdb;" & _
"jet oledb:database password=mydbpassword;", _
"admin", ""
"data source=\\myserver\myshare\mypath\mydb.mdb;
oconn.open "provider=microsoft.jet.oledb.4.0;" & _
"data source=c:\somepath\mydb.mdb;" & _
"user id=admin;" & _
"password=;"
for more information, see: ole db provider for microsoft jet, q191754, q225048, q239114, and q271908
"data source=c:\somepath\myexcelspreadsheet.xls;" & _
"extended properties=""excel 8.0;hdr=yes;"";"
(or named range), so the provider will not include the first row of the
selection into the recordset. if "hdr=no", then the provider will include
the first row of the cell range (or named ranged) into the recordset.
you can also open a text file using the "ole db provider for microsoft jet"
"data source=c:\somepath\;" & _
"extended properties=""text;hdr=yes;fmt=delimited;"";"
ors.open "select * from mytextfile.txt", oconn, adopenstatic, adlockreadonly, adcmdtext
for access (jet):
"driver={microsoft access driver (*.mdb)};" & _
"dbq=c:\somepath\mydb.mdb;" & _
"uid=myusername;" & _
"pwd=mypassword;"
for sql server:
"driver={sql server};" & _
"server=myservername;" & _
"database=mydatabasename;" & _
"uid=myusername;" & _
"pwd=mypassword;"
oconn.open "provider=msdaora;" & _
"data source=myoracledb;" & _
"user id=myusername;" & _
"password=mypassword;"
for standard security:
"data source=myoracledb;" & _
"user id=myusername;" & _
"password=mypassword;"
"data source=myoracledb;" & _
"user id=/;" & _
"password=;"
‘ or
"data source=myoracledb;" & _
"osauthent=1;"
(note, if you get a logon dialog, then click cancel, then perform a one-time free signup with oracle‘s technet system)
ole db provider for simple provider
the microsoft ole db simple provider (osp) allows ado to access any data for which a provider has
been written using the ole db simple provider toolkit. simple providers are intended to access data
sources that require only fundamental ole db support, such as in-memory arrays or xml documents.
xml files. these xml files may contain the ado xml persistence schema, but it is not required. this
has been implemented by connecting the osp to the msxml2.dll, therefore msxml2.dll or newer is
required.
"data source=msxml2.dsocontrol.2.6;"
for more information, see: microsoft ole db simple provider
for standard security:
"data source=myservername;" & _
"initial catalog=mydatabasename;" & _
"user id=myusername;" & _
"password=mypassword;"
"data source=myservername;" & _
"initial catalog=mydatabasename;" & _
"integrated security=sspi;"
"data source=myservername\inst2;" & _
"initial catalog=mydatabasename;" & _
"user id=myusername;" & _
"password=mypassword;"
oconn.properties("prompt") = adpromptalways
oconn.open "data source=myservername;" & _
"initial catalog=mydatabasename;"
"data source=xxx.xxx.xxx.xxx,1433;" & _
"network library=dbmssocn;" & _
"initial catalog=mydatabasename;" & _
"user id=myusername;" & _
"password=mypassword;"
- xxx.xxx.xxx.xxx is an ip address
- "network library=dbmssocn" tells ole db to use tcp/ip rather than named pipes (q238949)
- 1433 is the default port number for sql server
- you can also add "encrypt=yes" for encryption
the following examples show how to connect to a remote database using the rds data control.
when using the rds datacontrol‘s server/sql/connect properties, the rds datacontrol uses the
rds datafactory on the remote server. if you use the rds datacontrol‘s url property,
then the rds datafactory is not used at all.
for more information, see rds faq #24
with the rds default handler disabled (not recommend due to security risks):
.server = "http://carl2"
.sql = "select * from authors where state = ‘ca‘"
.connect = "provider=sqloledb;" & _
"data source=(local);" & _
"initial catalog=pubs;" & _
"user id=sa;" & _
"password=;"
.refresh
end with
.server = "http://carl2"
.handler = "msdfmap.handler"
.connect = "data source=myconnecttag;"
.sql = "mysqltag(""ca"")"
.refresh
end with
access = readwrite
connect = "provider=sqloledb;data source=(local);initial catalog=pubs;user id=sa;password=;"
sql = "select * from authors where state = ‘?‘"
q243245, q230680, and rds customization handler microsoft articles
rds datacontrol - url property
to get records from a remote database:
.url = "http://carlp0/authors_getbystate.asp?state=ca"
.refresh
end with
.url = "http://carlp0/rdsdatacontrol/authors_save.asp"
.submitchanges
end with
ado url connections
ado 2.5+ allows you to open up a recordset based on xml returned from an asp file over http.
this feature doesn‘t use rds at all.
to get records from a remote database:
adopenstatic, adlockbatchoptimistic
the recordset‘s update and updatebatch methods will not work in this case.
set ostm = new adodb.stream
ors.save ostm, adpersistxml
set oxmlhttp = new msxml2.xmlhttp30
oxmlhttp.open "post", "http://carlp0/authors_save.asp", false
oxmlhttp.send ostm.readtext
if oxmlhttp.status = 500 then
debug.print oxmlhttp.statustext
end if
ms remote provider connections
the following connections strings use microsoft‘s remote provider (ms remote). the ms remote
provider tells ado to communicate with the remote server (via the rds datafactory) and to use
the remote provider that is installed on the remote server.
for more information, see rds faq #24
if you want to use an odbc dsn on the remote machine:
"remote server=http://myservername;" & _
"remote provider=msdasql;" & _
"dsn=advworks;" & _
"uid=myusername;" & _
"pwd=mypassword;"
"remote server=http://myservername;" & _
"remote provider=microsoft.jet.oledb.4.0;" & _
"data source=c:\somepath\mydb.mdb;", _
"admin", ""
"remote server=http://myservername;" & _
"handler=msdfmap.handler;" & _
"data source=myadvworksconn;"
access = readwrite
connect = "provider=microsoft.jet.oledb.4.0;" & _
"data source=mydb.mdb;" & _
"user id=admin;" & _
"password=;"
ms remote - sql server
if you want to use an odbc dsn on the remote machine:
"remote server=http://myservername;" & _
"remote provider=msdasql;" & _
"dsn=mydatabasename;" & _
"uid=myusername;" & _
"pwd=mypassword;"
"remote server=http://myservername;" & _
"remote provider=sqloledb;" & _
"data source=myservername;" & _
"initial catalog=mydatabasename;" & _
"user id=myusername;" & _
"password=mypassword;"
"remote server=http://myservername;" & _
"handler=msdfmap.handler;" & _
"data source=mypubsconn;"
access = readwrite
connect = "provider=sqloledb;" & _
"data source=myservername;" & _
"initial catalog=mydatabasename;" & _
"user id=myusername;" & _
"password=mypassword;"
data shape provider connections
ms datashape - sql server
oconn.open "provider=msdatashape;" & _
"data provider=sqloledb;" & _
"data source=mysqlservername;" & _
"initial catalog=mydatabase;" & _
"user id=myusername;" & _
"password=mypassword;"
ssql = "shape {select * from authors} " & _
"append ({select * from titleauthor} as chapter " & _
"relate au_id to au_id)"
ssql = "shape {exec spauthors_loadall} " & _
"append ({exec sptitleauthor_loadall} as chapter " & _
"relate au_id to au_id)"
.net managed provider connections
sql client .net managed provider (system.data.sqlclient)
the sql client .net managed provide allows you to connect to a microsoft sql server 7.0
or 2000 database. for microsoft sql server 6.0 or earlier, use the ole db .net data provider
with the "sql server ole db provider" (sqloledb).
dim sconnstring as string
"initial catalog=northwind;" & _
"integrated security=sspi;" & _
"pooling=true;" & _
"min pool size=10;" & _
"max pool size=50;" & _
"connection lifetime=30;" & _
"connection reset=true;" & _
"enlist=true;"
osqlconnection = new sqlclient.sqlconnection(sconnstring)
osqlconnection.open()
note: ‘sql‘ namespace got renamed to ‘sqlclient‘
the ole db .net data provider uses native ole db through com interop to enable data access.
to use the ole db .net data provider, you must also use an ole db provider (e.g. sqloledb,
msdaora, or microsoft.jet.oledb.4.0).
dim sconnstring as string
"data source=myservername;" & _
"initial catalog=mydatabasename;" & _
"user id=myusername;" & _
"password=mypassword;"
ooledbconnection = new oledb.oledbconnection(sconnstring)
ooledbconnection.open()
dim sconnstring as string
"data source=c:\work\nwind.mdb;" & _
"user id=admin;" & _
"password="";"
ooledbconnection = new oledb.oledbconnection(sconnstring)
ooledbconnection.open()
note: ‘a(chǎn)do‘ namespace got renamed to ‘oledb‘
the odbc .net data provider is an add-on component to the .net framework sdk beta 2.
it provides access to native odbc drivers the same way the ole db .net data provider
provides access to native ole db providers.
dim sconnstring as string
sconnstring = "driver={sql server};" & _
"server=mysqlservername;" & _
"database=mydatabasename;" & _
"uid=myusername;" & _
"pwd=mypassword;"
oodbcconnection.open()
dim sconnstring as string
sconnstring = "driver={microsoft odbc for oracle};" & _
"server=oracleserver.world;" & _
"uid=myusername;" & _
"pwd=mypassword;"
oodbcconnection.open()
dim sconnstring as string
sconnstring = "driver={microsoft access driver (*.mdb)};" & _
"dbq=c:\somepath\mydb.mdb;" & _
"uid=admin;" & _
"pwd=;"
oodbcconnection.open()
dim sconnstring as string
sconnstring = "dsn=mydsn;" & _
"uid=myusername;" & _
"pwd=mypassword;"
oodbcconnection.open()
聯(lián)系客服