一早上班,檢查一下收到的Problem Log,看看內容值得研究一下.
問題大概簡單描述一下,User透過UI對某批貨設定一些東西,然後透過Transaction,Update資料庫的一些欄位,但是工廠裡的機台要Run這批貨時,透過Transcation(內容為XML)向資料庫拿取這組設定時,得到卻是有一半的資料自空白的.....而且只有這批貨會這樣子....事情很奇怪.....
查了約莫1小時,看了所有的LOG及資料庫的內容還是查不出原因,靈機一動,把Transaction內容抓出來看看,然後開啟UltraEdit的特異功能[檢視空格/跳個字元]
發現竟然有這個符號
(-_-")...無言,User 真是強,造成XML解析到一半就不解了然後正常結束[當然程式的Error Handling也是沒做好].看來應該是User利用剪貼複製功能弄進去的.
ASCII 00~31 & 127是控制字元(Control Character)用來控制電腦喇叭鍵盤特殊Key都是不可視字元.因此我的程式必需濾掉這些字元, .Net Framework 2.0提供一個實用東西叫做[MaskedTextBox],你可以用它取代[TextBox],讓我們做更嚴謹的輸入控制.
但是先修改些屬性才能符合我的需求
屬性中的[AsciiOnly]:True
屬性中的[Mask]:CCCCCCCC (C表示可以選擇Ascii的任何非控制字元,8個C則表示欄位只能輸入8個字)
這樣一來就可以避免這個惱人的問題了,至於其他的設定可以參考下面文章..
參考資料:
MSDN MaskedTextBox Class