2008年7月24日 星期四

Cache的影響

前言:當你從page1點選出page2時,在page2編輯完後,回到page1時,這時page1有得到編輯後的資料,可是再點選出page2,會發現顯示的資料是編輯前的,而非編輯後的!

如果確定資料已有寫入,而是在重新執行page後就沒這個問題的話,那可能要考慮是不是cache原因

解決方法
1、如是masterpage
在head下加入一行:
< equiv="Pragma" content="no-cache">

2、如是純page,在開啟URL加上亂數加以預防Cache
例如: showModalDialog("a.aspx?rnd=" + Math.random(),window);

繼上一篇 SQL多欄位合併,網頁連結的作法

若希望每一項有各自的網頁連結,只需要串就行了

--將需要的資料儲存在#tmp_file
insert into #tmp_file(tmp_1, tmp_value, list)
SELECT ('< href="''xxxxxx''">'+field+'< / a >') field
FROM table
ORDER BY


使用此方法,在程式端的GridView,那個欄位要設定:HtmlEncode="false"
不然會被當成文字顯示,而非是url的效果!請注意



感謝Lillian的提供

2008年7月22日 星期二

SQL 多欄位合併成一個欄位的作法

declare @list nvarchar(max)
,@last bigint
set @list = ''
set @last = -1

-- 暫存所有查詢結果
create table #tmp_filelist(tmp_1 bigint, tmp_list nvarchar(max))

-- 暫存所有中間執行過程
create table #tmp_file(tmp_1 bigint,tmp_value nvarchar(60), list nvarchar(max))

--將需要的資料儲存在#tmp_file
insert into #tmp_file(tmp_1, tmp_value, list)
SELECT 資料來源
ORDER BY

--處理暫存表的list資料,利用@last來判斷是否要合併(重點:與前一筆資料作比對)
update #tmp_file set @list = list = (CASE WHEN @last <> tmp_1 THEN tmp_value ELSE @list + ',' + tmp_value END), @last =tmp_1

-- 將結果儲存在#tmp_filelist
insert into #tmp_filelist(tmp_1,tmp_list)
select tmp_1, max(list) from #tmp_file group by tmp_1

drop table #tmp_filelist
drop table #tmp_file


感謝Lillian的指導

2008年7月20日 星期日

2008年7月10日 星期四

SQL 語句格式化數字(前面補0)方式

將一個數字例如33,或1使用t-sql語句轉換成033或001
以下是詳細分析:
1、select power(10,3)得到1000
2、select cast(1000+33 as varchar) 將1000轉換類型
3、select right(100033,3) 從右邊取3個字符得到033
將1格式化同上
select right(cast(power(10,3) as varchar)+33,3)

資料來源:http://www.knowsky.com/399493.html