2009/07/21

MSDN 雜誌線上文章中英對照功能

許久沒有看 MSDN 雜誌的線上文章了,赫然發現現在不但有中英對照本版,還可以逐句對映,並且可以編輯中譯內容。由於中文內容一向是繼器翻譯,所以文句上面總是不通順,微軟這招讓社群成員可以編輯中譯本的功能,也頗不錯,集合大家的力量讓中文化資源越來越豐富。雖然是機器翻譯,有些時候還是可以省去翻字典的時間。

msdn_mag

2009/07/10

Microsoft Expression Blend 2 SP1 安裝問題

在微軟 Expression 網站下載英文版的 Blend 2 試用版安裝完成後,接著下載 Blend 2 SP1,安裝完成後,執行 Blend 2 卻跳出一個警示訊息 "The prereleased version of this product has expired. You must update to a newer release.",關掉訊息後,程式也隨之結束。在 google 上爬文後於這個討論串看到有人(Cary321)發現解決方式。

在下載 Blend 2 SP1 的網頁,按下 download 後,會跳到一頁 “Thank You for Downloading” 的說明頁面。在這個說明頁面有另外一個連結,那種告訴你如果瀏覽器沒有自動下載檔案,可以點這裡下載的說明 : "If your download does not start after 30 seconds, click this link: Start download. " 請點一下 "Start download”,下載這個 Blend 2 SP1 安裝檔。

自動下載的檔案和手動下載的檔案名稱雖然一樣,但是檔案大小不同,請安裝手動下載的那個。現在,你可以安心的使用 Blend 2 了。

2009/07/07

在微軟報表檢視器加入自訂程式碼 實例說明

加入程式碼的 MSDN 說明請參考: Adding Custom Code to a ReportViewer Report

在製作報表的時候,客戶有一個需求,假設資料的內容如下:

班號
(ClassNumber)
學生姓名
(StudentName)
001 王大明
001 陳小華
002 李大丙
002 吳小菁
003 張小英

希望輸出的報表的時候,重複的班號不要顯示,如下:

班號 學生姓名
001 王大明
  陳小華
002 李大丙
  吳小菁
003 張小英

在一般製作報表的時候,班號的這個欄位會填上 Fileds!ClassNumber.Value 的內容,但要怎麼才可以濾掉重複出現的班號呢? 使用自訂程式碼。

展開 Visual Stuio 的命令選單 Rport –> Report Properties,選擇 Code 頁籤,寫一段判斷式的函式。如下:

Dim tempClassNumber as String = ""
Public Function ShowClassNumber(ByVal classNumber as String) as String
    If (classNumber = tempClassNumber)
        Return ""
    End If
    tempClassNumber = classNumber
    Return classNumber
End Function

然後在設計報表的地方使用如下的 expression:

=Code.ShowClassNumber(Fileds!ClassNumber.Value)

客戶期望的報表內容就成功了。

自訂程式碼是動態地將程式碼編譯到報表內建的 Code 類別,以記事本打開報表設計 rdlc 檔案,可以在 <code> 區塊看到上面寫的程式碼。在報表的 expression 編輯器,使用 Code 類別來呼叫。有幾點要注意一下:

1. 必須先編譯一次專案才可以使用自訂的程式碼。
2. 在 expression 編輯器不會自動列舉自訂程式碼裡面的函式名稱。
3. 自訂程式碼必須以 Visual Basic 撰寫。