2012年5月13日 星期日

關閉視窗 Javascript

Explorer 6
window.opener=self;
window.close();
Explorer 7
window.open(”",”_self”);
window.close();

方式一

<SCRIPT LANGUAGE="JavaScript">
<!--
function closeWin(){
   window.open("","_self");
   top.opener=null;
   top.close();
}
//-->
</SCRIPT>
<body onLoad="closeWin();">

2012年4月17日 星期二

x64-bit環境執行32-bit COM DLL

x64-bit環境執行32-bit COM DLL
如果發生下列錯誤,為具有 CLSID {166EB857-8CCD-4D83-8F27-CADDB2800374} 的元件擷取 COM Class Factory 失敗: 80004027。

乃是由於在x64-bit環境上執行32-bit DLL所致.

x64-bit環境如何執行32-bit COM DLL?

1.如果已經註冊32-bit 到 x64 作業系統, 先解除安裝例如: "regsvr32 /u C:\MyDLL\CRAXDRT.DLL"
2.確定dll不在Windows目錄像C:\Windows. 本例CRAXDRT.DLL 放在C:\MyDLL目錄中.
3.執行控制台->系統及安全->系統管理工具->元件服務
->電腦->我的電腦->COM+應用程式->右鍵->新增->應用程式.
4.歡迎使用COM+應用程式安裝精靈->下一步.
5.選擇"建立空的應用程式".
6.本例名稱用CRAXDRT, 選伺服器應用程式->下一步.
7.選"互動式使用者-目前登入的使用者"->下一步, 下一步->完成.
8.現在在COM+應用程式下多了一個CRAXDRT, 點選CRAXDRT左方三角型會看到下拉元件, 傳統元件, 角色三個目錄, 點選元件右鍵新增->元件.
9.歡迎使用COM+元件安裝精靈->下一步.
10.選安裝新元件->選擇:C:\MyDLL\CRAXDRT.DLL.->下一步->完成.
11.點選CRAXDRT右鍵->內容->安全性, 不勾選->強制此應用程式的存取檢查, 不勾選->套用軟體限制原則, 模擬等級選匿名->確定.
12.如須由WEB 應用程式存取DLL(如本例)則必須加設定ASPNET及IIS_WPG角色.
13.點選CRAXDRT->角色->CreateOwner->使用者->右鍵->新增->使用者.
14.分別加入ASPNET及IIS_WPG二個使用者到CreateOwner.
15.大功告成.

2012年1月18日 星期三

Win R2 是64位元系統開Access方式

由於Win R2 是64位元系統。在用IIS測試ASP網站時,連接資料庫代碼總是不成功。


"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.mappath(db) 用這種方式時返回“3706”錯誤值。


"Driver=Microsoft Access Driver (*.mdb);DBQ="&Server.MapPath(db) 用這種方式時返回“-2147467259”錯誤值。


因為Win2008 R2 是64位操作系統。而64位元作業系統不支援Microsoft OLE DB Provider for Jet驅動程式,也不支援更早的Microsoft Access Driver (*.mdb)方式連接。所以用於 Access 和 Excel 資料庫的 Microsoft OLE DB Provider for Jet 在 64 位版本中不可用,也就是說,如下兩種連接字串都已經無法正常工作了:


"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.mappath(db)。

"driver=Microsoft Access Driver (*.mdb);DBQ="&Server.MapPath(db)。

要解決這問題,只有讓IIS環境設置成32位。IIS的版本不一樣處理起來也會不一樣。下面就分別對IIS7和IIS6處理作說明。

一.IIS7處理起來很簡單,具體步驟如下:

在IIS7下選擇“應用程式池”,右擊對應網站的應用程式池,“啟用32位元應用程式”設置為“True”即可。

二.IIS6處理,具體步驟如下:


1.在命令列輸入:

cscript.exe %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1

2.重新註冊.NET FrameWorks.
%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i

3. 完成之後,應該會看到多出一個32位的asp.net,將其設置為允許,缺點:這樣會使整個IIS上的所有網站都以32位元相容方式運行。

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目錄下

2011年12月4日 星期日

Windows 2003 server 32bit 與 64bit對SQL開檔方式

Windows 2003 server 32bit 與 64bit對SQL開檔方式:


db_name = 資料庫名稱

2003 Server 32bit方式:
db_conn.Open "driver={SQL Server};server=電腦名稱或IP;uid=SQL登入帳號;pwd=SQL登入秘密碼;database=" & db_name

2003 Server 64bit 方式:
db_conn.Open "PROVIDER=SQLOLEDB;DATA SOURCE=電腦名稱或IP;UID=SQL登入帳號;PWD=SQL登入秘密碼;DATABASE=" & db_name


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 秒