2010年1月20日 星期三

[Asp].匯入欄位長度>255 的 excel 檔.

目的:
解決1: 有混合資料(文字&數字) 欄位時, asp 讀取該列時, 會讀出 NULL.
解決2: 匯入欄位長度可以 >255 個位元.

解決辦法:
1.修改 connection 的 connection string,
'// 舊的連線字串
'myExcelConnectionString = "DBQ=" & strExcelFileName & ";DRIVER={Microsoft Excel Driver (*.xls)};"
'// 新的連線字串
myExcelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strExcelFileName & ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"
請參考附件的 import_act.asp

2. 修改 web server 上的 register.

1. 在 IIS server 的主機上, 點 "開始" -> "執行", 指令輸入框裡輸入 Regedit , 並按下 Enter.

2. 開啟下面這個項目,
Hkey_Local_Machine/Software/Microsoft/Jet/4.0/Engines/Excel/ImportMixedTypes
修改內容為 Text
3. 開啟下面這個項目,
Hkey_Local_Machine/Software/Microsoft/Jet/4.0/Engines/Excel/TypeGuessRows
修改內容為 0

或直接執行附件 ExcelLargeDataSetting.reg

參考資料:


附註: 要被Asp 處理的 excel 的 sheet 要修改 sheet 名稱為 import.

2010年1月19日 星期二

[Bat].重新啟動 IIS 和 Database 用的批次檔

程式目的: 重新啟動 IIS 和 Database, 用來釋放被占用的系統記憶體.

建議用的檔名: restartIISandDB.bat

@echo off
net stop iisadmin /y
net start w3svc
net stop mssqlserver /y
net start mssqlserver
net start sqlserveragent
exit
附註: 可以設排程, 定時來啟動該批次檔.

2010年1月15日 星期五

程式目的:
showHideLayers 調整, 由原本的 visibility 改成 display.


使用方法:
直接取代舊的副程式即可.


source code 如下:
javascript 下載

function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}


function MM_showHideLayers() { //v6.0
var i,p,v,obj,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
if (obj.style) { obj=obj.style; v=(v=='show')?'block':(v=='hide')?'none':v; }
if (v!='bool') {
obj.display=v;
}
else if (obj.display=='block') {
obj.display='none';
}
else if (obj.display=='none' || obj.display=='') {
obj.display='block';
}
}

2010年1月14日 星期四

[Asp].陣列加強版 2010.01.14

程式目的:
加強陣列的功能.

使用範例:
<!--#include Virtual = "/inc/max.Array.Object.asp" -->
<%
dim a2
Set a2 = New maxArrayObject


'// 把字串轉成陣列
a2.fromString("3,1")
'// or 用下面這行指令:
' a2.item = array("3","1")

'// sort asc
' a2.sort()
' response.write a2.toString()



'// sort desc
' a2.fromString("1,3")
' a2.sortDesc()
' response.write a2.toString()

'// check item exist (附註: 數字3 及 字串 "3" 是不相等的)
' response.write "<br/>isExist:" & a2.isExist("3")
' response.write "<br/>isExist:" & a2.isExist(3)
' response.write "<br/>isExist:" & a2.isExist("9")

'// find item. (附註: find 會傳回一個 index)
' response.write "<br/>find 1:" & a2.find("1")
' response.write "<br/>find 3:" & a2.find("3")

'// compre two array, is array equal.
' dim a4
' a4 = a2.getArray()
' response.write "<br/>is array equal:" & a2.equal(a4)



'// append new item.
a2.append("5")
' response.write a2.toString()

'// insert "2" before "3"
' a2.insert "2", 1
'// or
a2.insert "2", a2.find("3")

'// append array, a6 陣列加到 a2 陣列後面.
' dim a6
' a6 = a2.getArray
' a2.appendArray(a6)

'// count item. 查詢某個值在陣列裡出現的次數.
' response.write "<br/>count item 1: " & a2.countItem("1")

'// delete item,
'// 先查詢 "1" 出現在 a2陣列裡, 再使用 a2.deleteIndex 刪除該值.
a2.delete("1")

'// delete from array, 用來一次刪除一堆的值.
dim deleteResult
dim deleteArraySet
set deleteResult = new maxArrayObject
deleteArraySet = array("4","5","6")
deleteResult.setArray(a2.deleteFromArray(deleteArraySet))
response.write "<br/>deleteResult to string: " & deleteResult.toString()
'// 附註: { 2 ,3 ,5 } - { 4 ,5 ,6 } = { 2 ,3 }

'// 計算加總.

' response.write "<br/>sum: " & a2.sum



'// 計算平均.
' response.write "<br/>average: " & a2.average


'// 存取陣列某一筆.
response.write "<br/>item 1: " & a2.item(0)

'// 輸出陣列內容.
response.write "<br/>to string: " & a2.toString()
%>







附件列表: ArrayObject.zip

max.Array.Function.asp , 副程式.
max.Array.Object.asp , 物件化的程式.




附註:
如果您有在使用這個物件, 並有加強他的功能的話, 請再把您修改過的寄給我用, 謝謝.

2010年1月7日 星期四

[Asp].存取不同網站的 session 資料.


程式目的:
存取不同網站的 session 資料.


使用方法:
用 web serivce 去要資料.


附註:
可以把所有 "非" object 資料的 session 以文字方式傳回來, 網站間可以只傳1個變數(比較有效率), 也可以全部變數都傳回來.


  • \SiteA\caller.asp client 端的主程式, 這個範例是去要 server 端的 mem_userid 這個變數回來.
  • \SiteA\inc\WinHttp.asp client 端的副程式
  • \SiteB\xdGetSessionSet.asp server 端的主程式

Facebook 留言板