2013年7月17日 星期三

Math.Floor與無條件捨去的差異

我以為Math.Floor就是無條件捨去,所以一直使用這個方法,結果我錯了!

這次在處理小數點後的數值時,才發現Math.Floor無法指定小數點後位數,查了資料才知道原本一直用的Math.Floor並不是無條件捨去而已,而是無條件抓取十進位或雙精度的整數位數,並沒有小數點後數值的處理,原來我之前都沒有拿這個處理過小數點後的位數,不然就慘囉~後來參考了將小數點後指定位數的數值無條件捨去的方式,可以控制小數點位數,也能夠發揮原本的功能,修改成自己需要使用的情況後,總算把這個意料之外的問題解決了。

2013年7月15日 星期一

SQL指令抓取逗號分隔的資料

此為SQL指令筆記,不多做描述...

抓取SQL同一個欄位中,用逗號','分隔的資料。

/*第一筆資料*/
SELECT A.Comment, LEFT(A.Comment,CHARINDEX(',',A.Comment)-1) FROM Pro A
WHERE A.Comment <> '' AND CHARINDEX(',',A.Comment) > 0
/*第二筆資料*/
SELECT A.Comment, SUBSTRING(A.Comment,LEN(LEFT(A.Comment,CHARINDEX(',',A.Comment)))+1,LEN(A.Comment)-CHARINDEX(',',A.Comment)) FROM Pro A
WHERE A.Comment <> '' AND SUBSTRING(A.Comment,CHARINDEX(',',A.Comment),1)= ','

特性:抓取Comment欄位的資料裡,不包含空白、NULL、沒有逗點分隔的資料,而且WHERE的內容為降低錯誤訊息產生的原因。
 

2013年7月2日 星期二

搞怪的ReportViewer

有時間我會再把相關的資料都整理再放上來,但先來說說"路徑"的怪問題。


錯誤訊息為
處理本機報表時發生錯誤
報表 XXX 的定義無效。
編譯運算式時發生不可預期錯誤。原生編譯器傳回值:'[BC2001]找不到檔案 XXX

如上圖的錯誤訊息,正常都會覺得是檔案的問題,就一直在查路徑。
但實際上這個問題不是路徑的問題,有網友說是使用者設定檔的問題,但我發現另一個解決方式,就是RDL檔案"使用了ReportViewer不支援的內建欄位",只要把欄位拿掉就會正常了,ReportViewer可以使用的內建欄位在此

正常在建立RDL檔案時,會把內建欄位放進去,原本若是使用Reporting Services可能會沒有問題,但ReportViewer並不支援,此錯誤訊息讓人摸不著頭緒,光這個問題就搞了好幾天。

接下來如果順利,我一定要把ReportViewer相關的文件與做法再弄一次,全部花了我一個禮拜才搞完,真的是很麻煩。