發表文章

目前顯示的是有「ASP」標籤的文章

【ASP】取得年月的最後一天

取得某年 某 月的最後一天 ' Returns the last day of the month. Takes into account leap years ' Usage: LastDay(Month, Year) Function LastDay (MyMonth, MyYear)   'MyYear用民國年算法  'LastDay=day(dateserial(MyYear+1911,MyMonth+1,0))  'MyYear用西元年算法   LastDay=day(dateserial(MyYear,MyMonth+1,0))   '以上紅色字...2擇一   End Function Ex : 2018年11月的最後一天 Response.Write      LastDay (11,2018)   =>30 Ex : 2018年2月的最後一天 Response.Write      LastDay (2,2018)   =>28

【ASP】檢查字串是否空值或Null值

寫程式經常會遇到須判斷字串是否為空值或null值,因時常會用到,故寫成函式(Function),方便引用之。 '檢查字串是否空值或Null值,若是則true;否則false Function check_space (v_ask)      if v_ask = "" or isnull(v_ask) then            check_space = true      else            check_space = false      end if End Function Ex:判斷計畫代碼是否有值,若有進行代碼轉換 if check_space (plan_id) then    plan_name=""                 '計畫名稱為空值 else    plan_name=GetName(plan_id)   '計畫代碼轉換成計畫名稱 end if     PS:GetName()是個人自定函數,在此文不具任何意義

【ASP】無條件進位至整數

起源:因勞工加班費新制政策上路,修改勞工日薪、時薪與加班費計算,採 【無條件進位】 方式。 觀念: 利用Int特性,傳回數值類型,不四捨五入,注意取值是不大於它的整數。接著再用負負得正方式,可達到 【無條件進位】 之需求。 程式部分(參考): <% '日薪 s_Day = - Int( - (Int(s_Base) + Int(s_Master) + Int(s_Special))/30) '時薪 s_Hour = - Int( - (Int(s_Base) + Int(s_Master) + Int(s_Special))/240) '新制加班費計算方式 r_overtime_costA = - Int( - cint(r_overtime_cost) * (4/3)) r_overtime_costB = - Int( - cint(r_overtime_cost) * (5/3)) r_overtime_costC = - Int( - cint(r_overtime_cost) * (8/3)) %>

【ASP】使用OLEDB將資料匯出成Excel檔

圖片
首先,手動產生Excel檔做為輸出範本。 程式部分: <% 'Sample檔 reportfile =Server.MapPath("/client/user/客戶匯出格式.xls") '欲匯出檔 FileXLS = Server.MapPath("/client/user/客戶.xls") '檔案複製 set fs=Server.CreateObject("Scripting.FileSystemObject") set f=fs.GetFile( reportfile ) f.Copy FileXLS set f=nothing : set fs=nothing sqlstr="SELECT * FROM [Customer]" set rs=Exec_Record(sqlstr) if not rs.eof then '建立Excel連線 set cn= Server.createobject("Adodb.connection") cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & FileXLS & ";" & _ "Extended Properties=""Excel 8.0;HDR=YES;""" ' 【註二】 可以自行產生標題(Excel範本無標題前提之下) do while not rs.eof '標題定義過的寫法 【註一】 'cn.Execute "INSERT INTO [MyTable] (名稱,公司電話,公司傳真) VALUES ('aaa','123','456')" 'TEST sql="INSERT INTO [ Sheet1$ ] " & _ "([名稱],[國家],[城市],[公司電話],[公...

【ASP】設定長度字串格式

'設定固定長度格式,不足長度前面補0 Function Format (Expression, sFormat)   Dim exLen, s1, s2   s1 = Len(Expression)   s2 = Len(sFormat)   If s1 < s2 Then     exLen = s2 - s1     Format = String(exLen, Left(sFormat, 1)) & Expression   Else     Format = Right(Expression, s2)   End If End Function '以民國表示今天日期 response.write   Format (Year(Now) - 1911, "000") & "/" & Format (Month(Now), "00") & "/" & Format (Day(Now), "00") => 103/01/15 '補足四位數,不足前面補0 response.write   Format (687, "0000") => 0687 PS:另外一種寫法針對 日期格式 yyyy/MM/dd  

【ASP】取得IP

記錄IP通常用於寫入Log檔,比如:誰從哪個位置登入系統及那個人操作了啥麼動作等,系統也可以針對特定IP來允許操作。 程式: Function GetIP()  'GetIP = "999.999.999.999"  If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" Then    GetIP = Request.ServerVariables("REMOTE_ADDR")  Else    GetIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")  End If End Function

【ASP】產生GUID

GUID全名是Globally Unique Identifier,依據微軟的說法:GUID 是一個 128 位元的整數 (16 位元組),可以在需要唯一識別項時用於所有電腦和網路。 因為重複的機率很低,可以用來當做資料庫的key值,以避免以流水號當作key值時,可以修改網址參數而偷看到別人的資料。 程式: Function GetGuid()     Set TypeLib = Server.CreateObject("Scriptlet.TypeLib")     tg = TypeLib.Guid       GetGuid = mid(tg, 2 ,len(tg)-4)     Set TypeLib = Nothing End Function response.write GetGuid() & "<br/>" response.write GetGuid() 執行結果: 64D1C0F6-DD7E-4CAA-B6A6-D8053549B14D 6F24F46A-E1C7-42B8-8CF1-E2663F28DC7B PS:結果值是個參考,每次執行都不同

【ASP】透過ASPPDF元件來匯出PDF檔

圖片
引用ASPPDF元件,首先要到 官網 下載,並且安裝之。 ASPPDF元件不僅可以產生PDF檔,也可以產生成圖片檔及BarCode等,詳見官網。 程式部分:   '定義PDF 物件   Set PDF = Server.CreateObject("Persits.Pdf")          '建立ASPPdf物件   Set Param = PDF.CreateParam                           '建立參數   Set Param_header = PDF.CreateParam                    '建立參數(計畫標題)   Set Param_M = PDF.CreateParam                         '建立參數(金額)   Set Doc = PDF.CreateDocument                          '建立文件   Create empty document    ' Set various document properties 文件屬性 Doc.Title = "Jason"            '文件標題  Doc.Creator = "By Jason Lian"  '文件建立者 Param.Set("alignment=center;size=12;valignment=middle;")         ...

【ASP】HTML轉成PDF檔

首先,到官方網站 下載 並安裝之。 ◇ 在命令提示下(開始→執行→cmd) 語法(參考): C:\wkhtmltopdf\wkhtmltopdf    http://www.jason.com.tw/index.html    C:\pdf\index.pdf         執行檔路徑                                  欲轉的HTML                                         想轉出的PDF ◇套用程式下(ASP) 在ASP執行應用程式有很多種,本篇是以ASPEXEC.DLL元件為主,如何應用與下載,詳情 My Blog:執行應用程式並帶參數 。 語法(參考): Set Executor = Server.CreateObject("ASPExec.Execute")        Executor.Application = Server.MapPath("/wkhtmltopdf") & "/wkhtmltopdf.exe"   '指定要執行的應用程式路徑     '執行應用程式所需的參數        Executor.Parameters = "--orientation Landscape D:\PPC\tmpfile\台中都會區鐵路高架捷運化計畫經費管制表.html D:\ppc\123.pdf"                           strResult = Ex...

【ASP】執行應用程式並帶參數

首先註冊ASPEXEC.DLL(在asp裡要用此元件才能執行)    a. 至 http://www.nodevice.com/dll/ASPEXEC_DLL/item1931.html 下載    b. 解壓縮後,將ASPEXEC.DLL放在C:\Windows\System32下    c. 開始 > 執行 > regsvr32 aspexec.dll    d. 給予ASPEXEC.DLL檔IUSR讀取執行權限(檔案按右鍵,點選安全性)    程式部分:  <%     Set Executor = Server.CreateObject("ASPExec.Execute")        Executor.Application = Server.MapPath("/pdf") & "/ABC.exe"  '指定要執行的應用程式路徑           Executor.Parameters = "TEST"     '執行應用程式所需的參數         strResult = Executor.ExecuteDosApp             'Debug 用         'Response.Write "<pre>" & strResult & "</pre>"         'Response.Write "Attempting to execute " & Executor.Application & "<br>"         strResult1 = Executor.ExecutewinApp       ...

【ASP】金額格式表示法

有時候因為需求上的關係,需要將數字轉換成金額格式表示之 。 '金額表示法 a=10000+500 response.write mid(FormatCurrency(a,0),4)   =>10,500 '在這邊mid 主要拿掉 NT$,若要顯示 NT$,則可不用加mid函式 。

【ASP】建立自己專屬驗證碼(CAPTCHA)

圖片
首先,先到 http://www.tipstricks.org/ 造訪,挑選自己喜歡的風格及規則,最後並下載。 如下圖(參考): 接著在網頁上開始引用。 Javascript部分:(此功能為重新產生驗證碼圖片) <script type="text/javascript" language="javascript">         function RefreshImage(valImageId) {             var objImage = document.getElementById(valImageId)             if (objImage == undefined) {                 return;             }             var now = new Date();             objImage.src = objImage.src.split('?')[0] + '?x=' + now.toUTCString();         } </script> HTML部分: <img src=" /captcha/captcha.asp " id=" imgCaptcha " />&nbsp; <a...

【ASP】日期轉換(西元<-->民國)

日期轉換方式有很多種寫法,在此介紹比較簡單易懂且常用的方式︰ 1.先把日期去掉("/" or "-" or ".")等符號,轉成字串形態(yyyymmdd or yymmdd),接著在相加或相減19110000  〔EX: 2012/08/05 or 2012-08-05  2012.08.05 ==>20120805 註︰月及日一定要各兩碼,不足前面補0 〕   西元(yyyymmdd)轉民國   date1="20120805" - 19110000     date1 輸出︰ 1010805       民國轉西元(yyyymmdd)   date2=19110000 + "1010805"      date2 輸出︰ 20120805 2.只針對年份做相加或相減1911,且可保有("/" or "-" or ".")等符號   西元轉民國   (PS:假設今日NOW()為 2012/12/22)   date3=year(now())-1911 & mid(FormatDateTime(now(),2),5)       date3 輸出︰ 101/12/22   民國轉西元   strDate = "101/12/22"   DateArr = Split(strDate, "/")   date4=Cint(DateArr(0))+1911 & mid(strDate,len(DateArr(0))+1)    date4 輸出︰ 2012/12/22   通常 若要做日期比較或運算建議採用第一種寫法,若要顯示於螢幕上或報表上建議採用第二種方式 。 總之不管採用任何哪一種方式,都可以達到所要的結果,只是多一個步驟或少一個步驟而已。 〔如第一種寫法產生結果也可以像第二種產生結果一樣,需多加個拆解及合併動作,反之亦然〕

【AJAX】回傳多個值

圖片
透過Ajax技術想要回傳多個值,可將資料 轉換成XML方式 或陣列方式回傳。本範例是採用陣列方式,把很多的資料用逗號區分存進陣列就可以使用了。 JavaScript :   <script type="text/javascript">          function pdata(str)         {         var xmlhttp;            if (str=="")           {            //隱藏span區塊           document.getElementById("show").style.display="none";           return;           }         if (window.XMLHttpRequest)           { // code for IE7+, Firefox, Chrome, Opera, Safari           xmlhttp=new XMLHttpRequest();  ...

【ASP】輸出XML(不產生檔案)

圖片
將資料庫內容匯出成XML格式,但不產生檔案。可以應用在Ajax上存取資料之用途。 <%    response.CharSet ="utf-8"    session("dsn")="dsn=Northwind;uid=sa;pwd=SQLsys"    set rs=server.CreateObject ("adodb.recordset")    sqlstr="select 客戶編號,公司名稱,連絡人,城市,電話 from dbo.客戶"    rs.Open sqlstr,session("dsn"),3,1,1       Response.Clear()    if not rs.EOF then         With Response             .ContentType = "text/XML"             .write("<?xml version=""1.0"" encoding=""utf-8""?>")             .write("<customers>")         End with      do while not rs.eof          response.write("<customer>")         for each x ...

【AJAX】透過DB撈取資料

圖片
AJAX會去抓取ASP response.write出來的訊息. 以血型為例:選擇任一血型,會秀出該血型特徵 JavaScript : <script type="text/javascript"> function showBlood(str) { var xmlhttp;    if (str=="")   {   document.getElementById("txtHint").innerHTML="";   return;   } if (window.XMLHttpRequest)   { // code for IE7+, Firefox, Chrome, Opera, Safari   xmlhttp=new XMLHttpRequest();   } else   { // code for IE6, IE5   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");   } xmlhttp.onreadystatechange=function()   {   if (xmlhttp.readyState==4 && xmlhttp.status==200)     {     document.getElementById("txtHint").innerHTML=xmlhttp. responseText;     }   } xmlhttp.open("GET","getboold.asp?q="+str,true); xmlhttp.send(); } </script> 部分HTML : <form action=""> 血型 : <select name="BloodType" onchange=" showBlood(this.value) "> <option value="">請選擇</option> <option value="A"...

【ASP】匯出XML

圖片
將資料庫內容匯出存成XML <%      session("dsn")="dsn=workflow;uid=sa;pwd=SQLsys"    set rs=server.CreateObject ("adodb.recordset")    sqlstr="select ref,category,title,artist from dbo.Albums"    rs.Open sqlstr,session("dsn"),3,1,1    if not rs.EOF then        Set xml= server.CreateObject("Microsoft.XMLDOM")               xml. load ( server.MapPath ("albums.xml"))          'root node 根節點           Set Element=xml. createelement ("Albums")            do while not rs.EOF           'child nodes 子節點--(專輯)           Set e2=xml. createElement ("Album")                 ...

【ASP】讀取文字檔

<%      Set fs = CreateObject ("Scripting.FileSystemObject")        file_name="member.txt"    '讀檔    Set f = fs.OpenTextFile( server.MapPath (file_name),1, true )          '方式一     'do while f. AtEndOfLine <>true          '方式二     do while not f. AtEndOfStream        response.Write f.ReadLine        Response.Write("<br />")     loop    f.close    set f=Nothing    set fs=Nothing  %>  PS: server.MapPath 一定要加入,否則會出現錯誤訊息        Microsoft VBScript 執行階段錯誤 錯誤 '800a0046'         沒有使用權限         方式一及方式二 擇一即可    參考資料:    http://www.w3schools.com/asp/asp_ref_textstream.asp    屬性及方法 ...

【ASP】寫入文字檔

圖片
將資料庫的內容匯出到文字檔內 <%     session("dsn")="dsn=workflow;uid=sa;pwd=SQLsys"    set rs=server.CreateObject ("adodb.recordset")    sqlstr="select id,nickname,firstname from dbo.USERS"    rs.Open sqlstr,session("dsn"),3,1,1      dim id,nickname,firstname      Set fs = CreateObject ("Scripting.FileSystemObject")        file_name="member.txt"    '寫檔 方式一     Set ts = fs.CreateTextFile( Server.MapPath (file_name),True )            '寫檔 方式二    'Set ts=fs.OpenTextFile( Server.MapPath (file_name),8,true)    if not rs.EOF then        '寫入欄位名稱        ts.WriteLine (rs.Fields("id").Name & "   " & rs.Fields("Nickname").Name & "  " & rs.Fields("firstname").Name )        ts.WriteLine ("------------...

【ASP】讀取XML

圖片
XML內容 : <xml masterProduct="12345"> < Form vConnectStr="DSN=forms;UID=sa;PWD=SQLxml;" vTableName="BOM"  vFormName="bom.htm" vIndex="id=812">BOM 資料連線</ Form > < product1 mainProduct="yes" >    <color>Red</color>    <price>23.99</price>    <pname>LED燈泡</pname> </ product1 > <product2 productID="P0002"></product2> <product3 productID="P0003"></product3> </xml> 程式碼: <%     dim strPath     set xmlobj= server.createobject("Microsoft.XMLDOM ")     'xml路徑檔名     strPath = "xml.xml"     xmlobj.load Server.MapPath(strPath)  '載入XML       set root=xmlobj. documentElement     set forms=root. selectNodes (" //xml/Form ")  'multi node      'set forms=root.selectNodes("//Form")  省略XML也OK       ...