ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 7789|ตอบกลับ: 1

[VB.NET] แจกโค้ดรวมชุดคำสั่งในการทำ Binding Source หรือ Bound Data ให้กับตารางกริด

[คัดลอกลิงก์]

308

กระทู้

498

โพสต์

5973

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
5973



สำหรับโค้ดชุดนี้จะเป็นการทำ Bound Data ในแบบการเขียนด้วยโค้ดทั้งหมด โดยจะกำหนดชุดข้อมูลให้กับตารางกริด เช่น DataGridView1.DataSource = "ชุดข้อมูล" ...
แอดมินได้อธิบายไปหลายครั้งแล้วล่ะ สำหรับคำว่า Bound Data และ Unbound Data Control ก็ลองไปอ่านเพิ่มเติมตามลิ้งค์ด้านล่างนี้ก็แล้วกันครับ ...

[VB6] แจกโค้ดการใช้งานตารางกริด SharpGrid UnBound Data Control ในแบบ Run Time

[VB.NET] การ UnBound Data บน DataGridView เพื่อจัดรูปแบบการแสดงผลฟิลด์ข้อมูล

มาดูโค้ดฉบับเต็มกันเถอะ ...
  1. Imports System.Data.OleDb
  2. Imports Microsoft.VisualBasic

  3. Public Class frmADONet
  4.     '// ตัวแปรที่ใช้ในการติดต่อกับฐานข้อมูล จะแยกไปอยู่ที่โมดูล modDataBase.vb ทั้งหมด (พยายามแยกเขียนให้เป็นระบบด้วยครับ)
  5.     '// Sample Query. (Local Variable)
  6.     Dim sql = "SELECT PostCodePK, Tumbon, Amphur, Province, PostCode FROM Postcode "

  7.     Private Sub frmADONet_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  8.         Conn = ConnectDataBase()
  9.     End Sub

  10.     '// DataReader to DataTable.
  11.     '// DataReader ใช้ในการอ่านข้อมูลจากฐานข้อมูล และเป็นการอ่านแบบเดินหน้าอย่างเดียว (Forward Only) จะดึงข้อมูลได้รวดเร็วมาก โดยใช้ ExecuteReader ในการผูกข้อมูล
  12.     Private Sub btnDataReader_Click(sender As System.Object, e As System.EventArgs) Handles btnDataReader.Click
  13.         Try
  14.             If Conn.State = ConnectionState.Closed Then Conn.Open()
  15.             Cmd = New OleDbCommand(sql, Conn)
  16.             DR = Cmd.ExecuteReader()
  17.             DT = New DataTable
  18.             DT.Load(DR)
  19.             dgvData.DataSource = DT
  20.             GroupBox1.Text = " Bound Data : " & Format(dgvData.Rows.Count, "#,##") & " Records. "
  21.             DT.Dispose()
  22.             DR.Close()
  23.             Cmd.Dispose()
  24.             '//
  25.             Call SetupGridView()
  26.         Catch ex As Exception
  27.             MessageBox.Show(ex.Message)
  28.         End Try
  29.     End Sub

  30.     '// DataAdapter to DataSet.
  31.     '// DataSet ไม่จำเป็นต้องใช้การเชื่อมต่อในระหว่างการทำงานกับชุดข้อมูล และถูกใช้เพื่อเก็บข้อมูลหลายๆตาราง
  32.     Private Sub btnDataSet_Click(sender As System.Object, e As System.EventArgs) Handles btnDataSet.Click
  33.         Try
  34.             If Conn.State = ConnectionState.Closed Then Conn.Open()
  35.             DA = New OleDb.OleDbDataAdapter(sql & "ORDER BY Province ", Conn)
  36.             '/ Fill the DataSet.
  37.             DS = New DataSet
  38.             DA.Fill(DS, "PostCode")
  39.             DA.Fill(DS)
  40.             DS.Dispose()
  41.             DA.Dispose()
  42.             dgvData.DataSource = DS.Tables("PostCode").DefaultView
  43.             GroupBox1.Text = " Bound Data : " & Format(dgvData.Rows.Count, "#,##") & " Records. "
  44.             '//
  45.             Call SetupGridView()
  46.         Catch ex As Exception
  47.             MessageBox.Show(ex.Message)
  48.         End Try
  49.     End Sub

  50.     '// DataAdapter with Multiple Tables.
  51.     '// DataAdapter จะทำหน้าที่เป็นบริดจ์ระหว่างชุดข้อมูลและฐานข้อมูล โดยจะผูกข้อมูลเก็บผลลัพธ์ไว้ไน DataSet หรือ DataTable
  52.     '// DataAdapter จะตัดการเชื่อมต่อกับกับฐานข้อมูล (Disconnected) เมื่อทำงานเสร็จสิ้น
  53.     Private Sub btnDataAdapter_Click(sender As System.Object, e As System.EventArgs) Handles btnDataAdapter.Click
  54.         Try
  55.             If Conn.State = ConnectionState.Closed Then Conn.Open()
  56.             DS = New DataSet()
  57.             DA = New OleDbDataAdapter(sql & "ORDER BY PostCode ", Conn)
  58.             '// First Table.
  59.             DA.Fill(DS, "PostCode")
  60.             '// Second Table.
  61.             DA.SelectCommand.CommandText = "SELECT CustomerPK, CustomerID, CustomerName FROM tblCustomer "
  62.             DA.Fill(DS, "Customer")
  63.             DA.Dispose()
  64.             'dgvData.DataSource = DS.Tables(0)   '/ PostCode Table.
  65.             dgvData.DataSource = DS.Tables("Customer")  '/ Customer Table.
  66.             GroupBox1.Text = " Bound Data : " & Format(dgvData.Rows.Count, "#,##") & " Records. "
  67.             DS.Dispose()
  68.             '//
  69.             Call SetupGridView()
  70.         Catch ex As Exception
  71.             MessageBox.Show(ex.Message)
  72.         End Try
  73.     End Sub

  74.     '// DataAdapter with DataTable.
  75.     '// DataTable จะแสดงถึงตารางเดียวในฐานข้อมูล ซึ่งก็จะมันมีแถว (Records) และหลัก (Fields) เป็นเพียงการรวบรวมชุดข้อมูลเหมือนตารางข้อมูลเท่านั้น.
  76.     Private Sub btnDataTable_Click(sender As System.Object, e As System.EventArgs) Handles btnDataTable.Click
  77.         Try
  78.             If Conn.State = ConnectionState.Closed Then Conn.Open()
  79.             Cmd = New OleDbCommand(sql & "ORDER BY Province, PostCode", Conn)
  80.             DA = New OleDbDataAdapter(Cmd)
  81.             DT = New DataTable()
  82.             DA.Fill(DT)
  83.             dgvData.DataSource = DT
  84.             GroupBox1.Text = " Bound Data : " & Format(dgvData.Rows.Count, "#,##") & " Records. "
  85.             DT.Dispose()
  86.             DA.Dispose()
  87.             '//
  88.             Call SetupGridView()
  89.         Catch ex As Exception
  90.             MessageBox.Show(ex.Message)
  91.         End Try
  92.     End Sub

  93.     '// DataReader To DataSet
  94.     Private Sub btnReaderToDataSet_Click(sender As System.Object, e As System.EventArgs) Handles btnReaderToDataSet.Click
  95.         Try
  96.             If Conn.State = ConnectionState.Closed Then Conn.Open()
  97.             Cmd = New OleDbCommand(sql)
  98.             Cmd.Connection = Conn
  99.             Using DR As OleDbDataReader = Cmd.ExecuteReader()
  100.                 '/ Create a new DataSet.
  101.                 DS = New DataSet()
  102.                 DS.Tables.Add("PostCode")
  103.                 '/ Load DataReader into the DataTable.
  104.                 DS.Tables(0).Load(DR)
  105.                 dgvData.DataSource = DS.Tables(0)
  106.                 GroupBox1.Text = " Bound Data : " & Format(dgvData.Rows.Count, "#,##") & " Records. "
  107.                 DS.Dispose()
  108.                 DR.Dispose()
  109.             End Using
  110.             '//
  111.             Call SetupGridView()
  112.         Catch ex As Exception
  113.             MessageBox.Show(ex.Message)
  114.         End Try
  115.     End Sub

  116.     Private Sub btnClose_Click(sender As System.Object, e As System.EventArgs) Handles btnClose.Click
  117.         Me.Close()
  118.     End Sub

  119.     Private Sub frmADONet_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
  120.         Me.Dispose()
  121.         GC.SuppressFinalize(Me)
  122.         Application.Exit()
  123.     End Sub

  124.     Private Sub SetupGridView()
  125.         With dgvData
  126.             .RowHeadersVisible = True
  127.             .AllowUserToAddRows = False
  128.             .AllowUserToDeleteRows = False
  129.             .AllowUserToResizeRows = False
  130.             .MultiSelect = False
  131.             .SelectionMode = DataGridViewSelectionMode.FullRowSelect
  132.             .ReadOnly = True
  133.             '// Data rows
  134.             .Font = New Font("Tahoma", 10)
  135.             .RowTemplate.MinimumHeight = 27
  136.             .RowTemplate.Height = 27
  137.             '// Column Header
  138.             .ColumnHeadersHeight = 30
  139.             .ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing
  140.             '// Autosize Column
  141.             .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
  142.             '// Even-Odd Color
  143.             .AlternatingRowsDefaultCellStyle.BackColor = Color.AliceBlue ' Color.LightGreen
  144.             '// Header
  145.             With .ColumnHeadersDefaultCellStyle
  146.                 .BackColor = Color.Navy
  147.                 .ForeColor = Color.White
  148.                 .Font = New Font(dgvData.Font, FontStyle.Bold)
  149.             End With
  150.         End With
  151.     End Sub

  152. End Class
คัดลอกไปที่คลิปบอร์ด

โมดูลหากิน ...
  1. Imports System.Data.OleDb
  2. Imports Microsoft.VisualBasic

  3. Module modDataBase
  4.     '// Declare variable one time but use many times.
  5.     Public Conn As OleDbConnection
  6.     Public Cmd As OleDbCommand
  7.     Public DS As DataSet
  8.     Public DR As OleDbDataReader
  9.     Public DA As OleDbDataAdapter
  10.     Public DT As DataTable
  11.     'Public strSQL As String '// Major SQL
  12.     'Public strStmt As String    '// Minor SQL

  13.     '// Data Path
  14.     Public strPathData As String = MyPath(Application.StartupPath)

  15.     Public Function ConnectDataBase() As System.Data.OleDb.OleDbConnection
  16.         Try
  17.             Dim strConn As String = _
  18.                     "Provider = Microsoft.ACE.OLEDB.12.0;"
  19.             strConn += _
  20.                 "Data Source = " & strPathData & "PostCodeThailand.accdb"

  21.             Conn = New OleDb.OleDbConnection(strConn)
  22.             '/ Create Connection
  23.             Conn.ConnectionString = strConn
  24.             '/ Return
  25.             Return Conn
  26.         Catch ex As Exception
  27.             MessageBox.Show("Error: " & ex.Message, "Report Status", MessageBoxButtons.OK, MessageBoxIcon.Warning)
  28.             End
  29.         End Try
  30.     End Function

  31.     ' / --------------------------------------------------------------------------------
  32.     ' / Get my project path
  33.     ' / AppPath = C:\My Project\bin\debug
  34.     ' / Replace "\bin\debug" with ""
  35.     ' / Return : C:\My Project\
  36.     Function MyPath(AppPath As String) As String
  37.         '/ MessageBox.Show(AppPath);
  38.         AppPath = AppPath.ToLower()
  39.         '/ Return Value
  40.         MyPath = AppPath.Replace("\bin\debug", "").Replace("\bin\release", "").Replace("\bin\x86\debug", "")
  41.         '// If not found folder then put the \ (ASCII Code BackSlash = 92) at the end.
  42.         If Right(MyPath, 1) <> Chr(92) Then MyPath = MyPath & Chr(92)
  43.     End Function
  44. End Module
คัดลอกไปที่คลิปบอร์ด

ดาวน์โหลดโค้ดฉบับเต็ม VB.NET (2010) ได้ที่นี่ ...

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

0

กระทู้

33

โพสต์

372

เครดิต

Full Member

Rank: 3Rank: 3

เครดิต
372
โพสต์ 2021-1-13 14:08:13 | ดูโพสต์ทั้งหมด

ขอบคุณคับ
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-3-29 12:58 , Processed in 0.242237 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้