顯示具有 ASP技巧篇 標籤的文章。 顯示所有文章
顯示具有 ASP技巧篇 標籤的文章。 顯示所有文章

2012年9月19日 星期三

ASP 陣列拆法


'=== 陣列拆法 已知或固定的陣列數 =============================
TradeCode_1 = ""
TradeCode_2 = ""
TradeCode_3 = ""
if( InStr(rs("TradeCorpType"), "|") > 0 ) then 
arrTradeType = split( rs("TradeCorpType"), "|" )
For i = 0 To UBound(arrTradeType)
if( i = 0 ) then 
TradeCode_1 = arrTradeType(0) 
TradeCode_1_Cname = fetchCorpTypeName (TradeCode_1)
elseif( i = 1 ) then 
TradeCode_2 = arrTradeType(1)
TradeCode_2_Cname = fetchCorpTypeName (TradeCode_2)
elseif( i = 2 ) then 
TradeCode_3 = arrTradeType(2) 
TradeCode_3_Cname = fetchCorpTypeName (TradeCode_3)
end if
Next
end if 

'=== 陣列拆法 未知或動態的陣列數 =============================
if( InStr(rs("TradeCorpType"), "|") > 0 ) then 
arrTradeType = split( rs("TradeCorpType"), "|" )
For i = 0 To UBound(arrTradeType)
TradeCode = arrTradeType(i) 
Next
end if  

2011年12月29日 星期四

執行 ASP 頁導致回應緩衝區超出其設定限制

執行存放於Windows 2003(IIS 6.0)的ASP程式,若出現「…執行 ASP 頁導致回應緩衝區超出其設定限制…」等錯誤訊息,依MSDN的說法,其發生的原因是:「之所以發生這個問題,是因為 IIS 6.0 中引進並加入 IIS 5.0 的行為變更。這些版本的 IIS 會強制執行 4 MB 的預設 ASP 回應緩衝區上限。此限制防止大型的 ASP 回應對裝載 Web 應用程式的 IIS 處理序造成不利的影響。」
解決方法就是將Buffer調大囉:在DOS模式下,執行底下指令
C:\windows\system32\cscript.exe C:\Inetpub\AdminScripts\adsutil.vbs SET w3svc/aspbufferinglimit 10485760
10485760這數字即是buffer的大小,10MB之意(即1024*1024*10),視自己的需求而定。
此指令如果執行有誤,請確認下cscript.exe及adsutil.vbs的存放路徑是否正確。
一般而言cscript.exe存放於C:\windows\system32目錄下,adsutil.vbs存放於C:\Inetpub\AdminScripts目錄下

2007年12月28日 星期五

ASP RecordSet 相關函數說明

【RecordSet.Fields.Count 】傳回Recordset中的欄位數。
【RecordSet(i).Name 】傳回Recordset中第i個欄位的名稱。
【RecordSet.RcordCount 】傳回Recordset中資料錄的筆數。
【RecordSet(i) 】傳回RecordSet目前紀錄中的第i個欄位資料。
【RecordSet.BookMark 】傳回設定的書籍資料以儲存現在紀錄的位置。
【RecordSet.AbsolutePostition 】將指標移致RecordSet中的某一筆資料上。
【RecordSet.PageSize 】設定每頁顯示的資料筆數。
【RecordSet.PageCount 】傳回分頁後的總頁數。
【RecordSet.AbsolutePage 】傳回目前所在的頁數。
【RecordSet("欄位名稱") 】傳回指定欄位名稱的資料內容。
【RecordSet.BOF 】判斷指標是否超過最前面。
【RecordSet.EOF 】判斷指標是否超過最後面。
【RecordSet.MoveFirst 】將資料錄指標移至第一筆。
【RecordSet.MoveLast 】將資料錄指標移至最後一筆。
【RecordSet.MoveNext 】將資料指標往後移一筆。
【RecordSet.MovePrevious 】將資料指標往前移一筆。
【RecordSet.GetRows 】可將Recordset中的資料儲存至陣列中。
【RecordSet.AddNew 】新增資料至資料表中。
【RecordSet.Update 】更新目前這筆資料。
【RecordSet.Delete 】刪除目前這筆資料。
【RecordSet.Find 】尋找資料值。

常用的時間函式

=== 1.Now 傳回系統的日期及時間。===============
使用方法:無
例:Now 傳回值:2002/11/2 10:23:30 AM

=== 2.Date傳回系統的日期。 ===================
使用方法:無
例:Date 傳回值:2002/11/2

=== 3.Time 傳回系統的時間。===================
使用方法:無
例:Time 傳回值:10;23:30 AM

=== 4.Year 傳回系統的年份。 ==================
使用方法:Year[(1-3的時間函式)]
例:Year(Now) 傳回值:2002

=== 5.Month 傳回系統的月份。 =================
使用方法:Month[(1-3的時間函式)]
例:Month(Now) 傳回值:11

=== 6.Weekday 傳回系統的星期幾的數字。 ========
使用方法:Weekday(1-3的時間函式,[星期天的開始數字])
例:Weekday(Now,7)傳回值:14
備註:若不設定開始數字,則星期天為1,.....星期六為7。設定了則由星期天累加。

=== 7.Day 傳回系統的日子。 ===================
使用方法:Day[(1-3的時間函式)]
例:Day(Now) 傳回值:2

=== 8.Hour 傳回系統的小時。 ==================
使用方法:Hour[(1-3的時間函式)]
例:Hour(Now) 傳回值:11

=== 9.Minute 傳回系統的分鐘。 ================
使用方法:Minute[(1-3的時間函式)]
例:Minute(Now) 傳回值:23

=== 10.Second 傳回系統的秒。 ================
使用方法:Second[(1-3的時間函式)]
例:Second(Now)傳回值:30

=== 11.Cdate 轉換成日期變數型態。============
使用方法:Cdate(日期運算式)
例:Cdate(Now) 傳回值:2002/11/2 10:23:30 AM

=== 12.DateAdd 用以計算時差,即時間加減。 ====
使用方法:DateAdd("時間代碼",加減數,日期運算式)
例:DateAdd("H",2,Now) 傳回值:2002/11/2 12:23:30 AM
備註:日期運算式看備註

=== 13.DateDiff 計算兩段時間差距。 ==========
使用方法:DateDiff("時間代碼",日期運算式1,日期運算式2)
例:DateDiff("H","2002/11/2 12:23:30 AM",Now) 傳回值:2
備註:日期運算式看備註

=== 14.DatePart 傳回一個日期中的一部分。======
使用方法:DatePart("時間代碼",日期運算式)
例:Part("H",Now)傳回值:10
備註:日期運算式看備註

=== 15.DateSerial 轉換三個參數為日期形態。 ===
使用方法:DateSerial(年,月,日)
例:DateSerial(2002,11,2)傳回值:2002/11/2

=== 16.DateValue 轉換日期字串成日期形態。 ====
使用方法:DateValue("日期字串")
例:DateAdd("November 2,2002")傳回值:2002/11/2

=== 17.IsDate 檢查變數是否為日期形態或字串可否轉成日期。===
使用方法:DateValue("日期字串")
例:DateValue("November 2,2002")傳回值:True

=== 18.MonthName 傳回月份的名稱。 ============
使用方法:MonthName("日期字串")
例:MonthName(Now)傳回值:November

=== 19.TimeSerial 轉換三個參數為時間形態。====
使用方法:TimeSerial(時,分,秒)
例:TimeSerial(10,23,30) 傳回值:10:23:30

=== 20.WeekDayName 傳回週幾的名稱。 =========
使用方法:WeekDayName("日期字串")
例:WeekDayName(Now) 傳回值:Saturday


【備註】
以上內容皆假設該時間為
2002年11月2日上午10時23分30秒星期六
[...]內的參數可有可無。
時間代碼(運算式):
yyyy 年、q 季、n 月、d 日、w 星期、h 時、m 分、s 秒

UltraDev 與各種資料庫的連線字串

UltraDev 提供了多種方式,讓 ASP 的使用者與資料庫建立連線:

•自己的電腦 -- 可以使用 DSN、自訂連線字串
•應用程式伺服器上 -- 可以使用 DSN、自訂連線字串或 Server.Mappath


下面列出了幾種常見的資料庫,在 ASP 網站應用程式中使用 ADO 連線字串的範例。請特別注意,在自訂連線字串的對話框中,每個連線字串只能為同一行,不可以換行!但因網頁顯示的關係可能會換行,你必須自行將它連接起來。

ODBC DSNLess connection(不需要DSN的連線)
--- MS Access ODBC 開檔方式 --------------------------------------------------
Driver={Microsoft Access Driver (*.mdb)};Dbq=c:\somepath\dbname.mdb;Uid=Admin;Pwd=pass;

--- dBase ODBC 開檔方式 --------------------------------------------------
Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\somepath\dbname.dbf;

--- Oracle ODBC 開檔方式 -------------------------------------------------
Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=admin;Pwd=pass;

--- MS SQL Server 開檔方式 -----------------------------------------------
Driver={SQL Server};Server=servername;Database=dbname;Uid=sa;Pwd=pass;

--- MS Text Driver 開檔方式 ----------------------------------------------
Driver={Microsoft Text Driver (*.txt;*.csv)};Dbq=c:\somepath\;Extensions=asc,csv,tab,txt;Persist Security Info=False;

--- Visual Foxpro 開檔方式 -----------------------------------------------
Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=c:\somepath\dbname.dbc;Exclusive=No;

--- MySQL 開檔方式 -------------------------------------------------------
driver={mysql}; database=yourdatabase;uid=username;pwd=password;option=16386;


OLE DB 連線MS Access OLE DB 開檔方式(DSN的連線)
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\somepath\dbname.mdb;User Id=admin;Password=pass;

--- Oracle OLE DB 開檔方式 -----------------------------------------------
Provider=OraOLEDB.Oracle;Data Source=dbname;User Id=admin;Password=pass;

--- MS SQL Server OLE DB 開檔方式 ----------------------------------------
Provider=SQLOLEDB;Data Source=machineName;Initial Catalog=dbname;User ID=sa;Password=pass;

--- MS Text Driver OLE DB 開檔方式 ---------------------------------------
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\yourpath;Extended Properties='text;FMT=Delimited'"


<%=Server.MapPath("")%>
※你便可以利用這個資訊,在 ADO 連線字串中建立出資料庫的路徑。事先就找出檔案路徑要比使用 Server.MapPath 這樣的物件方法好的多。

在 UltraDev 4 中使用 Server.Mappath
在 UltraDev 4 中,自訂連線字串的方式允許你使用 Server.Mappath,不過先決條件是:
•定義連線的對話框中必須指定為「應用程式伺服器」,「這台機器」是不支援這種方式的。
•必須在連線字串中指出根目錄的路徑。
•請確定連線字串的第一個部份前後有使用雙引號括住。

典型的 Access 資料庫 DSNLess 連線字串,使用 Server.Mappath 在 VBScript 寫起來是這樣的。請注意在自訂連線字串的對話框中,只能為同一行文字。

"Driver={Microsoft Access Driver (*.mdb)};Dbq=" & Server.Mappath("\somepath\dbname.mdb") & ";Uid=Admin;Pwd=pass;"

而典型的 Access 資料庫 OLEDB 連線字串則是:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("\somepath\dbname.mdb") & ";User Id=admin;Password=pass;"

如果你使用 ASP JavaScript,則必須將 & 符號改為 + 號,像是這樣:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.Mappath("\somepath\dbname.mdb") + ";User Id=admin;Password=pass;"

如果你使用 UltraDev 1,千萬不要在自訂連線字串中使用 Server.MapPath 這種方式,不然的話會讓 UltraDev 無法使用 。也就是說,你可以加入這樣的原始碼,但是資料繫結面板內不會顯示出任何資料。

2007年12月12日 星期三

2000與2003Mail發送方式

Windows 2000 發信方式
Set mail = Server.CreateObject("CDONTS.NewMail")
mail.to ="scott@universe.com.tw"
mail.From = "verigy@universe.com.tw"
mail.Subject = "" & Trim(Request("EventID"))
Body = ""
Body = Body & ""
mail.Body = Body
mail.BodyFormat=0
mail.MailFormat=0
mail.Send


Windows 2003 發信方式
Set mail = CreateObject("CDO.Message")
mail.to ="scott@universe.com.tw"
mail.From = "verigy@universe.com.tw"
mail.Subject = "" & Trim(Request("EventID"))
Body = ""
Body = Body & ""
mail.HTMLBody = Body
mail.Send