2011年8月9日 星期二

讀取XML

Public Class 取得命令
    Private Const xmlns As String = "{urn:hl7-org:v3}"
    Private _xElement As XElement

    Public Sub New(ByVal xml As String)
        _xElement = XElement.Parse(xml)
        '_單張檔名 = 單張檔名 
    End Sub

    Public ReadOnly Property 資料庫主機名稱 As String
        Get
            Try
                Return _xElement.Element(xmlns & "資料") _
                                  .Element(xmlns & "備份") _
                                  .Element(xmlns & "資料庫主機名稱").Value
            Catch ex As Exception
                Return ""
            End Try
        End Get

    End Property

    Public ReadOnly Property 資料庫名稱 As String
        Get
            Try

                Return _xElement.Element(xmlns & "資料") _
                                  .Element(xmlns & "備份") _
                                  .Element(xmlns & "資料庫名稱").Value
            Catch ex As Exception
                Return ""
            End Try
        End Get

    End Property
End Class

取用方式:p.Element(xmlns & "資料庫主機名稱").Value

將 datatable 寫入XML


存成XML檔
Dim newXml As String = "<?xml version=" & Chr(34) & "1.0" & Chr(34) & " encoding=" & Chr(34) & "UTF-8" & Chr(34) & " standalone=" & Chr(34) & "no" & Chr(34) & "?>"
        newXml = newXml & "<ClinicalDocument classCode=" & Chr(34) & "DOCCLIN" & Chr(34) & " moodCode=" & Chr(34) & "EVN" & Chr(34) & " xmlns=" & Chr(34) & "urn:hl7-org:v3" & Chr(34) & " xmlns:voc=" & Chr(34) & "urn:hl7-org:v3/voc" & Chr(34) & " xmlns:xsi =" & Chr(34) & "http://www.w3.org/2001/XMLSchema-instance" & Chr(34) & "><資料> "

For i As Integer = 0 To dt.Rows.Count - 1
            newXml = newXml & "<備份>"
            newXml = newXml & "<資料庫主機名稱>" & dt.Rows(i).Item("資料庫主機名稱") & "</資料庫主機名稱>"
            newXml = newXml & "<資料庫名稱>" & dt.Rows(i).Item("資料庫名稱") & "</資料庫名稱>"
            newXml = newXml & "<備份方式>" & dt.Rows(i).Item("備份方式") & "</備份方式>"
            newXml = newXml & "<備份頻率>" & dt.Rows(i).Item("備份頻率") & "</備份頻率>"
            newXml = newXml & "<備份間隔>" & dt.Rows(i).Item("備份間隔") & "</備份間隔>"
            newXml = newXml & "<開始時間>" & dt.Rows(i).Item("開始時間") & "</開始時間>"
            newXml = newXml & "<備份路徑>" & dt.Rows(i).Item("備份路徑") & "</備份路徑>"
            newXml = newXml & "<DBCC>" & dt.Rows(i).Item("DBCC") & "</DBCC>"
            newXml = newXml & "<壓縮>" & dt.Rows(i).Item("壓縮") & "</壓縮>"
            newXml = newXml & "<刪除日數>" & dt.Rows(i).Item("刪除日數") & "</刪除日數>"
            newXml = newXml & "<清道夫>" & dt.Rows(i).Item("清道夫") & "</清道夫>"
            newXml = newXml & "<清道夫日數>" & dt.Rows(i).Item("清道夫日數") & "</清道夫日數>"
            newXml = newXml & "</備份>"
Next

        newXml = newXml & "</資料></ClinicalDocument>"

        Dim XmlFile As String = My.Application.Info.DirectoryPath & "\tg維護精靈.xml"
        Using sw As New StreamWriter(XmlFile) ', False, System.Text.Encoding.GetEncoding(950))
            sw.WriteLine(newXml)
            sw.Close()
        End Using

2011年8月1日 星期一

模擬物件陣列取值

因為 .NET 已經沒有像以前VB6一樣的物件陣列的命名方式,例如 text(1),text(2)....
所以若是有10個 textbox ,名為 textbox1,textbox2,textbox3....的時候,要放在FOR迴圈裡跑資料是有點麻煩,這是以前我同事教我的,還挺好用的:



        Dim ctr As Control
        Dim 值, 變數名稱 As String
        For i As Integer = 1 To 10
            變數名稱 = "TextBox" & i.ToString
            For Each ctr In Me.Controls
                If (ctr.Name.ToUpper = 變數名稱.ToUpper) Then
                    值 = CType(ctr, TextBox).Text
                    Debug.Print(值)
                    Exit For
                End If
            Next
        Next
如果裝好SQL SERVER後,才更改電腦名稱的話,一定要將SQL SERVER 的 PC NAME 與 Instance Name 做一個更新,不然有時候跑程式或跑某些動作時,可是會出現奇怪的錯誤喔~


ex.假設原本PC NAME 叫做 PC1 ,Instance Name :SQL2008
新的 PC NAME 叫做 SERVER1


--1.先查詢目前的 serverName
SELECT @@SERVERNAME


--2.刪除目前的 serverName
EXEC sp_dropserver 'PC1\SQL2008'


--3.加入新的 serverName
EXEC sp_addserver @server='SERVER1\SQL2008',@local = 'local' 


--4.檢查是否更改成功
exec sp_helpserver


--5.要重新啟動SQL SERVER,才會更改完成!