DataSetSuan Dusit Rajabhat University, Phitsanulok Campus                           Mr.Warawut Khangkhan
DataSet ●     DataSet คอ ออบเจกตทถอไดวาเปนหวใจของ     ADO.NET สาหรบการเขาถ!งขอม#ลแบบ     Disconnected เนองจากออบเจกตน&ใชเก...
โครงสรางการทางานของออบเจกต                DataSet                            DataTable Object                            D...
DataTable Object ●     คอ ตวแทนของแตละ table ใน DataSet ●     Table จะถ#กรวบรวมไวในคอลเลคชน     DataTableCollection ซ!งเขา...
DataColumn Object ●     โครงสรางของแตละ table จะถ#กกาหนดโดย     คอลเลคชน DataColumnCollection ซ!งบรรจ1ออบ     เจกต DataCol...
DataColumn Object (Cont.) ●     สามารถเขาถ!งคอลเลคชน DataColumnCollection     ไดโดยเรยกใชพรอพเพอรต& Columns ของ     DataTa...
DataRow Object ●     DataTable จะเกบขอม#ล record ตางๆ ไวใน     คอลเลคชน DataRowCollection ซ!งบรรจ1ออบเจกต     DataRow ไวต&...
DataRow Object (Cont.)   For Each row As DataRow In ds.Tables(“Emp”).Rows      TextBox1.Text &= row.Item(“Firstname”) & Co...
การเพ,มขอม#ลเขาไปใน DataSet●    การเพ,มขอม#ลเขาไปใน DataSet คอ การเพ,ม record    ใหมเขาไปยง table ใน DataSet ซ!งทาไดโดยเรย...
ตวอยาง การเพ,มขอม#ลเขาไปใน               DataSetประกาศตวแปรเพออางอ,งไปยงเทเบ,ล Emp ใน DataSetDim tb As DataTable = ds.Tabl...
การแกไขขอม#ลใน DataSetประกาศตวแปรเพออางอ,งไปยงเทเบ,ล Emp ใน DataSetDim tb As DataTable = ds.Tables(“Emp”)วนล#ปเพอทางานกบขอ...
การลบขอม#ลใน DataSet●    การลบขอม#ลใน DataSet ทาไดโดยเรยกเมธอด    Delete ของเรคอรด (ออบเจกต DataRow) ท    ตองการลบ ซ!งเรคอ...
ตวอยาง การลบขอม#ลใน DataSetประกาศตวแปรเพออางอ,งไปยงเทเบ,ล Emp ใน DataSetDim tb As DataTable = ds.Tables(“Emp”)วนล#ปเพอทางา...
สถานะของเรคอรด    คา                      ความหมายAdded       เรคอรดถ#กเพ,มเขามาใน DataRowCollection            (พรอพเพอรต...
สถานะของเรคอรด (ตอ)    คา                  ความหมายModified  เรคอรดถ#กแกไขขอม#ล ซ!งหลงจากอพเดท          ขอม#ลลงฐานขอม#ลแลว...
การผ#ก DataSet เขากบ             คอนโทรลบนฟอรม●    Data Binding หมายถ!ง การเชอมโยงกนระหวางออบ    เจกตททาหนาทเปน “ผ#จดเตรยม...
Simple Data Binding●    อาศยพรอพเพอรต& DataBindings ของคอนโทรลน&น    ในการระบ1การเชอมโยงระหวางพรอพเพอรต&ของ    คอนโทรลกบแห...
Complex Data Binding●    คอนโทรลบางชน,ด เชน ListBox, ComboBox และ    DataGridView สามารถแสดงขอม#ลจากแหลงขอม#ล    ไดหลายเรค...
การเลอนไปยงเรคอรดตางๆ ●     การเลอนเรคอรด หมายถ!ง การเปลยนแปลงเรคอรดท     เปนเรคอรดป<จจ1บน โดยเรคอรดป<จจ1บน (Current     R...
การเลอนไปยงเรคอรดตางๆ (ตอ) ●     ออบเจกต CurrencyManager ท&งหมดทสมพนธกบ     แหลงขอม#ลตางๆ ภายในฟอรมจะถ#กจดการผานออบ     เจ...
การเลอนไปยงเรคอรดตางๆ (ตอ) ●     เลอนเรคอรด สามารถกาหนดหมายเลขเรคอรดท     ตองการใหเปนเรคอรดป<จจ1บนทพรอพเพอรต&     Position...
การเลอนไปยงเรคอรดตางๆ (ตอ) ●     กาหนดใหเรคอรดทอย#กอนหนาเรคอรดป<จจ1บนเปนเร     คอรดป<จจ1บน     Me.BindingContext(ds.Table(...
เพ,มและลบเรคอรดในแหลงขอม#ลโดยใช        CurrencyManager ●     ออบเจกต CurrencyManager ไมไดมความสามารถ     แคการจดจาและเปลยน...
เพ,มและลบเรคอรดในแหลงขอม#ลโดยใช       CurrencyManager (ตอ)  ●      เมธอด RemoveAt ตองการอารก,วเมนต 1 ตว คอ      หมายเลขของ...
Example:            CurrencyManager ProjectK.Warawut             DataSet         25
การกลนกรองและเรยงลาดบขอม#ลดวย            DataView ●     DataView ทาหนาทกลนกรองขอม#ลใน DataTable     ตามทกาหนด แลวแสดงขอม#ล...
สราง DataView ●     โดยสรางออบเจกตของคลาส DataView ใน     เนมสเปซ System.Data ข!&นมา พรอมท&งระบ1     DataTable เปนอารก,วเม...
กลนกรองและเรยงลาดบขอม#ลใน                    DataView ●     เมอสราง DataView ข!&นมาใหมๆ ขอม#ลใน     DataView จะมม1มมองเหมอ...
พรอพเพอรต& RowFilter ของ                  DataView ●     กลนกรองใหเหลอเฉพาะเรคอรดทมคาของฟ4ลด City     เทากบ “Seattle”     ...
พรอพเพอรต& RowFilter ของ                 DataView (ตอ) ●     กลนกรองใหเหลอเฉพาะเรคอรดทมคาของฟ4ลด City     เทากบ “Seattle”,...
พรอพเพอรต& Sort ของ DataView●    ใหเรยงลาดบตามรหสพนกงาน      dv.Sort = “CustomerID”●    ใหเรยงลาดบตามชอพนกงาน โดยถาชอซ&ากน...
Example:            DataViewDemo ProjectK.Warawut            DataSet       32
ทางานกบ DataSet ทมหลายเทเบล                    Example:            MasterDetailsDemo ProjectK.Warawut              DataSet...
กาหนดความสมพนธระหวางเทเบ,ลดวย          DataRelation ●     การกาหนดความสมพนธระหวางเทเบ, 2 เทเบ,ลใน     DataSet ทาไดโดยสรางอ...
การสรางออบเจกต DataRelation     DataRelation(relationName, parentColumn, childColumn) ●     relationName ชอความสมพนธทตองกา...
ตวอยาง การสรางออบเจกต                DataRelationใชตวแปร parentColumn อางองไปยงฟ#ลดCustomerID ในเทเบล CustDim parentColumn...
เพ,ม DataRelation เขาไปใน        DataRelationCollection●    เมอสรางออบเจกต DataRelation ข!&นมาแลว จะตอง    เพ,มออบเจกตน&เข...
การเขาถ!งเรคอรดในอกเทเบ,ลหน!งท                สมพนธกน ●     เมอเพ,มเขาไปใน DataRelationCollection     (พรอพเพอรต& Relation...
การเขาถ!งเรคอรดในอกเทเบ,ลหน!งท              สมพนธกน (ตอ) ●     เนองจากเรคอรดใน Child Table ทสมพนธกบเร     คอรดหน!งๆ ใน Par...
การเขาถ!งเรคอรดในอกเทเบ,ลหน!งท               สมพนธกน (ตอ)  ●      ในทางกลบกนเราสามารถเขาถ!งเรคอรดใน Parent      Table ทสมพ...
Example:            DataRelation ProjectK.Warawut           DataSet        41
Contact us        Mr.Warawut Khangkhan●   Social Media:    http://www.facebook.com/awarawut (Profile)    http://www.facebo...
Upcoming SlideShare
Loading in...5
×

DataSet

1,358

Published on

DataSet

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,358
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
41
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

DataSet

  1. 1. DataSetSuan Dusit Rajabhat University, Phitsanulok Campus Mr.Warawut Khangkhan
  2. 2. DataSet ● DataSet คอ ออบเจกตทถอไดวาเปนหวใจของ ADO.NET สาหรบการเขาถ!งขอม#ลแบบ Disconnected เนองจากออบเจกตน&ใชเกบขอม#ลท โปรแกรมด!งมาจากฐานขอม#ล โดยการทางานกบ ขอม#ลใน DataSet จะมร#ปแบบเปนเช,งสมพนธ (Relational) เหมอนการทางานกบฐานขอม#ลโดยตรง แตเปนอ,สระจากฐานขอม#ล ● DataSet ยงสามารถใชเกบขอม#ลทอานมาจากเทกซ ไฟล (Text File) หรอแหลงขอม#ลแบบ XML ไดดวยK.Warawut DataSet 2
  3. 3. โครงสรางการทางานของออบเจกต DataSet DataTable Object DataColumn Object DataRow ObjectK.Warawut DataSet 3
  4. 4. DataTable Object ● คอ ตวแทนของแตละ table ใน DataSet ● Table จะถ#กรวบรวมไวในคอลเลคชน DataTableCollection ซ!งเขาถ!งไดโดยเรยกใชพรอพ เพอรต& Tables ของ DataSet (Default) For Each tb As DataTable In ds.Tables TextBox1.Text &= tb.TableName & ControlChars.CrLf NextK.Warawut DataSet 4
  5. 5. DataColumn Object ● โครงสรางของแตละ table จะถ#กกาหนดโดย คอลเลคชน DataColumnCollection ซ!งบรรจ1ออบ เจกต DataColumn ไว ● DataColumn คอ ตวแทนของ field หน!งๆ โดยเกบ ค1ณสมบต,ตางๆ เกยวกบ field น&นไว เชน ชอฟ4ลด และชน,ดขอม#ลของฟ4ลด เปนตนK.Warawut DataSet 5
  6. 6. DataColumn Object (Cont.) ● สามารถเขาถ!งคอลเลคชน DataColumnCollection ไดโดยเรยกใชพรอพเพอรต& Columns ของ DataTableFor Each f As DataColumn In ds.Tables(“Emp”).Columns TextBox1.Text &= f.ColumnName & “: “ & f.DataType.ToString & _ ControlChars.CrLfNext DataColumn Object จะเกบคณสมบตเกยวกบฟลด แตไมไดเกบขอมลในฟลดไว การเขาถ%งขอมลในฟลดจะตองใช DataRow ObjectK.Warawut DataSet 6
  7. 7. DataRow Object ● DataTable จะเกบขอม#ล record ตางๆ ไวใน คอลเลคชน DataRowCollection ซ!งบรรจ1ออบเจกต DataRow ไวต&งแต 0 ออบเจกตข!&นไป โดยแตละออบ เจกต คอ ตวแทนของ record หน!งๆ ● การเขาถ!งคอลเลคชน DataRowCollection ใหใช พรอพเพอรต& Rows ของ DataTable สวนการเขาถ!ง ขอม#ลแตละ field ใน record ใหใชพรอพเพอรต& Item ของ DataRow โดยระบ1ชอ field เปนอารก,วเมนตK.Warawut DataSet 7
  8. 8. DataRow Object (Cont.) For Each row As DataRow In ds.Tables(“Emp”).Rows TextBox1.Text &= row.Item(“Firstname”) & ControlChars.CrLf Next เน(องจากพรอพเพอรต* Item เป,น Default Property ของ DataRow ดงน*นแทนทจะเขยนวา row.Item(“Firstname”) อาจเขยนส*นๆ ได row(“Firstname”)K.Warawut DataSet 8
  9. 9. การเพ,มขอม#ลเขาไปใน DataSet● การเพ,มขอม#ลเขาไปใน DataSet คอ การเพ,ม record ใหมเขาไปยง table ใน DataSet ซ!งทาไดโดยเรยก เมธอด NewRow ของ table (DataTable Object) ท ตองการเพ,ม record เขาไป เมธอดน&จะสราง ออบเจกต DataRow ข!&นมาใหมและสงคน (Return) ออบเจกตน&นกลบมาให ดงน&นตองประกาศตวแปร ออบเจกตชน,ด DataRow เพอรบคาจากเมธอด แลว กาหนดขอม#ลลงใน field ตางๆ ของ record ผานทาง ตวแปรดงกลาว ส1ดทายใหเพ,มออบเจกต DataRow เขาไปในคอลเลคชน DataRowCollection ของ tableK.Warawut DataSet 9
  10. 10. ตวอยาง การเพ,มขอม#ลเขาไปใน DataSetประกาศตวแปรเพออางอ,งไปยงเทเบ,ล Emp ใน DataSetDim tb As DataTable = ds.Tables(“Emp”)สรางเรคอรดใหมทมโครงสรางของฟ4ลดตางๆ ตามทกาหนดโดยเทเบ,ล Emp แลวใชตวแปร row อางอ,งไปยงเรคอรดใหมน&น(เรคอรดใหมยงไมถ#กเพ,มเขาไปในเทเบ,ล Emp)Dim row As DataRow = tb.NewRow( )กาหนดคาใหกบฟ4ลดตางๆ ถาตองการใหเพมลงในฐานขอมลจรงๆrow(“FirstName”) = “วราว1ฒ,” ตองใชเมธอด Update ของ DataAdapterrow(“LastName”) = “แขงขน”row(“Title”) = “Teach”row(“BirthDate”) = #11/21/1974#เพ,มเรคอรดใหมเขาไปยงเทเบ,ล Emp ใน DataSettb.Rows.Add(row)
  11. 11. การแกไขขอม#ลใน DataSetประกาศตวแปรเพออางอ,งไปยงเทเบ,ล Emp ใน DataSetDim tb As DataTable = ds.Tables(“Emp”)วนล#ปเพอทางานกบขอม#ลพนกงานท&งหมดในเทเบ,ล EmpFor Each row As DataRow In tb.Rows ถาพนกงานมชอและนามสก1ลวา “วราว1ฒ, แขงขน” If row(“FirstName”) = “วราว1ฒ,” And row(“LastName”) = “แขงขน” Then ใหแกไขชอเปน “Warawut” row(“FirstName”) = “Warawut” แกไขนามสก1ลเปน “Khangkhan” row(“LastName”) = “Khangkhan” End If คอ การแกไขเรคอรดทมอย#แลวใน DataSetNext โดยกาหนดคาใหมใหกบฟ4ลดทตองการ DataSet 11
  12. 12. การลบขอม#ลใน DataSet● การลบขอม#ลใน DataSet ทาไดโดยเรยกเมธอด Delete ของเรคอรด (ออบเจกต DataRow) ท ตองการลบ ซ!งเรคอรดจะไมถ#กลบออกไปจาก DataSet จร,งๆ แตจะถ#กกาหนดสถานะ (พรอพเพอรต& RowState) เปนคา Deleted การเปลยนสถานะของเร คอรดแทนทจะลบออกจาก DataSet น&ทาให DataAdapter ร#วาตองลบเรคอรดใดในฐานขอม#ล เมอเรยกเมธอด Update ของ DataAdapter เพอนา ขอม#ลจาก DataSet ไปอพเดลลงฐานขอม#ล ซ!งหลง จากอพเดลฐานขอม#ลแลว เรคอรดน&นจ!งจะถ#กลบออก ไปจาก DataSet จร,งๆ 12
  13. 13. ตวอยาง การลบขอม#ลใน DataSetประกาศตวแปรเพออางอ,งไปยงเทเบ,ล Emp ใน DataSetDim tb As DataTable = ds.Tables(“Emp”)วนล#ปเพอทางานกบขอม#ลพนกงานท&งหมดในเทเบ,ล EmpFor Each row As DataRow In tb.Rows ถาพนกงานมชอและนามสก1ลวา “Warawut Khangkhan” If row(“FirstName”) = “Warawut” And row(“LastName”) = “Khangkhan” Then ใหลบขอม#ลของพนกงานคนน&นท,&งไป row.Delete( ) End IfNextK.Warawut DataSet 13
  14. 14. สถานะของเรคอรด คา ความหมายAdded เรคอรดถ#กเพ,มเขามาใน DataRowCollection (พรอพเพอรต& Rows) ดวยเมธอด Add ของ DataRowCollection ซ!งหลงจากอพเดทขอม#ล ลงฐานขอม#ลแลว สถานะจะเปลยนไปเปน UnchangedDeleted เรคอรดถ#กลบแลว ซ!งหลงจากอพเดลขอม#ลลง ฐานขอม#ลแลว เรคอรดจะถ#กลบออกไปจาก DataSet จร,งๆDetached เรคอรดถ#กสรางข!&นมา แตยงไมถ#กเพ,มเขาไปใน DataRowCollectionK.Warawut DataSet 14
  15. 15. สถานะของเรคอรด (ตอ) คา ความหมายModified เรคอรดถ#กแกไขขอม#ล ซ!งหลงจากอพเดท ขอม#ลลงฐานขอม#ลแลว สถานะจะเปลยนไป เปน UnchangedUnchanged เรคอรดไมมการเปลยนแปลงใดๆ ซ!งเปนคาเร,ม ตนของเรคอรดทเพ,งถ#กอานจากฐานขอม#ลมา ใสลง DataSetK.Warawut DataSet 15
  16. 16. การผ#ก DataSet เขากบ คอนโทรลบนฟอรม● Data Binding หมายถ!ง การเชอมโยงกนระหวางออบ เจกตททาหนาทเปน “ผ#จดเตรยมขอม#ล” (Data Provider) หรอ “แหลงขอม#ล” (Data Source) กบ ออบเจกตททาหนาทเปน “ผ#ใชขอม#ล” (Data Consumer) ซ!ง Data Provider ในกรณของเราคอ เทเบ,ล (ออบเจกต DataTable) ใน DataSet สวน Data Consumer ไดแกคอนโทรลตางๆ ทใชแสดง ผลขอม#ล เรยกวา data-bound control● Data Consumer หรอทเรยกวา Data-bound control แบงได 2 ประเภท คอ simple-bound control และ complex-bound control 16
  17. 17. Simple Data Binding● อาศยพรอพเพอรต& DataBindings ของคอนโทรลน&น ในการระบ1การเชอมโยงระหวางพรอพเพอรต&ของ คอนโทรลกบแหลงขอม#ล Object.DataBindings.Add(propertyName, dataSource, DataMember) object คอนโทรลททาหนาทเป!น Data Consumer propertyName พร"อพเพอร#ตของคอนโทรลทใชทา Data Binding $ dataSource ออบเจ"กต#ททาหนาทเป!นแหลงขอมลหร(อ Data Provider ซ*งปกตเราจะระบ,เทเบลใน DataSet ให-ก-บพารามเตอร#น$ dataMember ช(อฟ/ลด#ในแหลงขอมลทใชทา DataBinding TextBox1.DataBindings.Add(“Text”, ds.Table(“Emp”), “FirstName”)
  18. 18. Complex Data Binding● คอนโทรลบางชน,ด เชน ListBox, ComboBox และ DataGridView สามารถแสดงขอม#ลจากแหลงขอม#ล ไดหลายเรคอรดพรอมกน เนองจากคอนโทรลเหลา น&แสดงขอม#ลในร#ปแบบรายการ (list) หรอในร#ปแบบ ตาราง● การทา Data Binding กบ Complex-Bound Control น&น จะตองกาหนดออบเจกตทเปนแหลงขอม#ลใหกบ พรอพเพอรต& DataSource ของคอนโทรล DataGridView1.DataSource = ds.Table(“Emp”) ListBox1.DataSource = ds.Table(“Emp”) ListBox1.DisplayMember = “FirstName”
  19. 19. การเลอนไปยงเรคอรดตางๆ ● การเลอนเรคอรด หมายถ!ง การเปลยนแปลงเรคอรดท เปนเรคอรดป<จจ1บน โดยเรคอรดป<จจ1บน (Current Record) คอ เรคอรดทจะถ#กแสดงขอม#ลออกมาใน Simple-Bound Control ● ออบเจกต CurrencyManager (ตวจดการเรคอรด ป<จจ1บน) คอ ออบเจกตทคอยจดจาตาแหนงของ เรคอรดป<จจ1บนสาหรบแหลงขอม#ลหน!งๆ โดยแตละ แหลงขอม#ลจะมออบเจกต CurrencyManager เปน ของตวเองK.Warawut DataSet 19
  20. 20. การเลอนไปยงเรคอรดตางๆ (ตอ) ● ออบเจกต CurrencyManager ท&งหมดทสมพนธกบ แหลงขอม#ลตางๆ ภายในฟอรมจะถ#กจดการผานออบ เจกต BindingContext ในฟอรมน&น ● การเขาถ!ง CurrencyManager สาหรบแหลงขอม#ลท ตองการ ทาไดโดยเรยกใชพรอพเพอรต& BindingContext ของฟอรม พรอมท&งสงแหลง ขอม#ลน&นไปเปนอารก,วเมนต Me.BindingContext(ds.Tables(“Emp”)) คอ การเขาถ!งออบเจกต CurrencyManager ทคอย จดจาตาแหนงเรคอรดป<จจ1บนในเทเบ,ล EmpK.Warawut DataSet 20
  21. 21. การเลอนไปยงเรคอรดตางๆ (ตอ) ● เลอนเรคอรด สามารถกาหนดหมายเลขเรคอรดท ตองการใหเปนเรคอรดป<จจ1บนทพรอพเพอรต& Position ของ CurrencyManager ● กาหนดใหเรคอรดแรกเปนเรคอรดป<จจ1บน Me.BindingContext(ds.Table(“Emp”)).Position = 0 ● กาหนดใหเรคอรดทอย#ถดจากเรคอรดป<จจ1บนเปนเร คอรดป<จจ1บน Me.BindingContext(ds.Table(“Emp”)).Position += 1K.Warawut DataSet 21
  22. 22. การเลอนไปยงเรคอรดตางๆ (ตอ) ● กาหนดใหเรคอรดทอย#กอนหนาเรคอรดป<จจ1บนเปนเร คอรดป<จจ1บน Me.BindingContext(ds.Table(“Emp”)).Position -= 1 ● กาหนดใหเรคอรดลาดบท 3 เปนเรคอรดป<จจ1บน Me.BindingContext(ds.Table(“Emp”)).Position = 2 ● กาหนดใหเรคอรดส1ดทายเปนเรคอรดป<จจ1บน Me.BindingContext(ds.Table(“Emp”)).Position = _ Me.BindingContext(ds.Table(“Emp”)).Count - 1K.Warawut DataSet 22
  23. 23. เพ,มและลบเรคอรดในแหลงขอม#ลโดยใช CurrencyManager ● ออบเจกต CurrencyManager ไมไดมความสามารถ แคการจดจาและเปลยนตาแหนงเรคอรดป<จจ1บน เทาน&น ออบเจกตน&ยงใชเพ,มหรอลบเรคอรดในแหลง ขอม#ลทมนรบผ,ดชอบอย#ไดดวย โดยใชเมธอด AddNew และ RemoveAt ตามลาดบ ● เมธอด AddNew จะสรางเรคอรดวางๆ ข!&นมาใน แหลงขอม#ล พรอมท&งกาหนดใหเรคอรดใหมน&นเปน เรคอรดป<จจ1บนโดยอตโนมต,K.Warawut DataSet 23
  24. 24. เพ,มและลบเรคอรดในแหลงขอม#ลโดยใช CurrencyManager (ตอ) ● เมธอด RemoveAt ตองการอารก,วเมนต 1 ตว คอ หมายเลขของเรคอรดทจะลบเกบหมายเลขของเรคอรดป0จจบนไวในตวแปร iCurrentRecordDim iCurrentRecord As Integer = _ Me.BindingContext(ds.Tables(“Emp”)).Positionลบเรคอรดทมหมายเลขต1าแหนงเทากบคาของ iCurrentRecordMe.BindingContext(ds.Tables(“Emp”)).RemoveAt(iCurrentRecord) K.Warawut DataSet 24
  25. 25. Example: CurrencyManager ProjectK.Warawut DataSet 25
  26. 26. การกลนกรองและเรยงลาดบขอม#ลดวย DataView ● DataView ทาหนาทกลนกรองขอม#ลใน DataTable ตามทกาหนด แลวแสดงขอม#ลน&นออกไปใหแก คอนโทรลทผ#กอย#กบมน นอกจากน&ยงสามารถเพ,ม ลบ และแกไขเรคอรดใน DataTable ผาน DataView ไดอกดวย ● DataView ชวยสราง “ม1มมองขอม#ล” (Data View) ท แตกตางไปจาก DataTable เชน DataTable อาจ เกบขอม#ลพนกงานท&งหมดไวโดยเรยงลาดบตามชอ แตค1ณอาจสราง DataView ข!&นมาครอบ DataTable น&นโดยใหจดเรยงเรคอรดตามนามสก1ลK.Warawut DataSet 26
  27. 27. สราง DataView ● โดยสรางออบเจกตของคลาส DataView ใน เนมสเปซ System.Data ข!&นมา พรอมท&งระบ1 DataTable เปนอารก,วเมนตใหกบคอนสตรคเตอร ของคลาส เพอใช DataView เปลยนม1มมองขอม#ลใน DataTable น&น ตวอยาง Dim dv As New DataView(ds.Tables(“Emp”)) หรออาจสราง DataView ข!&นมากอน แลวคอยระบ1 DataTable ใหทหลงทพรอพเพอรต& Table Dim dv As New DataView( ) dv.Table = ds.Tables(“Emp”)K.Warawut DataSet 27
  28. 28. กลนกรองและเรยงลาดบขอม#ลใน DataView ● เมอสราง DataView ข!&นมาใหมๆ ขอม#ลใน DataView จะมม1มมองเหมอนกบขอม#ลใน DataTable ทมนครอบอย#ท1กประการ แตหลง จากน&นค1ณสามารถเปลยนม1มมองขอม#ลใหกบ DataView ได โดยใชพรอพเพอรต& เชน RowFilter และ Sort เปนตนK.Warawut DataSet 28
  29. 29. พรอพเพอรต& RowFilter ของ DataView ● กลนกรองใหเหลอเฉพาะเรคอรดทมคาของฟ4ลด City เทากบ “Seattle” dv.RowFilter = “City = Seattle” ● กลนกรองใหเหลอเฉพาะเรคอรดทมคาของฟ4ลด City เทากบ “Des Moines” แตคาของฟ4ลด State ตองไม เทากบ “IA” dv.RowFilter = “City = Des Moines AND (NOT State = IA)”K.Warawut DataSet 29
  30. 30. พรอพเพอรต& RowFilter ของ DataView (ตอ) ● กลนกรองใหเหลอเฉพาะเรคอรดทมคาของฟ4ลด City เทากบ “Seattle”, “Tacoma” หรอ “Blaine” dv.RowFilter = “City IN (Seattle, Tacoma, Blaine)” ● กลนกรองใหเหลอเฉพาะเรคอรดทมคาของฟ4ลด City ข!&นตนดวยคาวา “Sea” dv.RowFilter = “City LIKE Sea%”K.Warawut DataSet 30
  31. 31. พรอพเพอรต& Sort ของ DataView● ใหเรยงลาดบตามรหสพนกงาน dv.Sort = “CustomerID”● ใหเรยงลาดบตามชอพนกงาน โดยถาชอซ&ากนให เรยงลาดบตามนามสก1ล dv.Sort = “FirstName, LastName”● ใหเรยงลาดบตามชอเมองจากมากไปนอย dv.Sort = “City DESC”● ใหเรยงลาดบตามชอรฐจากมากไปนอย แตถาชอรฐ เหมอนกนใหเรยงลาดบตามชอเมองจากนอยไปมาก dv.Sort = “State DESC, City” 31
  32. 32. Example: DataViewDemo ProjectK.Warawut DataSet 32
  33. 33. ทางานกบ DataSet ทมหลายเทเบล Example: MasterDetailsDemo ProjectK.Warawut DataSet 33
  34. 34. กาหนดความสมพนธระหวางเทเบ,ลดวย DataRelation ● การกาหนดความสมพนธระหวางเทเบ, 2 เทเบ,ลใน DataSet ทาไดโดยสรางออบเจกต DataRelation ข!&นมา ซ!งแตละออบเจกตจะเปนตวแทนของความ สมพนธหน!งๆ ● การสรางออบเจกต DataRalation น&นจะตองระบ1ชอ ความสมพนธและฟ4ลด (ออบเจกต DataColumn) ใน เทเบ,ลท&งสองทใชเชอมโยงขอม#ลจาก 2 เทเบ,ลน&น เขาดวยกนK.Warawut DataSet 34
  35. 35. การสรางออบเจกต DataRelation DataRelation(relationName, parentColumn, childColumn) ● relationName ชอความสมพนธทตองการกาหนด ● parentColumn ฟ4ลด (ออบเจกต DataColumn) ใน Parent Table ทเชอมดยงไปยงฟ4ลดใน Child Table ● childColumn ฟ4ลด (ออบเจกต DataColumn) ใน Child Table ทเชอมโยงไปยงฟ4ลดใน Parent TableK.Warawut DataSet 35
  36. 36. ตวอยาง การสรางออบเจกต DataRelationใชตวแปร parentColumn อางองไปยงฟ#ลดCustomerID ในเทเบล CustDim parentColumn As DataColumn =ds.Tables(“Cust”).Columns(“CustomerID”)ใชตวแปร childColumn อางองไปยงฟ#ลดCustomerID ในเทเบล OrdDim childColumn As DataColumn = ds.Tables(“Ord”).Columns(“CustomerID”)กาหนดความสมพนธชอ CustomerOrders ข()นมาDim relation As DataRelation = New DataRelation(“CustomerOrders”, parentColumn, childColumn)K.Warawut DataSet 36
  37. 37. เพ,ม DataRelation เขาไปใน DataRelationCollection● เมอสรางออบเจกต DataRelation ข!&นมาแลว จะตอง เพ,มออบเจกตน&เขาไปในคอลเลคชน DataRelationCollection ของ DataSet ดวย เชน ds.Relations.Add(relation) คอ การเพ,มความสมพนธ (ออบเจกต DataRelation) ทสรางข!&นเมอคร#น& เขาไปในคอลเลคชน DataRelationCollection● พรอพเพอรต& Relations ของ DataSet จะใหคาเปน ออบเจกต DataRelationCollection ซ!งเปนคอลเล คชนทบรรจ1ออบเจกต DataRelation ท&งหมดท เกยวของกบ DataSet 37
  38. 38. การเขาถ!งเรคอรดในอกเทเบ,ลหน!งท สมพนธกน ● เมอเพ,มเขาไปใน DataRelationCollection (พรอพเพอรต& Relations ของ DataSet) เรยบรอย แลว เมอทางานอย#กบเรคอรดใน Parent Table จะ สามารถเขาถ!งเรคอรดใน Child Table ทสมพนธกบ เรคอรดน&นๆ ได โดยเรยกใชเมธอด GetChildRows ของเรคอรด (ออบเจกต DataRow) น&นพรอมท&งระบ1 ชอความสมพนธเปนอารก,วเมนตK.Warawut DataSet 38
  39. 39. การเขาถ!งเรคอรดในอกเทเบ,ลหน!งท สมพนธกน (ตอ) ● เนองจากเรคอรดใน Child Table ทสมพนธกบเร คอรดหน!งๆ ใน Parent Table อาจมไดหลาย เรคคอรด ดงน&นเมธอด GetChildRows จ!งให ผลลพธเปนอารเรยของออบเจกต DataRow Dim childRows( ) As DataRow childRows = ds.Table(“Cust”).Rows(0).GetChildRows(“CustomerOrders”) For Each row As DataRow In childRows ในแตละรอบ ต-วแปร row จะอางองไปย-งแตละเรคอร#ดในเทเบล Orders ทส-มพ-นธ#ก-บเรคอร#ดแรก ในเทเบล Customers NextK.Warawut DataSet 39
  40. 40. การเขาถ!งเรคอรดในอกเทเบ,ลหน!งท สมพนธกน (ตอ) ● ในทางกลบกนเราสามารถเขาถ!งเรคอรดใน Parent Table ทสมพนธกบเรคอรดหน!งๆ ใน Child Table ได เชนเดยวกน และโดยทวไปเรคอรดดงกลาวใน Parent Table จะมเพยงเรคอรดเดยว ● เมธอดทใชเพอการน&คอ GetParentRow (ไมม s) ซ!ง ใหผลลพธเปนออบเจกต DataRowDim row As DataRow = ds.Table(“Ord”).Rows(0).GetParentRow(“CustomerOrders”)TextBox1.Text = row(“CompanyName”) K.Warawut DataSet 40
  41. 41. Example: DataRelation ProjectK.Warawut DataSet 41
  42. 42. Contact us Mr.Warawut Khangkhan● Social Media: http://www.facebook.com/awarawut (Profile) http://www.facebook.com/AjWarawut (Learning) http://twitter.com/awarawut● Web Site: http://awarawut.blogspot.com● E-Mail: awarawut@hotmail.com warawut_kha@dusit.ac.th● Mobile: 083-0698-410
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×