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  

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位元相容方式運行。