| 
 | 
 
  
 
สำหรับโค้ดชุดนี้จะเป็นการทำ Bound Data ในแบบการเขียนด้วยโค้ดทั้งหมด โดยจะกำหนดชุดข้อมูลให้กับตารางกริด เช่น DataGridView1.DataSource = "ชุดข้อมูล" ...  
แอดมินได้อธิบายไปหลายครั้งแล้วล่ะ สำหรับคำว่า Bound Data และ Unbound Data Control ก็ลองไปอ่านเพิ่มเติมตามลิ้งค์ด้านล่างนี้ก็แล้วกันครับ ...  
 
[VB6] แจกโค้ดการใช้งานตารางกริด SharpGrid UnBound Data Control ในแบบ Run Time  
 
[VB.NET] การ UnBound Data บน DataGridView เพื่อจัดรูปแบบการแสดงผลฟิลด์ข้อมูล  
 
มาดูโค้ดฉบับเต็มกันเถอะ ...  
- Imports System.Data.OleDb
 
 - Imports Microsoft.VisualBasic
 
  
- Public Class frmADONet
 
 -     '// ตัวแปรที่ใช้ในการติดต่อกับฐานข้อมูล จะแยกไปอยู่ที่โมดูล modDataBase.vb ทั้งหมด (พยายามแยกเขียนให้เป็นระบบด้วยครับ)
 
 -     '// Sample Query. (Local Variable)
 
 -     Dim sql = "SELECT PostCodePK, Tumbon, Amphur, Province, PostCode FROM Postcode "
 
  
-     Private Sub frmADONet_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
 
 -         Conn = ConnectDataBase()
 
 -     End Sub
 
  
-     '// DataReader to DataTable.
 
 -     '// DataReader ใช้ในการอ่านข้อมูลจากฐานข้อมูล และเป็นการอ่านแบบเดินหน้าอย่างเดียว (Forward Only) จะดึงข้อมูลได้รวดเร็วมาก โดยใช้ ExecuteReader ในการผูกข้อมูล
 
 -     Private Sub btnDataReader_Click(sender As System.Object, e As System.EventArgs) Handles btnDataReader.Click
 
 -         Try
 
 -             If Conn.State = ConnectionState.Closed Then Conn.Open()
 
 -             Cmd = New OleDbCommand(sql, Conn)
 
 -             DR = Cmd.ExecuteReader()
 
 -             DT = New DataTable
 
 -             DT.Load(DR)
 
 -             dgvData.DataSource = DT
 
 -             GroupBox1.Text = " Bound Data : " & Format(dgvData.Rows.Count, "#,##") & " Records. "
 
 -             DT.Dispose()
 
 -             DR.Close()
 
 -             Cmd.Dispose()
 
 -             '//
 
 -             Call SetupGridView()
 
 -         Catch ex As Exception
 
 -             MessageBox.Show(ex.Message)
 
 -         End Try
 
 -     End Sub
 
  
-     '// DataAdapter to DataSet.
 
 -     '// DataSet ไม่จำเป็นต้องใช้การเชื่อมต่อในระหว่างการทำงานกับชุดข้อมูล และถูกใช้เพื่อเก็บข้อมูลหลายๆตาราง
 
 -     Private Sub btnDataSet_Click(sender As System.Object, e As System.EventArgs) Handles btnDataSet.Click
 
 -         Try
 
 -             If Conn.State = ConnectionState.Closed Then Conn.Open()
 
 -             DA = New OleDb.OleDbDataAdapter(sql & "ORDER BY Province ", Conn)
 
 -             '/ Fill the DataSet.
 
 -             DS = New DataSet
 
 -             DA.Fill(DS, "PostCode")
 
 -             DA.Fill(DS)
 
 -             DS.Dispose()
 
 -             DA.Dispose()
 
 -             dgvData.DataSource = DS.Tables("PostCode").DefaultView
 
 -             GroupBox1.Text = " Bound Data : " & Format(dgvData.Rows.Count, "#,##") & " Records. "
 
 -             '//
 
 -             Call SetupGridView()
 
 -         Catch ex As Exception
 
 -             MessageBox.Show(ex.Message)
 
 -         End Try
 
 -     End Sub
 
  
-     '// DataAdapter with Multiple Tables.
 
 -     '// DataAdapter จะทำหน้าที่เป็นบริดจ์ระหว่างชุดข้อมูลและฐานข้อมูล โดยจะผูกข้อมูลเก็บผลลัพธ์ไว้ไน DataSet หรือ DataTable
 
 -     '// DataAdapter จะตัดการเชื่อมต่อกับกับฐานข้อมูล (Disconnected) เมื่อทำงานเสร็จสิ้น
 
 -     Private Sub btnDataAdapter_Click(sender As System.Object, e As System.EventArgs) Handles btnDataAdapter.Click
 
 -         Try
 
 -             If Conn.State = ConnectionState.Closed Then Conn.Open()
 
 -             DS = New DataSet()
 
 -             DA = New OleDbDataAdapter(sql & "ORDER BY PostCode ", Conn)
 
 -             '// First Table.
 
 -             DA.Fill(DS, "PostCode")
 
 -             '// Second Table.
 
 -             DA.SelectCommand.CommandText = "SELECT CustomerPK, CustomerID, CustomerName FROM tblCustomer "
 
 -             DA.Fill(DS, "Customer")
 
 -             DA.Dispose()
 
 -             'dgvData.DataSource = DS.Tables(0)   '/ PostCode Table.
 
 -             dgvData.DataSource = DS.Tables("Customer")  '/ Customer Table.
 
 -             GroupBox1.Text = " Bound Data : " & Format(dgvData.Rows.Count, "#,##") & " Records. "
 
 -             DS.Dispose()
 
 -             '//
 
 -             Call SetupGridView()
 
 -         Catch ex As Exception
 
 -             MessageBox.Show(ex.Message)
 
 -         End Try
 
 -     End Sub
 
  
-     '// DataAdapter with DataTable.
 
 -     '// DataTable จะแสดงถึงตารางเดียวในฐานข้อมูล ซึ่งก็จะมันมีแถว (Records) และหลัก (Fields) เป็นเพียงการรวบรวมชุดข้อมูลเหมือนตารางข้อมูลเท่านั้น.
 
 -     Private Sub btnDataTable_Click(sender As System.Object, e As System.EventArgs) Handles btnDataTable.Click
 
 -         Try
 
 -             If Conn.State = ConnectionState.Closed Then Conn.Open()
 
 -             Cmd = New OleDbCommand(sql & "ORDER BY Province, PostCode", Conn)
 
 -             DA = New OleDbDataAdapter(Cmd)
 
 -             DT = New DataTable()
 
 -             DA.Fill(DT)
 
 -             dgvData.DataSource = DT
 
 -             GroupBox1.Text = " Bound Data : " & Format(dgvData.Rows.Count, "#,##") & " Records. "
 
 -             DT.Dispose()
 
 -             DA.Dispose()
 
 -             '//
 
 -             Call SetupGridView()
 
 -         Catch ex As Exception
 
 -             MessageBox.Show(ex.Message)
 
 -         End Try
 
 -     End Sub
 
  
-     '// DataReader To DataSet
 
 -     Private Sub btnReaderToDataSet_Click(sender As System.Object, e As System.EventArgs) Handles btnReaderToDataSet.Click
 
 -         Try
 
 -             If Conn.State = ConnectionState.Closed Then Conn.Open()
 
 -             Cmd = New OleDbCommand(sql)
 
 -             Cmd.Connection = Conn
 
 -             Using DR As OleDbDataReader = Cmd.ExecuteReader()
 
 -                 '/ Create a new DataSet.
 
 -                 DS = New DataSet()
 
 -                 DS.Tables.Add("PostCode")
 
 -                 '/ Load DataReader into the DataTable.
 
 -                 DS.Tables(0).Load(DR)
 
 -                 dgvData.DataSource = DS.Tables(0)
 
 -                 GroupBox1.Text = " Bound Data : " & Format(dgvData.Rows.Count, "#,##") & " Records. "
 
 -                 DS.Dispose()
 
 -                 DR.Dispose()
 
 -             End Using
 
 -             '//
 
 -             Call SetupGridView()
 
 -         Catch ex As Exception
 
 -             MessageBox.Show(ex.Message)
 
 -         End Try
 
 -     End Sub
 
  
-     Private Sub btnClose_Click(sender As System.Object, e As System.EventArgs) Handles btnClose.Click
 
 -         Me.Close()
 
 -     End Sub
 
  
-     Private Sub frmADONet_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
 
 -         Me.Dispose()
 
 -         GC.SuppressFinalize(Me)
 
 -         Application.Exit()
 
 -     End Sub
 
  
-     Private Sub SetupGridView()
 
 -         With dgvData
 
 -             .RowHeadersVisible = True
 
 -             .AllowUserToAddRows = False
 
 -             .AllowUserToDeleteRows = False
 
 -             .AllowUserToResizeRows = False
 
 -             .MultiSelect = False
 
 -             .SelectionMode = DataGridViewSelectionMode.FullRowSelect
 
 -             .ReadOnly = True
 
 -             '// Data rows
 
 -             .Font = New Font("Tahoma", 10)
 
 -             .RowTemplate.MinimumHeight = 27
 
 -             .RowTemplate.Height = 27
 
 -             '// Column Header
 
 -             .ColumnHeadersHeight = 30
 
 -             .ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing
 
 -             '// Autosize Column
 
 -             .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
 
 -             '// Even-Odd Color
 
 -             .AlternatingRowsDefaultCellStyle.BackColor = Color.AliceBlue ' Color.LightGreen
 
 -             '// Header
 
 -             With .ColumnHeadersDefaultCellStyle
 
 -                 .BackColor = Color.Navy
 
 -                 .ForeColor = Color.White
 
 -                 .Font = New Font(dgvData.Font, FontStyle.Bold)
 
 -             End With
 
 -         End With
 
 -     End Sub
 
  
- End Class
 
  คัดลอกไปที่คลิปบอร์ด 
โมดูลหากิน ...  
- Imports System.Data.OleDb
 
 - Imports Microsoft.VisualBasic
 
  
- Module modDataBase
 
 -     '// Declare variable one time but use many times.
 
 -     Public Conn As OleDbConnection
 
 -     Public Cmd As OleDbCommand
 
 -     Public DS As DataSet
 
 -     Public DR As OleDbDataReader
 
 -     Public DA As OleDbDataAdapter
 
 -     Public DT As DataTable
 
 -     'Public strSQL As String '// Major SQL
 
 -     'Public strStmt As String    '// Minor SQL
 
  
-     '// Data Path 
 
 -     Public strPathData As String = MyPath(Application.StartupPath)
 
  
-     Public Function ConnectDataBase() As System.Data.OleDb.OleDbConnection
 
 -         Try
 
 -             Dim strConn As String = _
 
 -                     "Provider = Microsoft.ACE.OLEDB.12.0;"
 
 -             strConn += _
 
 -                 "Data Source = " & strPathData & "PostCodeThailand.accdb"
 
  
-             Conn = New OleDb.OleDbConnection(strConn)
 
 -             '/ Create Connection
 
 -             Conn.ConnectionString = strConn
 
 -             '/ Return
 
 -             Return Conn
 
 -         Catch ex As Exception
 
 -             MessageBox.Show("Error: " & ex.Message, "Report Status", MessageBoxButtons.OK, MessageBoxIcon.Warning)
 
 -             End
 
 -         End Try
 
 -     End Function
 
  
-     ' / --------------------------------------------------------------------------------
 
 -     ' / Get my project path
 
 -     ' / AppPath = C:\My Project\bin\debug
 
 -     ' / Replace "\bin\debug" with ""
 
 -     ' / Return : C:\My Project\
 
 -     Function MyPath(AppPath As String) As String
 
 -         '/ MessageBox.Show(AppPath);
 
 -         AppPath = AppPath.ToLower()
 
 -         '/ Return Value
 
 -         MyPath = AppPath.Replace("\bin\debug", "").Replace("\bin\release", "").Replace("\bin\x86\debug", "")
 
 -         '// If not found folder then put the \ (ASCII Code BackSlash = 92) at the end.
 
 -         If Right(MyPath, 1) <> Chr(92) Then MyPath = MyPath & Chr(92)
 
 -     End Function
 
 - End Module
 
  คัดลอกไปที่คลิปบอร์ด 
ดาวน์โหลดโค้ดฉบับเต็ม VB.NET (2010) ได้ที่นี่ ...  
 |   
ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง
คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน  
 
x
 
 
 
 
 |