2008年12月1日 星期一

SQL PATINDEX指令

最近都在組sql,table裡有十二個欄位分別記錄十二個月的狀態,
但是我只要判斷他記錄最後一個月(有個能是二月、也有可能是十一月)狀態來比對,
所以我就把十二個欄位相加起來,null值就給他'A',另給他一欄叫SalesStatus,
SalesStatus的值有可能會這幾種情況AA21122A1AAA 或 322221122222 或 AAAAAAAAAAAA。
因為只要最後一個狀態,所以要從右邊數過來第一個不為A的值,
想了好久,在GOOGLE上面找到PATINDEX這個指令,他可以用萬用字元,YA~
SELECT PATINDEX('%[^A]%',REVERSE(rtrim('AA21122A1AAA'))) ->4
SELECT PATINDEX('%[^A]%',REVERSE(rtrim('322221122222'))) ->1
SELECT PATINDEX('%[^A]%',REVERSE(rtrim('AAAAAAAAAAAA'))) ->0

ps:
1:REVERSE<--這個指令之前介紹過會把字串反過來
AA21122A1AAA ->AAA1A22112AA
322221122222 ->222221122223
A122222AA222 ->222AA222221A
2:[^]萬用字元 - 不相符的字元

2008年11月20日 星期四

[ASP.NET]DropDownList 下拉選項預設項目

以前我們用DropDownList加上databind()時~
事先在DropDownList設的下拉選項會被清掉重新載入資料~
當我們要在第一筆加上一個選項~
就會這樣寫
DropDownList1.Items.Insert(0, new ListItem("全部", "-1"));
現在有個新方法,直接可以這樣設就是在
"DropDownList 請將 AppendDataBoundItems 設定為 true"
這樣就不會被清掉囉

SQL 從右邊取得字元

前一陣子在作轉檔的東西~
其中的一項是要從右邊數過來取第一個空白來判斷~
後來在google大神上找到了這個~
declare @s nvarchar(10)
declare @dd nvarchar(50)
declare @sp_name nvarchar(50)
set @sp_name='wang.ji.kun.wav'
set @dd=REVERSE(@sp_name)
--會變成vaw.nuk.ij.gnaw
set @s=substring( @dd,0,charindex('.',@dd,0))
select reverse(@s)

就是這個"REVERSE()"sql指令可以使你的字串反過來~
還不錯用~

2008年8月5日 星期二

介面

我覺得下面這個BLOG說的很不錯~
看了大概都懂了~
.Net Go2 OO 物件導向設計學習路徑 裡有在介紹學物件導向的路徑~
我是從這編開始看起
話說從頭 - 為什麼要使用物件導向設計 (OOD)

為什麼要針對介面寫程式?

你搞懂抽象類別別與介面了嗎?(一)

你搞懂抽象類別別與介面了嗎?(二)

我想看完以上幾遍,就會了解介面是什麼了~~

2008年7月14日 星期一

ajax在.NET裡的alert

以前在沒有用ajax時~
要alert會這樣寫~
ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('存檔完成')", true);
但是如果你有用AJAX 的 updatepanel時,這樣寫會alert不出來。
故要改成:
ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "alert", "alert('存檔完成')", true);
就ok了

2008年2月19日 星期二

按下enter鍵時,觸發查詢的onclick

txtReportNo.Attributes.Add("onkeydown","if(event.keyCode==13)
{" + this.GetPostBackEventReference(btnSearch,"") + "}");

當輸入完TextBox時,直接按下enter,要去觸發查詢onclick事件。
可以用上面的方法寫。寫在page_load裡。

2008年2月14日 星期四

DataGrid補空字串上去



在ItemDataBound事件裡,如果db為空白的話,會沒有內框,要補空白給它

2008年1月22日 星期二

傳資料的時後不要有單引號

ex:aaa.aspx?Q='YY'<----這樣可以傳沒錯~
但是,工研院or資訊安全等級高的,就會有問題~
所以要改成
aaa.aspx?Q=YY

2008年1月15日 星期二

SQL 的identity

欲在select出來資料前面加序號~
可以用identity~
但是要注意一點就是,select出來要into #table裡~
ex:
select 自取欄位名稱=identity(int,1,1),* into #tmptable from 資料表
select * from #tmptable
drop table #tmptable

另一個要注意的地方是identity(int,1,1)裡的int要小寫,大寫會有問題。