2008/07/21

[SQL Server]WITH的遞迴應用-Split欄位

在網路上常看到一個問題,就是在一個欄位中存了類似 001, 002, 003 這樣的值.
一般存了這樣的值, 是想要轉成如下的資料表去跟其他的資料表做 JOIN 或是透過 WHERE 去濾資料.
FID MyField
1 001
1 002
1 003

2008/07/17

[Java]Netbeans6.1的Java檔中文出現亂碼

原本以為 Netbeans6.1 跟以前的版本一樣, 要到 Tools –> Options 找 Encoding 的設定, 然後改成 Big5 / UTF-8.
沒想到這一版只要在專案上按滑鼠右鍵 –> Properties –> Source –> 畫面下方就有一個 Encoding 可以選.
如果原本檔案是用 Big5 儲存( Notepad 看到的編碼是 ANSI), 就選 Big5 的 Encoding.
如果是 UTF-8 的編碼, 預設應該就是 UTF-8 , 不用另外改 (簡體中文版例外).
注意: 已經用 Netbeans 開啟的檔案, 要關掉再開一次才會正常顯示

2008/07/15

[Asp.Net]GridView的OnSorting參數永遠回傳SortDirection.Ascending

GridView 的 OnSorting 事件, 在 GridViewSortEventArgs 參數裡的 SortDirection 並不會因為使用者的點選而傳入 SortDirection.Ascending / SortDirection.Descending.
只能透過 ViewState / Session 等儲存機制來記憶上一次的排序方向.
例如在 OnSorting 的事件中使用 Session做狀態儲存:
if (Session["SortDirection"] == null) {
    //因預設是ASC,所以觸發此事件時, 應設定為DESC 
    Session["SortDirection"] = SortDirection.Descending;
}
else
{
    //ASC<-->DESC(對調) 
    Session["SortDirection"] = (((SortDirection)Session["SortDirection"]) ==
    SortDirection.Ascending) ? SortDirection.Descending : SortDirection.Ascending;
}
Session["SortExpression"] = e.SortExpression;

2008/07/14

[SQL Server 2005]遞迴查詢

在資料表中常見到一種 ID, Parent 的用法, 目的在於想使用遞迴的方式建立起樹狀的資料結構.
例如在程式中進行以下的作業:
while(true)
{
//SELECT ID, Parent, Name FROM Table1 WHERE Parent=@ID
}
透過迴圈, 一次次地到資料庫查詢這個 Node 相關的 Parent/Child 資料.