Imports System.Data
'以下程式順序無直接關連性
'建立DataTable
Dim dt As DataTable
dt.Columns.Add("CODE")
dt.Columns.Add("CODE_NAME")
dt.Columns.Add("RATE", GetType(Double))
dt.Columns.Add("TOT_AMT", GetType(System.Decimal))
dt.TableName = "測試資料"
'新增一筆資料
Dim newRow As DataRow = dt.NewRow()
newRow("CODE") = "A"
newRow("CODE_NAME") = "促銷方案A"
newRow("RATE") = 0.5
newRow("TOT_AMT") = 3000
dt.Rows.Add(newRow)
'設定PrimaryKey
dt.PrimaryKey = New DataColumn() {dt.Columns("CODE")}
'尋找該代碼SOMECODE 所代表的名稱 ,若找不到會傳回Null 值
Dim 代碼名稱 As String = dt.Rows.Find("SOMECODE").Item("CODE_NAME").ToString()
'衍伸性欄位
'新增一個欄位"分數" 將欄位"分數文字" (文字型態的欄位) 轉成數字型態
Dim cola As DataColumn = New DataColumn("分數", GetType(System.Double))
cola.Expression = "Convert(分數文字, 'System.Double')"
dt.Columns.Add(cola)
'新增一個欄位 "性别說明" 將欄位"性别" 轉換成中文說明
Dim colb As DataColumn = New DataColumn("性别說明")
colb.Expression = " iif(性别='F','女性','男性') "
dt.Columns.Add(colb)
'新增一個欄位 "付款年月" 將欄位"PAY_DATE" 轉換成年月
Dim colc As DataColumn = New DataColumn("付款年月")
colc.Expression = " Substring(PAY_DATE,1,3) + Substring(PAY_DATE,5,2) "
dt.Columns.Add(colc)
'新增自動編號的欄位
Dim dcID As DataColumn = New DataColumn("編號", GetType(System.Int32))
dcID.AutoIncrement = True
dcID.AutoIncrementSeed = 1
dcID.AutoIncrementStep = 1
dt.Columns.Add(dcID)
'DataTable 逐列 變更內容或讀取內容
For Each dr As DataRow In dt.Rows
dr("AAA") = ""
dr("CCC") = dr("AAA") + dr("BBB")
Next
'DataTable 尋找資料性别為F的資料 ,將結果用字串顯示
Dim dr_Select As DataRow()
dr_Select = dt.Select("性别='F'")
Dim allname As String = ""
For i As Integer = 0 To dr_Select.Length - 1
allname += dr_Select(i).Item("名字") + ","
Next
allname = allname.TrimEnd(",")
'DataTable aggregate functions
'筆數統計 COUNT
Dim totalrROW As Integer = dt.Compute("COUNT(1)", "CODE IN ('A','B') ")
'金額小計 SUM
Dim totalFee As Double = dt.Compute("SUM(TOT_AMT) + SUM(EXT_AMT) ", "CODE IN ('A','B') ")
'DataTable distinct
Dim columns As String() = {"COLUMN_A", "COLUMN_B"}
Dim dtDist1 As DataTable = dt.DefaultView.ToTable(True, columns)
'或
Dim dtDist2 As DataTable = dt.DefaultView.ToTable(True, New String() {"COLUMN_A", "COLUMN_A"})
'DataTable delete
'將找到的資料逐筆刪除
Dim xRows As DataRow()
xRows = dt.Select("CODE IN ('A','B')")
For Each item As DataRow In xRows
dt.Rows.Remove(item)
Next
'將DataTable 使用指定的檔案 將目前的內容寫成 XML
dt.WriteXml("C:\TEMP\" & dt.TableName & ".xml")
'目前的資料結構撰寫成 XML 結構描述,寫入至指定的檔案。
dt.WriteXmlSchema("C:\TEMP\dataset.xsd")
沒有留言:
張貼留言