Data Table Data Table o Data Column Collection
Data. Table 物件模型
Data. Table 物件模型的組成架構 o 結構描述 Ø Data. Column. Collection:欄位集合 ü Ø Constraint. Collection:條件約束 ü ü p Data. Row. Collection:資料列集合 ü Data. Row 物件代表資料表所持有的資料列 關聯性連結 Ø Data. Relation. Collection:關聯性連結 ü p Foreign. Key. Constraint 物件 Unique. Constraint 物件 資料列 Ø p Data. Column 物件 每一個關聯性連結分別使用一個 Data. Relation 物件來代表 使用者自訂資訊 Ø 透過 Extended. Properties 屬性來存取 Property. Collection 此一使用者自訂資訊的集合。
建立 Data. Table 物件 Data. Table 建構函式的多載版本 Data. Table() Data. Table(By. Val table. Name As String) Data. Table(By. Val info As Serialization. Info, _ By. Val context As Streaming. Context)
使用 Data. Column 建構函式(1/6) Data. Column 建構函式的多載版本 Data. Column() Data. Column(By. Val column. Name As String, _ By. Val data. Type As Type) Data. Column(By. Val column. Name As String, _ By. Val data. Type As Type, _ By. Val expr As String, _ By. Val type As Mapping. Type)
使用 Data. Column 建構函式(2/6) ' 建立一個 Data. Table 物件 Dim my. Table As New Data. Table("客戶") ' 建立一個 Data. Column 物件 Dim my. Column As New Data. Column ' 設定 Data. Column 物件的各個屬性以便定義欄位的結構描述 With my. Column. Name = "客戶編號". Data. Type = System. Type. Get. Type("System. Int 32"). Auto. Increment = True. Auto. Increment. Seed = 1. Auto. Increment. Step = 1. Read. Only = True End With ' 將欄位加入至欄位集合中 my. Table. Columns. Add(my. Column)
使用 Data. Column 建構函式(3/6) ' 建立一個 Data. Table 物件 Dim my. Table As New Data. Table("客戶") ' 建立一個 Data. Column 物件 Dim my. Column As New Data. Column("客戶編號") ' 設定 Data. Column 物件的各個屬性以便定義欄位的結構描述 With my. Column. Data. Type = System. Type. Get. Type("System. Int 32"). Auto. Increment = True. Auto. Increment. Seed = 1. Auto. Increment. Step = 1. Read. Only = True End With ' 將欄位加入至欄位集合中 my. Table. Columns. Add(my. Column)
使用 Data. Column 建構函式(4/6) ' 建立一個 Data. Table 物件 Dim my. Table As New Data. Table("客戶") Dim my. Type As System. Type my. Type = System. Type. Get. Type("System. Int 32") ' 建立一個 Data. Column 物件 Dim my. Column As New Data. Column("客戶編號", my. Type) ' 設定 Data. Column 物件的各個屬性以便定義欄位的結構描述 With my. Column. Auto. Increment = True. Auto. Increment. Seed = 1. Auto. Increment. Step = 1. Read. Only = True End With ' 將欄位加入至欄位集合中 my. Table. Columns. Add(my. Column)
使用 Data. Column 建構函式(5/6) ' 建立「員 」資料表 Dim my. Table As New Data. Table("員 ") ' 建立「員 編號」欄位 Dim col. Employee. Id As New Data. Column("員 編號", _ System. Type. Get. Type("System. Int 32")) ' 定義「員 編號」欄位的結構描述 With col. Employee. Id. Auto. Increment = True. Auto. Increment. Seed = 1. Auto. Increment. Step = 1. Read. Only = True End With ' 建立「薪資」欄位 Dim col. Salary As New Data. Column("薪資", _ System. Type. Get. Type("System. Double")) ' 建立「稅額」欄位 Dim col. Tax As New Data. Column("稅額", _ System. Type. Get. Type("System. Decimal"), "薪資 * 0. 025") ' 將各個欄位加入至欄位集合中 my. Table. Columns. Add(col. Employee. Id) my. Table. Columns. Add(col. Salary) my. Table. Columns. Add(col. Tax)
直接使用 Columns 屬性的 Add 方法(1/6) Data. Column. Collection. Add 方法的多載版本 Add() As Data. Column Add(By. Val column As Data. Column) Add(By. Val column. Name As String) _ As Data. Column Add(By. Val column. Name As String, _ By. Val type As Type) As Data. Column Add(By. Val column. Name As String, _ By. Val type As Type, _ By. Val expression As String) As Data. Column
直接使用 Columns 屬性的 Add 方法(2/6) ' 建立「員 」資料表 Dim my. Table As New Data. Table("員 ") ' 建立「員 編號」欄位 Dim col. Employee. Id As Data. Column = _ my. Table. Columns. Add() ' 定義「員 編號」欄位的結構描述 With col. Employee. Id. Column. Name = "員 編號". Data. Type = System. Type. Get. Type("System. Int 32"). Auto. Increment = True. Auto. Increment. Seed = 1. Auto. Increment. Step = 1. Read. Only = True End With
直接使用 Columns 屬性的 Add 方法(4/6) ' 建立「員 」資料表 Dim my. Table As New Data. Table("員 ") ' 建立「員 編號」欄位 Dim col. Employee. Id As Data. Column = _ my. Table. Columns. Add("員 編號") ' 定義「員 編號」欄位的結構描述 With col. Employee. Id. Data. Type = System. Type. Get. Type("System. Int 32"). Auto. Increment = True. Auto. Increment. Seed = 1. Auto. Increment. Step = 1. Read. Only = True End With ' 建立「姓名」欄位 Dim col. Name As Data. Column = my. Table. Columns. Add("姓名") ' 定義「姓名」欄位的結構描述 With col. Name. Data. Type = System. Type. Get. Type("System. String"). Max. Length = 12 End With
直接使用 Columns 屬性的 Add 方法(5/6) ' 建立「員 」資料表 Dim my. Table As New Data. Table("員 ") ' 建立「員 編號」欄位 Dim col. Employee. Id As Data. Column = _ my. Table. Columns. Add("員 編號", _ System. Type. Get. Type("System. Int 32")) ' 定義「員 編號」欄位的結構描述 With col. Employee. Id. Auto. Increment = True. Auto. Increment. Seed = 1. Auto. Increment. Step = 1. Read. Only = True End With ' 建立「姓名」欄位 my. Table. Columns. Add("姓名", _ System. Type. Get. Type("System. String")) my. Table. Columns("姓名"). Max. Length = 12 …
直接使用 Columns 屬性的 Add 方法(6/6) ' 建立「薪資」欄位 my. Table. Columns. Add("薪資", _ System. Type. Get. Type("System. Double")) ' 建立「稅額」欄位 my. Table. Columns. Add("稅額", _ System. Type. Get. Type("System. Decimal"), _ "薪資 * 0. 025") my. Table. Columns("稅額"). Read. Only = True
Data. Column 物件的屬性 Allow. DBNull Auto. Increment. Seed Auto. Increment. Step Caption Column. Mapping Column. Name Data. Type Default. Value Expression Extended. Properties Max. Length Namespace Ordinal Prefix Read. Only Table Unique
如何建立運算式欄位(1/3) o o 使用第四個多載版本的 Data. Column 建構函式。 語法: Data. Column(By. Val column. Name As String, _ By. Val data. Type As Type, _ By. Val expr As String) o 簡例: ' 建立「薪資」欄位 Dim col. Salary As New Data. Column("薪資", _ System. Type. Get. Type("System. Double")) ' 建立「稅額」欄位 Dim col. Tax As New Data. Column("稅額", _ System. Type. Get. Type("System. Decimal"), _ "薪資 * 0. 025")
如何建立運算式欄位(2/3) o o 使用 Data. Column. Collection 之第五個多載版本的 Add 方法。 語法: Add(By. Val column. Name As String, _ By. Val type As Type, _ By. Val expression As String) As Data. Column o 簡例: ' 建立「薪資」欄位 my. Table. Columns. Add("薪資", _ System. Type. Get. Type("System. Double")) ' 建立「稅額」欄位 my. Table. Columns. Add("稅額", _ System. Type. Get. Type("System. Decimal"), _ "薪資 * 0. 025")
程式範例 o o Demo. Form 3. vb Demo. Form 4. vb
如何定義主索引鍵(2/3) o 簡例 1、將「客戶編號」欄位定義為主索 引鍵: my. Table. Primary. Key = _ New Data. Column() _ {my. Table. Columns("客戶編號")} -或- Dim my. PICol. Array(1) As Data. Column my. PICol. Array(0) = _ my. Table. Columns("客戶編號") my. Table. Primary. Key = my. PICol. Array
如何定義主索引鍵(3/3) o 簡例 2、將「作者代號」與「書號」這兩個欄位 的組合定義為主索引鍵: my. Table. Primary. Key = New Data. Column() _ {my. Table. Columns("作者代號"), _ my. Table. Columns("書號")} -或- Dim my. PICol. Array(2) As Data. Column my. PICol. Array(0) = _ my. Table. Columns("作者代號") my. PICol. Array(1) = _ my. Table. Columns("書號") my. Table. Primary. Key = my. PICol. Array
Unique. Constraint 條件約束套用簡例 o 簡例 1: Dim Product. Name. UC As New _ Unique. Constraint(New Data. Column() _ {my. Table. Columns("�品名稱 ")}) my. Table. Constraints. Add(Product. Name. UC) o 簡例 2: Dim Product. UC As Unique. Constraint = _ New Unique. Constraint( _ New Data. Column() _ {my. Table. Columns("�品編號 "), _ my. Table. Columns("�品名稱 ")}) my. Table. Constraints. Add(Product. UC)
Unique. Constraint 建構函式的多載版本 Unique. Constraint(By. Val column As Data. Column) Unique. Constraint(By. Val columns() As Data. Column) Unique. Constraint(By. Val column As Data. Column, _ By. Val is. Primary. Key As Boolean) Unique. Constraint(By. Val columns() As Data. Column, _ By. Val is. Primary. Key As Boolean) Unique. Constraint(By. Val name As String, _ By. Val column As Data. Column) Unique. Constraint(By. Val name As String, _ By. Val columns() As Data. Column) Unique. Constraint(By. Val name As String, _ By. Val column As Data. Column, _ By. Val is. Primary. Key As Boolean) Unique. Constraint(By. Val name As String, _ By. Val columns() As Data. Column, _ By. Val is. Primary. Key As Boolean) Unique. Constraint(By. Val name As String, _ By. Val column. Names() As String, _ By. Val is. Primary. Key As Boolean)
Constraint. Collection. Add 方法的多載版本 Add(By. Val constraint As Constraint) Add(By. Val name As String, _ By. Val column As Data. Column, _ By. Val primary. Key As Boolean) As Constraint Add(By. Val name As String, _ By. Val primary. Key. Column As Data. Column, _ By. Val foreign. Key. Column As Data. Column) As Constraint Add(By. Val name As String, _ By. Val columns() As Data. Column, _ By. Val primary. Key As Boolean) As Constraint Add(By. Val name As String, _ By. Val primary. Key. Columns() As Data. Column, _ By. Val foreign. Key. Columns() As Data. Column) As Constraint
Data. Row. Collection. Add 方法的多載版本 o o Add(By. Val row As Data. Row) Add(By. Val values() As Object) As Data. Row my. Table. Rows. Add(New Object() _ {9, "ST 00009", "讚油雞", 4, 6, "每袋 500 克", 97, 29, 0, 0, 1}) ─或─ Dim new. Row. Values(10) As Object new. Row. Values(0) = 9 new. Row. Values(1) = "ST 00009" new. Row. Values(2) = "讚油雞" new. Row. Values(3) = 4 new. Row. Values(4) = 6 new. Row. Values(5) = "每袋 500 克" new. Row. Values(6) = 97 new. Row. Values(7) = 29 new. Row. Values(8) = 0 new. Row. Values(9) = 0 new. Row. Values(10) = 1 my. Table. Rows. Add(new. Row. Values)
如何搜尋資料列 o Data. Row. Collection 物件的 Find 方法可以透過 資料表的主索引鍵來搜尋資料列。 Find 方法的多載版本 Find(By. Val key As Object) As Data. Row Find(By. Val keys() As Object) As Data. Row Dim found. Row As Data. Row ' ' 建立一個主索引鍵值陣列來加以搜尋 搜尋主索引鍵值為 M 123321000 的資料列 Dim As Data. Row Dim found. Row find. These. Vals(2) As Object= _ Rows. Find("M 123321000") ' my. Table. 將陣列的各個元素設定成所要搜尋的資料值 = "章" ' find. These. Vals(0) 顯示出所找到之資料列的第一個欄位內容 "立民 " Iffind. These. Vals(1) Not (found. Row= Is Nothing ) Then find. These. Vals(2) = "中和found. Row(1) " Console. Write. Line(. To. String()) found. Row = my. Table. Rows. Find(find. These. Vals) End If ' 顯示出所找到之資料列的第一個欄位內容 If Not (found. Row Is Nothing) Then Console. Write. Line(found. Row(1). To. String()) End If
結束 o 別忘了定期上下列網站: n n o 微軟最有價�專家 MVP Microsoft Most Valuable Professionals n n o o MSDN 中文網站 http: //www. microsoft. com/taiwan/msdn/ 微軟技術社群網站 http: //www. microsoft. com/taiwan/community 微軟爲什麼要選拔 MVP 誰可以申請為微軟最有價�專家( MVP) 下集主題: 如何建立與使用 Data. Set 再會
- Slides: 56