2011年7月9日 星期六

[ Asp.Net ] 以ashx上傳XML檔案(不存檔)配合xsd驗證及讀取資料

程式碼片段  LoadXm..ashx

           '以 StreamReader 取得該檔案!
            Dim XmlFile As New System.IO.StreamReader(context.Request.Files(0).FileName)
            Dim xmlContent As String = XmlFile.ReadToEnd()
            Dim xmlStringReader As System.IO.StringReader = New System.IO.StringReader(xmlContent)



           ' 建立 XmlSchemaSet
            Dim sc As XmlSchemaSet = New XmlSchemaSet()
            sc.Add("", context.Server.MapPath("Your.xsd"))
            '設定validation settings.
            Dim settings As XmlReaderSettings = New XmlReaderSettings()
            settings.ValidationType = ValidationType.Schema
            settings.Schemas = sc
            AddHandler settings.ValidationEventHandler, AddressOf ValidationCallBack
           
           '驗證上傳後的檔案
            Dim reader As XmlReader = XmlReader.Create(xmlStringReader, settings)
             While reader.Read()
                    ......................
            End While

.net ADOX 為現有的MDB資料表增加欄位

上網找了MSDN的範例,不過都不是自己要的,我的需求是在現存的資料表增加欄位。
因在Web上增加欄位,非主機端還是用Code來操作會比較簡單。
Code在下面,提供大家參考,適合自己需求的 要再改一下。

記得先加入參考[Microsoft ADO Ext. 2.8 for DDL.....]
然後引用
 IMPORTS   ADOX


直接呼叫下列程序
  Add_ColumToExistMdb("資料表名稱", "要增加的資料欄位", "資料型態(自行定義)")

'增加 資料庫 欄位 ()
    Sub Add_ColumToExistMdb(ByVal TableName As String, ByVal ColName As String, ByVal ColType As String)
        'TableName 資料表名稱
        'ColName 欄位名稱
        'ColType 欄位型態
        Dim Cn = New ADODB.Connection
        Cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & My.Application.Info.DirectoryPath & "\My.mdb")
        Dim cat As New ADOX.Catalog
        Dim tbl As New ADOX.Table
        Dim xCol As New ADOX.Column
        Dim blnColAlreadyExist As Boolean = False '判斷欄位是否存在的


        Dim TranCode As Integer  '轉換後的數字Enum
        cat.ActiveConnection = Cn
        tbl = cat.Tables(TableName) '針對現存的表格來做增加欄位的動作!
        '在增加特定欄位前先偵測[欄位名稱]是否存在?
        For Each xCol In tbl.Columns
            'Debug.Print(xCol.Name.ToString)
            If xCol.Name = ColName Then
                blnColAlreadyExist = True
                Exit For
            End If
        Next
        '欄位沒有重複!
        If blnColAlreadyExist = False Then
            Select Case ColType '自訂欄位定義....
                Case "long"
                    TranCode = 4 'DataTypeEnum.adSingle

            End Select
            '增加欄位
            tbl.Columns.Append(ColName, TranCode)
            cat.Tables.Refresh()
        End If

        Cn.Close()
        Cn = Nothing


    End Sub

2011年7月3日 星期日

.net 將既有的xml轉換為xsd檔案

在Visual Studio 安裝的目錄下,尋找xsd.exe檔案
找到之後,使用 [命令提示字元]
直接輸入 xsd [檔名ABC]
 在同一個目錄下,就會產生同名的ABC.xsd

相關的語法使用,可參考以下網址
http://msdn.microsoft.com/zh-tw/library/x6c1kb0s%28v=vs.80%29.aspx

JavaScript 物件長度或陣列長度的取法

經測試
物件長度 要用迴圈方式累加取得cnt

for (var obj in ObjS) {
  cnt+=1;
}

陣列長度,直接以length取得,歸零用length=0

追蹤者