2009年11月18日星期三

ASP 在 IE瀏覽器中,Session遺失問題的處理

參考網址:http://support.microsoft.com/kb/323752


情況:
在IE瀏覽器內無法正常取得Session值,但在Firefox內卻可以正常的取出該Session值。

處理參考一 ( 在ASP程式內標頭加入下面語法 )
response.expires = 0
response.expiresabsolute = Now() - 1
response.addHeader "pragma","no-cache"
response.addHeader "cache-control","private"
response.addHeader "P3P","CP='CAO PSA OUR'"
response.CacheControl = "no-cache"

處理參考二 ( 在IIS內設定 [HTTP表頭] )
1. 按一下 [ 開始 ]、 按一下 [ 執行 ],然後再輸入 inetmgr ]。
2. 在 [左邊的瀏覽] 頁面按一下 [適當的檔案或目錄,在您想要新增標頭,以滑鼠右鍵按一下的檔案,然後按一下 [ 內容 您網站上]。
3. 按一下 [ HTTP 表頭 ] 索引標籤。
4. 在 [ 自訂 HTTP 表頭 ] 群組方塊中,按一下 [ 新增 ]。
5. 輸入 自訂標頭名稱(C):, P3P ,然後輸入 自訂標頭值(U):, CP="CAO PSA OUR"。

下列為參考網址內截出的內容:(為避免網址遺失的問題)
徵狀
如果您實作一個 FRAMESET 其圖文框指向您的夥伴或內部網路上網路上的其他網站,但您使用不同的最上層網域名稱您可能會發現在 Internet Explore...
loadTOCNode(1, 'symptoms');

如果您實作一個 FRAMESET 其圖文框指向您的夥伴或內部網路上網路上的其他網站,但您使用不同的最上層網域名稱您可能會發現在 Internet Explorer 6 中您嘗試在這些圖文框中設定任何 Cookie 會遺失。 這是最常遇到為遺失的動態伺服器網頁 (ASP) 」 或 「 ASP.NET Web 應用程式中的工作階段狀態。 您嘗試存取 工作階段 物件,您希望存在,而傳回空白的字串中的變數。您也看到這個問題在圖文框的內容中如果您的網頁使用的網域名稱系統 (DNS) 名稱之間使用的網際網路通訊協定 (IP) 位址的替代。
發生的原因
Internet Explorer 6 引入隱私喜好設定 (P3P) 專案的平台的支援。 P3P 標準筆記如果一個 FRAMESET 或父視窗的參照另一個網站內...
loadTOCNode(1, 'cause');

Internet Explorer 6 引入隱私喜好設定 (P3P) 專案的平台的支援。 P3P 標準筆記如果一個 FRAMESET 或父視窗的參照另一個網站內一個框架或子視窗,子網站會被視為第三方內容。 網際網路檔案總管會使用預設的隱私權設定 中 的無訊息式地拒絕寄件者的協力廠商網站的 Cookie。
回此頁最上方
解決方案
您可以在 P3P 壓縮原則標頭加入您的子內容,而您可以宣告沒有惡意的動作會執行與使用者的資料。 如果 Internet Explorer 偵測到令人滿意的原則,...
loadTOCNode(1, 'resolution');

您可以在 P3P 壓縮原則標頭加入您的子內容,而您可以宣告沒有惡意的動作會執行與使用者的資料。 如果 Internet Explorer 偵測到令人滿意的原則,Internet Explorer 會允許設定 Cookie。請造訪下列 MSDN 網站令人滿意,並不令人滿意的原則程式碼的完整清單: 在 Internet Explorer 6 中的隱私權http://msdn.microsoft.com/workshop/security/privacy/overview/privacyie6.asp (http://msdn.microsoft.com/workshop/security/privacy/overview/privacyie6.asp) 簡單的壓縮原則符合此條件,如下:P3P: CP="CAO PSA OUR"
這個程式碼範例會示範您的網站提供您自己的連絡人資訊 (CAO),任何分析的資料是唯一"pseudo-analyzed 」,表示資料給您的線上人物代表,而非您實體的身分 (PSA),連接的並且您的資料未提供任何外部機構,這些機構使用 (OUR) 的存取。您可以設定此標頭,如果您在 ASP 網頁中使用 Response.AddHeader 方法。 在 ASP.NET 中,您可以使用 Response.AppendHeader 方法。 您可以使用 [IIS 管理嵌入式管理單元 (inetmgr),若要新增至靜態的檔案。 請遵循這些步驟來此標頭加入靜態檔案:
6. 按一下 [ 開始 ]、 按一下 [ 執行 ],然後再輸入 inetmgr ]。
7. 在 [左邊的瀏覽] 頁面按一下 [適當的檔案或目錄,在您想要新增標頭,以滑鼠右鍵按一下的檔案,然後按一下 [ 內容 您網站上]。
8. 按一下 [ HTTP 表頭 ] 索引標籤。
9. 在 [ 自訂 HTTP 表頭 ] 群組方塊中,按一下 [ 新增 ]。
10. 輸入標頭名稱, P3P ,然後壓縮原則的字串輸入 CP =...,其中"...是您的壓縮原則的適當程式碼。
或者,Internet Explorer 使用者可以修改其隱私權設定,這樣會提示他們接受協力廠商的內容。 下列步驟顯示如何修改隱私權設定:
1. 執行的 Internet Explorer。
2. 按一下 [ 工具 ],然後按一下 [ 網際網路選項 。
3. 按一下 [ 隱私 ] 索引標籤,然後按一下 [ 進階 ]。
4. 按一下以選取 [ 覆寫自動 Cookie 處理 ] 核取方塊。
5. 若要以便 ASP 和 ASP.NET 工作階段 Cookie 設定按一下以選取 [ 永遠允許工作階段 Cookie ] 核取方塊。
6. 若要接收任何類型的第三方 Cookie 提示,] 按一下 [ 提示 第三方 Cookie ] 清單中。

2009年10月15日星期四

SQL處理中英文字串長度的範例

SQL處理中英文字串長度的範例

-- 計算中英文字串長度
DECLARE @string varchar(50)
set @string='一二三456七八9十'
select @string '字串', len(@string) '中英字數', datalength(@string) '資料長度', datalength(@string)-len(@string) '中文字數'

-- 截取中英文字串長度
DECLARE @string varchar(50), @l int
set @string='一二三456七八9十'
set @l=8
select substring(@string,1,@l) '取字數', case when datalength(@string)>8 then convert(varchar(8),@string)+'...' else convert(varchar(8),@string) end '取資料數'
select substring(@string,1,@l)
-- 無法使用下列寫法,主要在「convert(varchar(@l),@string)」內的『varchar(@l)』括號內只可使用數值,無法使用變數 >"<。
select substring(@string,1,@l), case when datalength(@string) > @l then convert(varchar(@l),@string)+'...' else convert(varchar(@l),@string) end

2009年10月14日星期三

EXCEL的資料轉置(橫轉直)

EXCEL的資料轉置(橫轉直, 直轉橫)



常會有要整理資料表,要將原本橫向的資料欄位改為直向的資料顯示又常會忘記,所以,特寫這篇圖文註記一下 ^^!!!

1.範例資料如下: 要將 A1..E4的資料轉成直式顯示。

2.選取A1..E4的資料。按右鍵 ->「複製(C)」將資料複製。

3.點擊A6位置。按右鍵 -> 「選擇性貼上(S)...」。
4.開啟『選擇性貼上』框後,勾選「轉置(E)」後,按下「確定」鈕。

5.如下圖A6..D10的顯示,即完成了資料的轉向了^^。

2009年10月9日星期五

暫存表判斷 / 產生日期暫存表

參考網址:http://www.blueshop.com.tw/board/show.asp?subcde=BRD20050616212814W4M&fumcde=FUM20041006152735ZFS


-- #暫存表判斷並刪除
IF OBJECT_ID('tempdb..#tmpDate') IS NOT NULL
DROP TABLE #tmpDate
go

DECLARE @sd datetime --開始日期
DECLARE @ed datetime --結束日期
DECLARE @d1 datetime --處理日期
DECLARE @d2 varchar --處理民國日期

set @sd='2008-09-11'
set @ed='2009-01-14'
set @d1=@sd

-- 先轉一筆資料入 #tmpDate 暫存表 drop table #tmpDate
select D_date '西元日期', weeknum '星期別', convert(varchar(4),DATEPART ("year", @d1)-1911)+right(replace(D_date,'-','/'),6) '民國日期' into #tmpDate
from(select convert(varchar(10),@d1,121) D_date, DATEPART ( "weekday" , @d1 )-1 weeknum ) a
select @d1=DATEADD("day" , 1, @d1 ) --加一天

WHILE (@d1 <= @ed) BEGIN insert into #tmpDate select *, convert(varchar(4),DATEPART ("year", @d1)-1911)+right(replace(D_date,'-','/'),6) C_date from(select convert(varchar(10),@d1,121) D_date, DATEPART ( "weekday" , @d1 )-1 weeknum ) a select @d1=DATEADD("day" , 1, @d1 ) END -- 顯示暫存表
select * from #tmpDate
order by [西元日期]

2009年7月14日星期二

SQL定序衝突問題處理

SQL語法查詢,發生「定序衝突問題」時,訊息如下:

「無法解析 equal to 作業中 "Chinese_Taiwan_Stroke_CI_AS" 與 "Chinese_Taiwan_Stroke_CI_AS_WS" 之間的定序衝突。」

這時必須將相關的資料定序調整,使用的方式如下:

原條件為
a=b

修改後為
cast(a as varchar)COLLATE Chinese_Taiwan_Stroke_CI_AS =cast(b as varchar)COLLATE Chinese_Taiwan_Stroke_CI_AS

將定序調整一致後,就不會有問題了。

2009年7月2日星期四

SQL小數四捨五入範例

-- 四捨五入範例
-- 使用「numeric 型態」做小數四捨五入進位處理
--------------------------------------------------------------------------------------------

declare @a1 float, @b1 float, @c1 float, @d1 float, @e1 float
declare @a2 float, @b2 float, @c2 float, @d2 float, @e2 float
/*設定變數初值*/
select @a1 = 0.334, @a2 = 0.335
select @b1 = 0.444, @b2 = 0.445
select @c1 = 0.554, @c2 = 0.455
select @d1 = 0.664, @d2 = 0.465
select @e1 = 0.774, @e2 = 0.475

select @a1 a, @b1 b, @c1 c, @d1 d, @e1 e
select @a2, @b2, @c2, @d2, @e2
print '使用 numeric 型態做小數四捨五入進位處理'
select convert(numeric(5,2),@a1), convert(numeric(5,2),@b1), convert(numeric(5,2),@c1), convert(numeric(5,2),@d1), convert(numeric(5,2),@e1)
select convert(numeric(5,2),@a2), convert(numeric(5,2),@b2), convert(numeric(5,2),@c2), convert(numeric(5,2),@d2), convert(numeric(5,2),@e2)

--------------------------------------------------------------------------------------------
-- 整數相除的小數處理範例
--------------------------------------------------------------------------------------------

declare @a int
declare @b int
declare @c int, @d int, @e int
/*設定變數初值*/
select @a = 1000
select @b = 3
select @c = 43
select @d = 6
select @e = 7

select @a/@b t1, @a/@c t2, @a/@b*1.0 t3, 1.0*@a/@b b, 1.0*@a/@c c, 1.0*@a/@d d, 1.0*@a/@e e
, convert(numeric(5,2),(1.0*@a/@b)) b1
, convert(numeric(5,2),(1.0*@a/@c)) c1
, convert(numeric(5,2),(1.0*@a/@d)) d1
, convert(numeric(5,2),(1.0*@a/@e)) e1

2009年3月19日星期四

輸入法由注音改為倉頡先出來

輸入法由注音改為倉頡先出來

緣起:
我是一個倉頡打字的人,或許你也跟我一樣偶而會有拆不出字碼,只好改注音輸入,然後,眼,盯著鍵盤、口中不斷的發著要拆的字音,最後,好不容易打出要拆的注音符號。這是時而發生的事,所以,我們也會增加一個「注音」輸入法,但,問題來了,「注音」每次都在我「英數」和「倉頡」輸入法中間擋住,就一定還要再切換一下才會跳到我可愛的「倉頡」輸入法上來。天呀!!死微軟幾時才能讓Windows可以聰明一點,我要「倉頡」先出來啦!! >"<

遍巡google都找不到可以解決我問題的方法,最後,也不可考了,下列是我目剈前找到可以改善我問題的解決方法。直接改 regedit 系統設定,總算ok了。在這分享給跟我有一樣困擾的人。 ^^



Windows98 登錄編輯器

機碼名稱:
HKEY_LOCAL_MACHINE\
System\
CurrentControlSet\
Control\
Keyboard Layouts\
E0010404
==>E0010404
名稱 資料
-------------------------------------
IME file PHON.IME
layout file kbdus.kbd
layout text 注音

==>E0020404
名稱 資料
-------------------------------------
IME file CHAJEI.IME
layout file kbdus.kbd
layout text 倉頡


將上列的 E0010404 和 E0020404 內的資料互換;
重開機後 倉頡輸入法 將在 注音輸入法 之前

==============================================
WinXP SP3 20090127
==============================================
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Keyboard Layouts\
==>E0010404
名稱 資料
-------------------------------------
IME file phon.ime
Layout Display Name @%SystemRoot%\system32\input.dll,-5066
layout file KBDUS.DLL
layout text 中文 (繁體) - 注音

==>E0020404
名稱 資料
-------------------------------------
IME file chajei.ime
Layout Display Name @%SystemRoot%\system32\input.dll,-5067
layout file KBDUS.DLL
layout text 中文 (繁體) - 倉頡

將上列的 E0010404 和 E0020404 內的資料互換;
重開機後 倉頡輸入法 將在 注音輸入法 之前