2011年4月29日 星期五

VS2010 怎麼找不到 Script Documents?

VS2010 有提供 JavaScript 的 Debug 功能,這我知道。但,為何我的 VS2010 就是沒看到呢?


原來,是我電腦預設的瀏覽器,已經變成 Chrome 了。
試著將 IE 改成我的預設瀏覽器後,這問題終於解決。



首先打開 IE,並在[工具]-[網際網路選項]-[程式集],將預設網頁瀏覽器的按鈕(設成預設值)壓下,就可以將 IE 變成預設瀏覽器了。

2011年4月27日 星期三

.Net 提供的 Path 類別

在檔案上傳時,隨時會需要組檔案路徑、檔案名稱的需求,而  .Net 提供了 Path 類別,可以讓我們輕鬆地完成。以下整理了網路蒐集而來的用法,可以很快地瞭解到如何使用 Path。

需引用的命名空間:
System.IO;

string strPath = @"D:\myUpload\file01.txt";
//取得完整路徑
Path.GetFullPath(strPath); → D:\myUpload\file01.txt

//取得根目錄
Path.GetPathRoot(strPath); → D:\

//取得目錄名稱
Path.GetDirectoryName(strPath); → D:\myUpload

//取得檔名
Path.GetFileName(strPath); → file01.txt

//取得檔名(不含副檔名)
Path.GetFileNameWithoutExtension(strPath); → file01

//取得副檔名
Path.GetExtension(strPath); → .txt

//變更副檔名
Path.ChangeExtension(strPath, "jpg"); → D:\myUpload\file01.jpg

//結合路徑(前面路徑後面有無倒斜線都沒差)
Path.Combine("D:\myUpload", "test.jpg"); → D:\myUpload\test.jpg
Path.Combine("D:\myUpload\", "test.jpg"); → D:\myUpload\test.jpg

//建立並取得唯一的暫存檔完整路徑
Path.GetTempFileName(); → C:\Users\paladin_adm\AppData\Local\Temp\tmp3723.tmp

//取得目前系統的暫存資料夾
Path.GetTempPath(); → C:\Users\paladin_adm\AppData\Local\Temp\

//取得隨機檔案名稱
Path.GetRandomFileName(); → xib2n5aq.n5j


針對不同的檔案名稱測試
-------------------------
Input:cat.aspx
Result:
GetFileName: cat.aspx
GetFileNameWithoutExtension: cat
GetDirectoryName: 
-------------------------
Input:really-long-page.aspx
Result:
GetFileName: really-long-page.aspx
GetFileNameWithoutExtension: really-long-page
GetDirectoryName: 
-------------------------
Input:test.aspx
Result:
GetFileName: test.aspx
GetFileNameWithoutExtension: test
GetDirectoryName: 
-------------------------
Input:invalid-page
Result:
GetFileName: invalid-page
GetFileNameWithoutExtension: invalid-page
GetDirectoryName: 
-------------------------
Input:something-else.aspx
Result:
GetFileName: something-else.aspx
GetFileNameWithoutExtension: something-else
GetDirectoryName: 
-------------------------
Input:Content/Rat.aspx
Result:
GetFileName: Rat.aspx
GetFileNameWithoutExtension: Rat
GetDirectoryName: Content
-------------------------
Input:http://dotnetperls.com/Cat/Mouse.aspx
Result:
GetFileName: Mouse.aspx
GetFileNameWithoutExtension: Mouse
GetDirectoryName: http:\dotnetperls.com\Cat
-------------------------
Input:C:\Windows\File.txt
Result:
GetFileName: File.txt
GetFileNameWithoutExtension: File
GetDirectoryName: C:\Windows
-------------------------
Input:C:\Word-2007.docx
Result:
GetFileName: Word-2007.docx
GetFileNameWithoutExtension: Word-2007
GetDirectoryName: C:\

特別要注意的,是 Path.Combine(string1,string2) 裡的 string1,不管後面是否有倒斜線,都沒有關系。另外在Dot Net Pers網站上有提到,如果你使用 Path 類別來處理 URL 的字串時,要注意轉換後的節果,原本 URL 的斜線會變成倒斜線。

參考網址:
01.http://www.dotnetperls.com/path
02.http://www.dotblogs.com.tw/sam319/archive/2009/12/21/12589.aspx

2011年4月15日 星期五

T-SQL 將數字前面補0

在整理過去的程式時,看到 N 年前自己曾經為了解決將數字前面補0的問題,寫過如下程式(四位數,不足補0):

declare @no_x char(4);

set @no_x='33'

if(@no_x is null )
begin
 set @no_x=0
end
 set @no_x =  CONVERT(char(4), (@no_x) )

if(len(@no_x)=1)
begin
 set @no_x ='000'+ @no_x
end

if(len(@no_x)=2)
begin
 set @no_x ='00'+ @no_x
end

if(len(@no_x)=3)
begin
 set @no_x ='0'+ @no_x
end

select @no_x




回想起當初真是不夠精進,現在已經有比較簡潔的方法了,大致上舉兩個例子:一個是使用 POWER + RIGHT,另一個則是使用 REPLICATE。

POWER + RIGHT
POWER() 函數是用來計算並取得數值的 N 次方值。使用的目的,是希望取得類似 10000的結果,接著與我們原先的數值相加,最後利用 RIGHT 由右邊開始取值來完成。

declare @id int
set @id=33
select RIGHT(POWER(10,4)+@id,4)

REPLICATE
REPLICATE()函數是將字串值重複指定的次數。可以透過 LEN() 取得目前數值長度,並將尚可使用的長度帶入REPLICATE()函數。

declare @id int
set @id=33
select REPLICATE('0',4-len(@id))+ CONVERT(nvarchar(4),@id)

如果是針對整個資料表作處理,則可參考以下程式:

create table #tmp (id bigint identity(1,1),[name] nvarchar(20))
insert into #tmp ([name]) values ('paladin')
insert into #tmp ([name]) values ('hugo')
insert into #tmp ([name]) values ('ken')

--使用 REPLICATE
select REPLICATE('0',4-len(id))+ CONVERT(nvarchar(4),id) as new_id,name from #tmp
--使用 POWER
select right(POWER(10,4)+id,4) as new_id,name from #tmp


drop table #tmp

參考:
01:http://webdesign.kerthis.com/sql/sql_function_power (power)
02:http://msdn.microsoft.com/zh-tw/library/ms174383(v=SQL.105).aspx (REPLICATE)
03:http://gemmarecord.blogspot.com/2008/07/sql-0.html (Ref. Gemma)
04:http://shihshu.blogspot.com/2009/06/stored-procedure0.html (Ref. Ken)