2011年12月26日 星期一

XML 解析

Q: 讀入一個字串,如何取出節點的值?
A:
Dim xmltext As New System.Text.StringBuilder
Dim strReader As StringReader = New StringReader(mXml)
Dim reader As XmlTextReader = New XmlTextReader(strReader)
Dim docNav As New XPathDocument(reader)
Dim objxPath As XPathNavigator = docNav.CreateNavigator
Dim objNode As XPathNavigator = objxPath.SelectSingleNode("/")
Return objNode.Value

2011年6月13日 星期一

DataSet Tips

DataSet 是一個儲存在記憶體內的資料庫,它擁有很多類似資料庫的操作功能,例如:

1. 兩表合併(Merge Table)
Table1.Merge(Table2, False)
有時候,這個方法會因為資料結構造成失敗,此時可改用DataRelation,將兩個Table Join。
Dim mDataRelation As New DataRelation("TempJoin", Table2Columns, Table1Columns, False)
ds.Relations.Add(mDataRelation)
' jj 是Table2填入Table1的起始欄位
For Each mRow As DataRow In Table1.Rows
For ii = jj To Table2.Columns.Count - 1
mRow(jj+ii) = mRow.GetParentRow("TempJoin")(ii)
Next
Next

2. 排序(Sort)
Table1.DefaultView.Sort(Field1)
For i = 0 To Table1.DefaultView.Count - 1
aa=Table1.DefaultView(i).Item("Field2")
next

3. 篩選(Filter)
Dim rows As DataRow() = dtTopicid.Select("Field1='aaa'")

4. 衍生欄位(Derived Field)
Dim col As DataColumn
col = dt.Columns.Add("ExpCol", GetType(Boolean), expr)



另外,還有一些小技巧,與大家分享:
1. 欄位值大小寫有區別(Case Sensitive)
Table1.CaseSensitive = True

2. 設定額外屬性(Custom Property)
column.ExtendedProperties.Add("TimeStamp", DateTime.Now)

3. 取唯一值(Unique Values)
Dim dtDistinct As DataTable = Table1.DefaultView.ToTable("Table1", True, "Field1")

2011年4月13日 星期三

以內碼設定字串值

Q:如何列印所有的中文字或全行字?

A:
For i As Integer = 0 To 20901
sb.Append(ChrW(&H4E00 + i))
Next
** Console mode 無法顯示部份字元,例如ㄎ,應該是DOS Mode的中文字集不足的問題。

2011年1月25日 星期二

VS 安裝專案的注意事項

產生安裝專案時有兩件事,設定常常找不到:

  1. 要在桌面產生一個捷徑
  2. 要使用.net framework 2.0

在桌面產生一個捷徑

不能在【使用者的桌面】按滑鼠右鍵增加一捷徑,這樣會使捷徑指到執行檔所在目錄,而非執行檔本身;必須在【應用程式資料夾】的【主要輸出】按滑鼠右鍵增加一捷徑,再將該捷徑拖曳到【使用者的桌面】。

要使用.net framework 2.0

除了執行檔專案建置要設成.net framework 2.0外,在安裝專案的Mocrosoft .net Framework項目,須Double Click後,設定.net framework 2.0,如下圖。

1

2