|
สำหรับโค้ดชุดนี้จะเป็นการทำ 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
|